Software developer Capability Model

Source: Internet
Author: User
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 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 variousProgramming Language, Development environment, database, development framework, etc. 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 amProgramThe learning content is mainly concentrated 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, whether a good design is easy to write a program or not, assertion and unit testing can make these methods easier.CodeThe quality has reached an unprecedented height.

 

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.

 

The capabilities of an excellent software developer at all levels should be balanced, and these capabilities should not be independent. They should be able to combine to exert the overall power.

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 don't think this is a good phenomenon. I think the learning capability should also adopt iteration : we need to lay the foundation first, but we do not need to lay a perfect foundation, in my opinion, it is enough to make a three-pronged success . Then, you can try to learn the capabilities of the previous layer. You may be able to master the capabilities of the upper layer. In this case, 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.

Related Article

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.