Capability model of software developers

Source: Internet
Author: User
I have been developing software for six years. Looking back at my experiences can be said to be a sense of accomplishment. After six years of continuous learning, I have grown from a cainiao to a software architect, this process can be said to be fun. By studying various theories, technologies, and methods, and applying them in practice, observing their effects, thinking about the relationship between them, and then integrating different things together, form a complete capability system to challenge more arduous software development tasks.
I am now a framework engineer, so I like to start from the overall architecture. Therefore, I think there is also an architecture for human abilities, and each of them has a different architecture, some people have a reasonable capability architecture, while others are not so rational. A reasonable capability architecture can play a major role in less capacity elements (knowledge, skills, and methods, unreasonable capability architecture wastes people's abilities and makes them useless.
What kind of capability structure is reasonable? This is not a simple problem. Here I summarize a reference model based on my own experience. This reference model adopts our common layered architecture model. I think the capabilities of a software developer can be divided into four levels:
Highest level: Process Control and Management
Layer 3: Methods, ideas, and Theories
Layer 2: specific technologies, languages, and tools
Bottom layer: Basic Principles and knowledge

The layer has a certain relationship between layers. The previous layer must be based on the following layer, and the previous layer affects the next layer in turn. The bottom layer is basic principles and technologies, including computer principles, circuits, data structures, database principles, compilation principles, and operating systems. This knowledge is very basic. with a certain degree of foundation, we can better learn other abilities.

The second layer is specific technologies, languages, and tools, including various programming languages, development environments, databases, and development frameworks. Obviously, in general, to learn the second-level content, you must have the ability at the bottom layer. Of course, some people cannot learn the second-level content without any foundation, but in general, the learning effect is very poor, so I don't know why, and I will be overwhelmed when I encounter some problems. On the other hand, the second layer of learning will in turn affect the bottom layer of ability. It can consolidate the learning of basic knowledge and expose your shortcomings in basic aspects, it also drives your learning of basic knowledge. When I was a programmer, I learned mainly at these two levels.

The third layer is methods, ideas, and theories, including object-oriented ideas, design principles, design patterns, demand engineering, and UML. Similarly, the capabilities of the third layer should also be based on the second layer, for example, to learn the object-oriented design method, you must first learn an object-oriented language and use the CASE tool. At the same time, the third-layer capabilities will in turn affect the second layer, A good method can give full play to your technology and make up for the technical deficiencies. For example, it is easy to write a program if the design is good, assertion and unit testing methods can bring the quality of code to an unprecedented level.

The highest level is process control and management. The capabilities at this level usually involve time span and team collaboration, including project management capabilities, software Process control capability, version control capability, and requirement management capability. Similarly, the capabilities at this level should be based on the capabilities of the third layer. For example, if the software does not have a good architecture, No matter what process is used, it will eventually be a mess, and good design capabilities, coupled with the iterative development process and strict version control, we can certainly develop excellent software.

Through this model, we can easily see that the capabilities of an excellent software developer at all levels should be balanced, and these capabilities should not be independent, they should be combined to exert the power of integrity.

Through this model, we can also guide our learning process. Generally, we should first master the next layer of capabilities and then the last layer of capabilities, but not just the next layer. I have met many college students who have studied project management since their first job. Some of them have been working on projects for N years, so they can bring back class libraries, I still don't know what UML is, what is cohesion, coupling and granularity. I think this is not a good phenomenon. I think that the way of learning abilities should also be iterative. We need to lay the foundation first, but we do not need to lay a perfect foundation, I think it is enough to make a three-step success. Then you can try to learn the capabilities of the last layer. Maybe you will master the capabilities of the upper layer, and then you will find that there is still a problem with the foundation, and then fill in the foundation with your questions. After so many times, you can try to learn from the upper layer again when your capabilities reach a triple threshold. In this case, we regard the previous layer as the base layer and the next layer as the upper layer. This is repeated until you get better, haha.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.