I personally have three years of software development experience, but also done a lot of large and medium-sized projects, tasted the taste of success, but also experienced the pain of failure, their feelings are not up to the realm of the master, and the real master there is no small gap. To improve oneself first not satisfied with the status quo, I always believe that better enough is not better enough, to set a higher goal for themselves. With the goal also needs their own continuous efforts, the individual thinks to become a master also need to follow the following terms.
1. Solid Basic Skills
Discrete mathematics, data structures and algorithms, operating systems, compiler principles, and so on, these are the most basic courses in computer science. Don't think they are unimportant, although the content of these books is more of a theoretical thing, but participate in actual projects often need these basic knowledge to support. Of course, we can not read dead books, if you have not compiled any code and no actual project experience, then you learn this knowledge will only stay in the book, you can not understand the meaning of these knowledge profoundly. Some programmers who have some experience in a certain project may often have the feeling of "hate less when the book is in Time", they will encounter some bottlenecks in the improvement of their personal ability, these bottlenecks are due to the lack of basic skills. At this time to go back to learn the basic knowledge will often feel that the understanding is not the same as the understanding of the point of view is not just to stay on the theoretical level, and more is to use their practical experience to understand this knowledge, met a favorite book has a feeling like a duck, In the process of reading will also have a sudden understanding of some problems.
2. Multi-Reading source code
Program everyone can write, how to make their own program to write better. Personally feel that the fastest way to improve is to look at other people's source code, of course, and can not see everything, we need to have a choice to see, see some classic source code. For example, the programmer who wants to study the operating system can read the source code of the earlier version of Linux in depth and study the data structure and algorithm to read the STL library or boost library carefully.
Read the source must read the fine, to understand the meaning of it, to follow the writer's thinking, so that over time you read these things will become your own things, in practice to be applied.
3, more thinking, more communication
Programmers need more than coding, and a lot of time to think, sometimes even more than coding time. Do not rush to write code, a new project requirements, if not enough analysis and design to write code, the consequences can be imagined. To allow enough time to think, until the requirements are analyzed thoroughly, the coding process may encounter problems are resolved, and then start coding. In addition to the exchange of other people, the three-person line will have my division, ask others to the same point of view will be a great inspiration to you.
4. Good programming style
Develop good habits, variable naming rules to unify, code indentation choreography. Everyone knows how to exclude errors in the code, but often ignore the error of the annotation. Annotations are an important part of a program that makes your code easier to understand, and if your code has clearly expressed your mind, you don't have to annotate it, which is even worse if the comments and code don't match.
These are a few years of my programmer's career experience, I hope to be able to help. These are purely personal points of view and may be reserved if different views are available.