10 floors for programmers
Since the western Renaissance, China lags behind the West in natural science, and the software field is no exception. Of course, many programmers in China may have many different opinions on this. Some people think that the level of programmers in China is far behind that in the West, some believe that China's programmers are not inferior to western programmers, but the entire software industry lags behind.
So, is the level of programmers in China worse than that in Western countries, or is there many excellent programmers in China that have reached or surpassed the level of Western programmers? To solve this problem, we must first know how many technical levels the programmer has and what technical levels each level needs, and then compare the number of people in China and the west at each technical level, you can see whether there is a gap or what the gap is.
Of course, there will be different criteria for dividing the technical hierarchy of programmers for different companies or people. The following criteria only represent personal opinions. If anything is inappropriate, correct the problem.
Layer-3 cainiao
The fifth floor belongs to the floor, and the entrance to this floor is very low. Basic understanding of basic computer operations, basic knowledge of computer science, master a basic programming language such as C/C ++, Java, JavaScript ,..., you can get started with this layer.
On this layer, China has an absolute advantage. In addition to a large number of people who have graduated from the computer science field, there are also a large number of people in the field of communication, automation, mathematics, and other related majors, in addition, there are a large number of other professionals who are definitely more people than in the West. Another advantage is that our team's average IQ is definitely higher than that in the West.
Not many people are willing to work as cainiao for the rest of their lives, because the taste of being a "cainiao" is really bad. The old guys are waiting all day to install machines and build a test environment, you can also perform some black box tests based on the test cases written by others. A better one can be arranged to write a little test code. Of course, if you are lucky, you may have the opportunity to write some formal code when you encounter some industry-style companies in China.
So cainiao are always studying hard and want to climb a higher floor.
Layer-3 prawns
It is easier to climb from Layer 1 to layer 1st. For example, if you are a C/C ++ programmer, master the C standard library and common data structure algorithms, master the basic implementation and usage of STL, master the basic knowledge of multithreading programming, master a development environment, I would like to use all the APIs of various operating systems. Of course, I should have a good grasp of socket programming, and then I will learn some object-oriented design knowledge and design patterns, I learned some basic knowledge about testing, software engineering, and quality control. Most people go through 2 ~ After three years of hard work, you can climb to the fifth layer and be promoted to "prawns ".
The number of "prawns" and "cainiao" in China is estimated to be less, so this layer is still far ahead of the West.
Prawns are usually somewhat self-aware. They know that they can only implement some simple functions and cannot do big things. Sometimes they may encounter some problems, so they generally worship the big bull-class figures, such as Robert C. martin and Linus Torvalds in China, such as Qiu bojun and Wang Zhidong, are the objects they worship. Some of them hope that one day they will be able to reach the level of these big bulls, so they continue to climb upstairs.
Layer-3 cool man
As the "prawns" are often stuck by some difficult problems, the "prawns" have to continue learning. They need to master the previous knowledge, for example, if you are familiar with the c ++ programming language, apart from learning some basic C ++ books, such as C ++ primer and Objective C ++, think in C ++, exception C ++, etc. More importantly, you need to understand the principles and implementation mechanisms of the C ++ compiler, understand the internal mechanisms in the operating system, such as memory management, process and thread management, and the basic knowledge of the processor and the code optimization methods, in addition, it is necessary to learn more data structures and algorithms, master more in-depth testing and debugging knowledge, and manage and control quality methods, and have a better understanding of various design methods.
Learning the Knowledge mentioned above is not an easy task. It is impossible to read a book of thirty or fifty books and master it. In terms of Data Structure algorithms, at least five to five data structures are required ~ 10 books in this regard; for software design, it is not enough to understand structured design, object-oriented design, and some design patterns, we also need to understand the software architecture design, interactive design, aspect-oriented design, use-oriented design, data structure algorithm-oriented design, emotional design, etc., otherwise it is difficult to enter this floor.
Of course, in addition to the above knowledge, prawns also need to learn a variety of experience and skills. Of course, this is hard to beat them. Now there are a lot of books published, and there are even more technical articles on the Internet. Then I will make a bubble in various professional forums, master the various experiences, skills, and skills in these books and articles, and then learn the source code implementation of some well-known open-source projects, such as Apache or Linux operating systems. At this time, it is common to deal with general problems. cainiao and prawns will think that you are a "cow", and you will climb to the 3rd layer and be promoted to "Ox.
After reading the above requirements, some prawns may have to be dizzy and become a cool man to learn so much! Is the requirement too high? In fact, the requirements are not high at all. If you cannot grasp anything, how can you make others think you are "awesome?
It is worth mentioning that, after entering the multi-core era, it has increased the threshold for multi-core programming from the first layer to the second layer. Of course, it is not difficult to pass this threshold. Many advanced people have already entered this threshold, as long as they follow their footsteps. To step into this threshold may wish to learn TBB open source project source code (link: http://www.threadingbuildingblocks.org/), and then on Intel blog (http://software.intel.com/zh-cn/blogs/) and multi-core Forum (http://forum.csdn.net/Intel/IntelMulti-core/) to see the relevant articles, buy a few more books to learn.
In China, once you become a "cool man", you can usually go to many well-known companies. If you are lucky, you can stick up the title of an architect, it is not surprising that the title of "chief architect" or "chief XX scholar" is attached. Many people who climbed to this layer thought they were on the roof. They could see the sky with their eyes. They started to look empty and thought they could do everything and understand everything, it is the best picture of this group to hit bricks on the Internet. From this, we can see that the number of cattle in China is still large, far more than that in the West, and it is still leading this layer.
There are also many modest "cool people" who know that they are not yet half a bucket of water. They know that building-jumping games are like monkeys moving on a tree. Looking down is smiling faces and looking up is ass. In order to look at smiling faces and look down on the buttocks, they did not stop here, but they continued to look for a new level of stairs to continue crawling.
Layer-3 Daniel
It is not as easy as those layers mentioned above to climb from Layer 3 to Layer 3. To become a bull, you must be able to do things that the oX can't do. For example, normal people generally do not know how to write the operating system, how to write the compiler, and how to implement the TCP/IP protocol. If you have the ability to implement any of them, then you will be upgraded from the ox to the "Ox.
Of course, because of the differences in various professional fields, the operating system, compiler, and TCP/IP protocols are just examples here, and do not mean that you must be familiar with this knowledge, taking the popular multi-core programming as an example, if you can gain a deeper understanding of the various ideas and principles, you can use them more freely, it also has the ability to implement something similar to the open-source project TBB library, or you can write a server similar to Apache, or write a database, can all be "Daniel ".
To become a "bull" is not a simple task. It requires much effort than the ox people. Generally, at least 200 ~ About 400 professional books and a good grasp of it, in addition, have to pay attention to the latest information on the Internet and journals.
When "Niu Ren" is promoted to "Da Niu" and "Niu Ren" finds that there are more cattle than them, it is conceivable that the "Niu Ren" is shocked. Because of the large number of cattle and their influence on the prawns and cainiao class, the scalpers usually have a high social awareness, it can be described as "attracting countless cainiao, prawns, and cool-Men". Let's take a look at the Linus Torvalds and other cool-ups mentioned earlier.
Although the conditions for becoming a "Daniel" seem very high, this floor is not a difficult layer to climb. As long as you make some effort, the quality is not very poor, there are still many "cool" who can climb to this level. We can see that the number of people on the floor of "Daniel" is not as small as we think. For example, people like Bill Gates seem to belong to this level.
Because there are a large number of people on the "Daniel" layer, it is difficult to count whether there are too many "Daniel" in China or the number of big cows in the West is large? I guess it should be a great number, or there will be more "Daniel" in China.
Many people may think that I am talking about it here. Linus Torvalds has written a famous Linux operating system, and no one in China has written similar things, how can we compare China's "Daniel" with the West? I don't know whether Linus Torvalds just wrote a prototype of "image like" operating system. Linux was developed into a world-famous open-source operating system, it is because many commercial companies that support open source such as IBM have sent many behind-the-scenes heroes on higher floors than Linus Torvalds to develop it.
Some cainiao may think that Linus Torvalds is the god of programmers:
Linus, Richard Stallman, and Don knuth attended a meeting.
"God says I have created the best operating system in the world. "
Richard Stallman naturally said, "God says that I have created the best compiler in the world. "
Don knuth said with a puzzled face: "Wait. When will I say these words? "
It can be seen that the technology level of Linus Torvalds is not as high as expected, but "Niu Ren" and "Da Wei" think "Da Niu" is better than them. In our country, there were some people who were still at the "prawns" layer, and they could also write books about how to write the operating system, and they wrote very well, in addition, an operating system with a little image is written. I think Chinese "Daniel" won't compare to the West. The reason why no one writes similar commercial products is completely the reason of the social environment, not the reason why the technical capabilities cannot reach.
The main reason why "Daniel" has become a Daniel is that it is not what they feel when "Niu Ren" is built. Many cainiao, prawns, and even cattle may think that the "Daniel" layer has reached the top, but most "Daniel" is probably self-aware. They know that they have not yet climbed to the mountainside, it barely calculates the level of half a bucket of water. Some of them will continue to climb to the next level without being tired, energetic, and ambitious.
Some cainiao, prawns, and cattle may not understand what the floor would be like if they had a higher floor than the "Daniel? Next let's take a look at the mysteries of the 5th floor.
Layer-3 expert
When the experts are really working on an operating system or similar software, they will find that their basic skills still have many shortcomings. Taking memory management as an example, if we directly copy the memory management algorithms of Linux or other open-source operating systems, we will be looked down upon. If we implement a memory management algorithm automatically, he will find that there are a large number of algorithms related to the memory management method, and he has not learned and practiced all of them. He does not know which memory management algorithm should be used.
Here, some people may already understand the mysteries of the 5th floor, that is, basic research is required. Of course, the most important word in the computer is the word "computing, to do basic research, programmers mainly focus on the study of non-numerical "computation ".
Non-numerical computing is a very huge field. Not only are the popular "multi-core computing" and "cloud computing" not in the field of non-numerical computing, software requirements, design, testing, debugging, evaluation, quality control, software engineering, and so on are essentially non-numerical computing. Even the chip hardware design also involves non-numerical computing. If you have not really understood the meaning of "computing", you have no chance to enter this level.
Some people may still have no idea why Bill Gates was laid on the Daniel layer and did not enter the layer. Although Bill Gates has not graduated from the university and has insufficient academic qualifications, his family has a collection of more than 20 thousand books. He entered the software industry earlier than most people. He can leave his business alone, even if he only looks at his technical skills, he can be regarded as a five-plus-five-car learning. There is no problem with the sum of the common computer software doctors on top, it's better than Linus Torvalds and the like. Why can't we go to this level?
Unfortunately, from the implementation of the Windows operating system, its understanding of computing is superficial. If we compare Google's understanding of computing to college students, Bill Gates can only count as a junior high school student, so Bill Gates will always be a good guy and cannot become an "expert ".
Here, we may be delighted to see that Bill Gates and I are only waiting at the same level. If I upgrade one level, I can surpass Bill Gates. However, it's not as easy as upgrading from "Niu Ren" to "Da Niu" to this layer. Bill Gates has over 20 thousand books, so you can read more than 500 books ~ More than 1000 professional books should be difficult to master. Of course, this is not the main condition. More importantly, you need to go to a professional academic site to learn, to ACM, IEEE, Elsevier, springerlink, siam and other places to download papers should be your regular homework. Using academic search in the Google search engine should become your daily required course. In addition, you have to pay attention to whether there are any open-source projects related to your research. For example, when you hear open-source projects such as TBB targeting multiple cores, you should first enter "TBB" in Google to search for the source code, download the source code, and study it carefully. This way, your foot may have quickly reached the threshold for this floor.
When you do it as I said above, there will always be one day over time, and you will find that in many small fields, you have not learned any new things, and you almost know all the latest research results. At this time, you will find that you are not much higher than the level when you are doing "Ox" and "Ox", but you cannot "Ox" at all, because the knowledge and thoughts you have learned are put forward by others, you do not have much of your own knowledge and thoughts to share with others, so you have to continue crawling upstairs.
I don't know how many "experts" are in China, but one thing I can be sure of is that if we count the "brick houses" that are dedicated to everyone, we have more bricks than the West.