Inadvertently seenProgramThe four realms of programming in member magazine are very interesting and reasonable. I think this is also true for myself.
1. unconscious and incapable (do not know yourself or not
At this time, it took about a year to get started with programming. Most of the time I had a college career, young and frivolous, passionate, and extremely energetic to learn, especially when you know the programming rules, write the programs that you think are awesome, and have studied the advancedAlgorithmI have worked on several projects and think programming is very simple. I used spring, hibernate, and tapestry in college. Struts has worked on two medium-sized projects, learned the design mode, and deployed EJB, I have read SOA-related knowledge and feel that I am invincible. I don't know what to learn. I think all the frameworks will be used.
2. Conscious and incapable (knowing you Don't know)
This phase should be code for more than one year. I have been involved in large projects and encountered some problems that I could not solve independently at work. I will often ask some elders. For programming, I do not know why. At this time, you should probably take part in the work, because you may encounter many technical problems that cannot be encountered on campus, such as performance and availability. At this time, we didn't start to learn with an empty mind and study the nature of things. When I was working for three months, I realized that I had a good level of food. Although it will use spring, it cannot understand its essence. Previously, all projects were built on their own, while the company had a set of standardized development, testing, packaging, and building tools. More and more technologies are being introduced and many problems cannot be solved independently. At this time, I felt that I was growing fast and began to embark on the path of professional programmers.
3. Be conscious and capable (know yourself)
After the conscious and incapable stage, the occupation level has reached a certain level due to the fact that there are already many contacts. After thousands of hours of coding career, I have solved various technical problems, and know the cause and solution of most problems. At this stage, he is already a very good programmer who can independently solve all the problems he has encountered. In the past few years, I met the rapid development of the company. The company's technical architecture has undergone tremendous changes, from single-system architecture to distributed architecture, from single-system to hundreds of systems, the Daily Independent PV has grown from several hundred thousand to hundreds of millions, with hundreds of millions of transaction data per day. At this stage, we have greatly improved our coding skills, design patterns, message-oriented middleware, distributed system design, domain-driven design, cluster, database splitting, and architecture design. It can basically solve all problems encountered.
4. Unconscious ability (not knowing what you know)
This phase is the time for integration. If the third stage is to solve all the problems you encounter, this stage is to solve the problems that others have encountered but they have not yet encountered. This stage is the realm that can be achieved through continuous improvement of abstract thinking capabilities. If the third stage can solve a problem. This stage can solve some problems. It can abstract the problems encountered in the third stage, for example, how to solve the performance problems of a system. I have recently been developing iOS-related products. I have never learned Objective C before, but I understand the underlying JAVA Implementation, design patterns, and MVC design, check the uikit design diagram in cocoa to see how it is implemented. In addition, the high-order functions of function programming that are currently popular are similar to the template mode and callback mechanism in Java. This is the result of integration. At present, I think my personal abilities are basically at this stage.
PS: It's really necessary to see a lot of complaints. At what stage are you looking. As you get to know more about it, the phase may change. This stage is inherently subjective. In fact, the most important thing for programmers is to think about it. For example, if you think you have reached the fourth stage, what else do you need to improve in the future? What is the programmer's scope? What are the responsibilities of programmers and the future development of programmers? Only constant thinking can break away from this stage of competition. Some programmers can be project managers, some programmers can be architects, and some programmers can be scientists, but they are not necessarily experts in coding, so they cannot narrowly think that programmers are coder!