Note: Each level of knowledge is incremental, at the level of N, also implies that you need to understand all the knowledge below the level of N .
Computer Science Computer
Software Engineering Software Engineering
Programming programming
Experience Experience
Learning knowledge
The undisputed fact of the software community is that the efficiency of different programmers varies and varies greatly. Many experts distinguish between good programmers and the general programmer very clearly.
Most studies have concluded that there is a 10:1 relationship between the average programmer and a good programmer in both productivity and quality: a good programmer and a poor programmer have a 1:20;debugging time ratio of 1:25; The number of codes is 5:1. ; Program execution speed ratio is 10:1. And found that the programmer's Code quality and efficiency is not related to work experience.
Let's take a look at some of the software giants ' views of good programmers and general programmers:
Randall E. Stross: Good programmers are better than poor programmers, whether it's software standards, creativity, speed of development, or the ability to design ideas or solve problems.
Bill Gates: A good machine tool is worth several times as much as a general machine tool, and a good programmer is worth 10,000 times times as much as a typical programmer.
Robert C. martin:90% 's code is written by 10% of programmers.
As far as I am personally engaged in the programming industry for 25 years, six software companies experience, 10:1 this law is true. Based on this law and the difference in programmer productivity, programmers are divided into five main categories:
1. Master Programmer (Visionary/artist Programmer)
Master programmers are the absolute rarity of the software world, and they can create things that 99.9% of programmers can't create. They invent new applications and software models to drive the development of the software industry. Napster, Netscape, and the World Wide Web are all created by master programmers. For them, the software is more art than science. At this level, speed and quality are not the most important, and the wealth they create is the most important. Many development teams or companies have a master programmer, usually the technology founder or CTO of the company.
2. Pioneer Programmer (Trailblazer Programmer)
Trailblazer programmers often bring good ideas and trends. They are usually the prototype creators of the final product, and most programmers take weeks or even months to make the most of their day. Pioneer programmers are always experimenting with new tools, techniques, learning and searching for ways to improve productivity, often as mentors and teachers of other programmers, and you often find that while other programmers are already away, they still work late into the night. While this level of programmer pay is high, every successful company or team should be equipped with one or two trailblazer programmers.
3. Backbone programmer (Workhorse Programmer)
A backbone programmer is the spine of a company or development team who, although not very innovative, is often more efficient and trustworthy. Give a skeleton programmer a set of templates and the right tools, they can always in the shortest possible time to hand over the least error code.
4. Mechanical programmer (Drone Programmer)
Many programmers are mechanical programmers who are trying to fill their wallets in nine to five. They don't want to be exposed to new technologies and to avoid learning things. Many companies or development teams have many of these mechanical programmers because they are cheap, but don't know that more expensive programmers are really cheaper.
5. Idiot programmer (Idiot Programmer)
The woods are big what birds have, the software field is no exception. Programming requires abstraction and logical thinking, yet some of those who do not yet have the ability to join the field because they are looking for a decent salary. Idiot programmers are always confused about the simplest algorithms, and they are always missing out on software deadlines. The best way for an idiot programmer is to break the line.
Programmer Capability Matrix Programmer Competency Matrix