It refers to computer repair and software writing. The next sentence may be more appropriate, because the school teaches this, and the development work is indeed doing the same. However, when new users are writing code, what are the differences between them? Why do new veterans do not understand each other? How can a newbie grow into a cool man, and how can a veteran go further? Why is the rise of BDD and TDD difficult to implement? Why is it so difficult for software R & D companies to improve their coding capabilities? The Triple Realm of code writing records some thoughts on code writing.
1.Three levels of code writing
1.1The first realm of code writing is the mountains.
For those in the first realm, writing code is all about software development. Software developers are writing code. If they are not writing code, software developers are not working.
They will be immediately involved in code writing, and the code they write can run is their pursuit. They like debugging tools and use debugging and direct running as the main means of verification. In their opinion, writing code is simple, and design is not necessary. They do not have a thorough understanding of the demand.
1.2The second realm of code writing is not a mountain.
In the eyes of people in the second realm, writing code is only a stage of software development, which is a relatively low-level software development personnel, software developers are also doing more important work, such as requirement analysis, architecture, and design.
They will enter the coding stage very late, because before that, they still have more important work to do, such as requirement analysis, architecture, and design. encoding is only a result of the above work, it is their pursuit to write code without errors. Maybe they will take part of the testing work, but it is not entirely their work. In their opinion, the preliminary design is the most important, and writing code is just an implementation. They are picky about the demand and discuss the details to the extreme to avoid omissions in subsequent design and coding work.
1.3The third most important realm of code writing is to see the mountains or mountains.
In the eyes of people who focus on the third realm, writing code is a very important part of software development. Writing and Running code is not only used to meet requirements, it is also used to explore requirements, try to implement and evolve the design.
They will start to write code very early, write the code process and explore the needs, try to achieve and evolve the design process and other processes effectively linked together, forming a closed loop of continuous feedback learning. Code is not the most important. It is what they need to accurately and concisely achieve business goals and run software with a better internal structure. Sometimes they even consciously discard part of the code that needs to be explored, attempted to implement, and evolved in the design process. Testing is one of their top priorities. It is a key link for writing and running Code and is used to form fast closed-loop feedback. In their view, some high-level preliminary design is necessary, while many other designs are evolved by writing code. Sometimes, they use code to set standards for their needs, and constantly feedback to explore the needs and correct understanding deviations. Sometimes, they quickly provide prototypes and work with customers to find real solutions.
2.Thoughts on the Triple Realm
2.1The path to software development personnel growth
In most cases, new users are in the first stage. Some old birds with rich experience but lack of knowledge are at this stage. They think that software engineering is something on paper, and lack of understanding and understanding of the Analysis Mode, design mode, architecture method and other methods. They are very confident in their own code capabilities, with special emphasis on the role of practice in improving their code capabilities. They will only be convinced when they see that their code is indeed better than themselves. After training or encountering difficulties in practical work, the first-level students can realize the importance of analysis design and begin to learn and master the analytical design capabilities, and change to the second-level realm.
Most of the students can reach the second level after their accumulated work experience. Students in the second realm have a certain understanding of software engineering and are quite proficient in tools such as UML diagrams. They respect object-oriented, analytical, design, and architectural methods. They prefer a top-down design, and expect strict implementation of the demand analysis design, implementation, testing, and other processes in stages. Although they know the concepts of refactoring and evolutionary design, for them, restructuring has not yet formed a habit, but they have to do it.
Only a few people can go from the second realm to the third realm. These students do not lack analysis and design skills. They have mastered UML, object-oriented, and design patterns. More importantly, their understanding of software development has changed. software is not implemented, but evolved. The main body of software development is people, working software is more important than code. Reconstruction and evolutionary design have become their basic skills. They are early adopters and active promoters of methods such as TDD, BDD, and DDD.
2.2Battle of realm
There are many disputes between software developers, and mutual disapproval caused by the difference in realm is also an important one. Students in one realm think that the actions of the dual realm are too slow, simple, and too theoretical. The analysis model and architecture design are motionless, while those in the dual realm think that the students in one realm are too arrogant, it is difficult to solve complicated problems due to lack of thinking. Double realm students do not understand how they work. It seems that they have strong design capabilities. How can they be so eager to code. A student in a level can't stand the three levels of students. They are still working habits. They are implementing new methods, and they can write code as soon as they write code. What else are they worth.
For most companies, the second realm is a common choice. Its benefits are obvious. First of all, the second realm is extremely compatible with the company's development process, and the waterfall is fully isolated. Second, the path for personnel growth is clear, from code writing to design to Business Architecture and technical architecture, this is a controllable growth path that conforms to the company's position model. Finally, it is easy to manage work, easy to manage personnel growth, and easy to design job performance. Of course, you should choose it. However, it also brings disadvantages. In the second realm, learning and exploration have become a stage, rather than doing things in the whole process, in addition, the proportion of learning and exploration will be further reduced as the company's demand for predictable and manageability is enhanced, and the company's learning and innovation capabilities in software R & D will continue to decline in a less significant way. Until one day, the company was aware of the crisis brought about by the decline in innovation capabilities, but it was likely to continue.
In such an environment, it is more difficult for people to grow to the third level. Because you are not fighting with a person (yourself), you have to face the whole environment. The best and easiest way is to adapt to the environment and become a strong follower of the second realm.
2.3 BDD, TDDWhy is it so difficult?
BDD and TDD (if you do not know these terms, we recommend that you check them) are typical examples of how to work in the third realm. This is how cool people who have been immersed for a long time in the third realm work every day. What they do is to describe it and sometimes develop some tools to simplify learning and grasp the cost of these work methods.
However, software developers think that BDD and TDD are difficult, and most people do not have the ability to explore and design evolution. There are only two options for the software developers of the first-level practice type, one of which is to fully accept it and rush to write the test code to cover 95% or even 100% of the test, soon they will find that writing test code and maintaining test code will become a huge pain; the other is completely ignoring it, and the pain is that their code is still not upgraded, and every day, there is a sound in the ear that BDD and TDD are better. For software developers in the second stage, they feel very insecure, the software development work is out of control, the development order is disrupted, and the design will continue to change in the future work, everything is no longer under control. In addition, the previous attempts to convert to BDD and TDD cannot bring higher productivity or better results. This is not a good thing.
At the same time, the company will not accept it. Adopting these practices will disrupt the company's existing R & D process and make predictable management more difficult. The division of labor is broken and not clear, some employees complain that they have done things they don't need to do. Managers will become unconfident when they hear R & D personnel say that design evolution. I just want results, but you tell me it will change.
Conclusion:
Are you still writing code? What do you think is in? Have you improved your ability to write code in recent months? In what direction?
According to my observations, most companies are stuck in code writing, and it is hard to imagine that companies can still produce more and more outstanding software products in this situation. Is your company's code writing capability stuck? What efforts have the company made to improve the code writing capability? Why is the ultimate success?
Refer:
Good recommended: see the mountains or mountains of life three realm http://hi.baidu.com/djkcn/item/f8a5cfef327a50265a2d643d
Recommended books: Effective programmers. The attitude towards Chapter 2 acceleration can be used to test the stage you belong.
Book recommendation: the way programmers practice-from small workers to experts.
Book recommendation: Emerging design: the evolutionary nature of professional software development.