The path for Web architects to grow and web development
I have been coding for many years. Although it has failed, I have a little bit of experience in failure. However, in China, most programmers have been learning a detour like me. If you want to become an architect, you must follow the correct path. Otherwise, programmers who are getting farther and farther away from their goals and working hard will have the following feelings?
1. My job is to finish the tasks handed over to me by the leaders on time. As for how to write the code, I know there is room for improvement, but I don't have time to improve it. The key is that the leaders don't have time to do so.
2. I found that my skills are always unable to keep up with technological advances. I have learned many things that I want to learn. Many people have used jQuery recently. I have heard that MVC is quite popular recently, and there are also LINQ, I heard that Microsoft has Silverlight again ......
3. I found that although I have been working for several years, I have become more proficient in coding, Ctrl + C, and Ctrl + V, but the coding level has not improved yet. I am still a common programmer, but someone has already done it as an architect. Front-end framework sharing
4. I have been working for several years and want to change my job. As a result, the interviewer asked me what data structures, garbage collection, design patterns, and other things I have read, but I don't need it at ordinary times. I forgot to read it and couldn't answer it. The examiner said that my foundation was too poor...
No. If not, you don't need to read it. You must have done it, or you have understood the path.
If yes, congratulations, you have entered a learning misunderstanding. If you want to advance technically, you cannot continue coding. To fulfill your needs, you must work at the same time as coding, our thinking and level are constantly improving.
Writing code goes through the following stages.
1. You must learn basic object-oriented knowledge. If you forget this, your programming path is destined to be a primary repeat!
Many programmers know the concepts of classes, methods, abstract classes, interfaces, and so on. But why is object-oriented, where are the benefits, and what problems should be solved? I just understand the concept, that is, I cannot express it clearly, and then I cannot use it in real work. After a while, the object-oriented things are blurred, as a result, most programmers use object-oriented languages to do process-oriented work. Therefore, to learn object-oriented, first, we should understand the purpose of object-oriented?
What is the purpose of object-oriented?
The development language is constantly evolving, from machine language, to assembly, to advanced language, to the fourth generation language. Software development methods are constantly evolving, from process-oriented and object-oriented, to aspect-oriented. Although these are constantly developing, their goals have not changed. These goals are:
1. Reduce the complexity of software development
2. Improve the efficiency of software development
3. Improve Software Quality: maintainability, scalability, and reusability.
Among them, the development of language and development methods have made great progress in the development of 2 and 2, but for 3rd, we cannot simply rely on the development method itself to solve the problem.
Improve Software Quality: maintainability, scalability, reusability, etc. The specific point is high cohesion and low coupling, and object-oriented is to solve 3rd problems. Therefore, to become a good programmer, the most difficult to get around is object-oriented. Front-end framework sharing
2. To learn object-oriented knowledge, you must learn the design model.
Assume that we understand the object-oriented purpose and concept, but we found that our object-oriented knowledge has never been useful in the coding process. In fact, the principle is very simple, it is because we don't know how to use it. Just like swimming, we have understood the advantages of swimming and several swimming postures, such as gouging, backstroke, frog, and freestyle, but we still cannot swim ....
Therefore, with these basic principles, we cannot. We must have more detailed principles to guide our design. This gives us a more basic object-oriented five principles, these principles are applied to practice in more detail to solve practical problems. This is the design mode. Therefore, to learn OO well, we must learn design patterns and design patterns. In the words of masters, success stories in many areas that humans are trying to solve come from various models, an important goal of education is to pass on the knowledge model from generation to generation.
So learning the design pattern is like watching the world's top swimming competitions, and we are crazy about it.
Iii. Learning Design Model
Just as we don't want to watch other people's performances, we need to learn to swim by ourselves. This is our purpose.
After reading several design patterns, we are excited. In the new coding, we always try to use the learned design patterns, but often misuse them, tossing for half a day, I found that my pants were itchy...
After learning the design patterns, we are very confused. We feel that these patterns are so similar that we often cannot tell the differences between them, and I understand a fatal thing in the design process-over-design, because the design model requires us to be highly scalable and reusable, but at the beginning of the demand, we are not God, in addition to relying on past experiences, we do not know which areas should be expanded and reused. Is the past experience correct? Therefore, we do not even dare to easily use the design model, but are still using the process-oriented method to meet our needs.
Iv. Reconstruction of learning
How do you think of the wonderful code? It is more exciting than seeing the wonderful code. As a result, we began to think that none of these masters had to work, and there was a demand that there was no time for the leaders to complete the work, and they only carried out the work on the standard of designing brilliant code? This kind of work is too cool and impossible. The boss does not want it. Even if he had all these ideal conditions, he was able to design perfect code from the very beginning? It's impossible. unless he is a god, he can predict all future needs from the very beginning. How can they write wonderful code since there are no such conditions?
Joshua Kerievsky clearly pointed out in the famous "model and XP" (included in the book "Extreme Programming research: in the early stages of design, the use pattern often leads to over-engineering ). This is a cruel reality. The pursuit of perfection alone cannot write practical code, and "practical" is the overwhelming element of software.
As mentioned in refactoring-improving the design of existing code, refactoring helps you find the balance point of change. You will find that the so-called design is no longer a prerequisite for all actions, but gradually emerges throughout the development process. In the process of building a system, you can learn how to enhance the design. The interaction that comes with it allows a program to maintain a sound design in the development process.
To sum up, we use the design pattern in the early stage of design, which often leads to excessive design. Therefore, we should constantly rebuild the current code throughout the development process and throughout the entire demand change process, in order to keep the program well designed. It can be seen that reconstruction is required during the development process. Otherwise, no matter how well the original design is, as the demand changes, it will become a bunch of bad code, which is difficult to maintain and difficult to expand. The so-called refactoring is a process like this: "modifying the code without changing the external behavior of the Code to improve the internal structure of the program 」. The goal of reconstruction is the design model. In essence, it is to make the program architecture more reasonable, so as to improve Software maintainability, scalability, and reusability.
Reconstruction-improving the design of existing code is also a masterpiece of Martin Fowler and other masters. It is a Super classic masterpiece in the field of software engineering, with another masterpiece "design patterns" and said "soft work and double master", you can't read it.
5. Start the road to excellent software designersFront-end framework sharing
Through the design pattern and reconstruction, the coding of our learning and our work has finally been combined. We can use the object-oriented thinking in our work to consider the problem and start to learn and reconstruct it. Just like swimming, we have watched all kinds of top swimming competitions, understood various rules, methods and skills used by celebrities. Now it's time to go home and practice in the river next to the village. Exercise also requires a coach. I recommend another classic book called "Reconstruction and mode" and reference his initial introduction, this book ground-breaking reveals the relationship between refactoring and the two key technologies of software development, and explains how to improve the existing design through refactoring implementation mode, which is often better than the early use mode in the new design. This book not only demonstrates an innovative method of application mode and reconstruction, but also helps readers to deeply understand the reconstruction and mode in combination with actual practices.
This book is exactly the coach we need and is worth reading.
6. There is no end point. Only unremitting research and efforts are required.
After several years of persistence, we finally learned to use various models flexibly. We don't need to think about what models to use and how to reconstruct them. The purpose of a program is maintainability, scalability, and reusability. It has become a programming habit and a kind of thinking habit, just as after practicing swimming for a few years, we don't have to think about how to make ourselves float in the water. The difference between the back-swimming and the frog swimming ..... instead, they jumped into the water and naturally swam towards the other side. However, we still have a long way to go to compare with masters, and we may not be masters in the end, but whether we can become masters or not, we are already on the right way to become masters. We are different from other programmers, because no matter how many teenagers they are, their levels will not change, but they are repeating the wheel, the only thing that is faster than you is Ctrl + C and Ctrl + V.
On the right side, as long as you stick to it, you will get closer and closer to your goal. In the future, you will surely be a good architect. The difference with a good architect may be just a matter of time.
The path for web architects to learn can be a clear path. I have been familiar with the design model for three years. What books should I learn?
I think, for example, an architect or a designer, it's not about how many technologies he has mastered or how many technologies he will use, the key lies in its profound understanding of the features and Principles of the technologies currently used, such as the design mode. He knows the characteristics of each design mode and what business scenarios are usually used! This is the technical layer! The next step is the business layer. You are particularly familiar with the business of your current project. In fact, the most important thing is business-oriented, technical understanding, and when it is used, you can check the information and perform experiments. The business is in the architect's mind and there is no information to find, then his job is to associate these business needs with technology! These are not what the book can tell you. Instead, they usually accumulate and think more!
Of course, you can also find books about architects or other online materials. These books can become architects without reading them, instead, I will give you an idea of building an architect, and then gradually accumulate it from your work practices!
What is the web Front-end architect doing?
The following link lists the front-end architects you want to know:
Www.blueidea.com/tech/site/2006/4267.asp
Www.blueidea.com/tech/site/2006/4107_2.asp