Architecture design for many years, the first two days and a young colleague chatting, the colleague from graduation to now has been working for 3 years, is my current new company, the youngest team leader (in my now new company, Team leader position of the people work 7, 8 years of 80%), He is now feeling very confused, said every day busy communication, basically no time to write code, but he later wanted to go down the road to the architect, very tangled. So an overtime night, come and chat with me about their thoughts. In fact, this is a typical mentality, in the end is to go to the technology, or go to management. In fact, to be honest, I had this doubts and misgivings 1 years ago, not to mention the young. About six months ago, I was in the company, although I hang the Senior project manager position, but in fact, the management of people, have to do architecture design of course also write code, but the company form is not very good, the United States customers want to transfer business to India, so ready to change jobs (although not too want to change, after all, in the previous company Colleague leadership and customer relations are handled in a very harmonious harmony, but behind the situation office had to shutdown, so there was also indecision. But finally decided to continue on the path of the architect, because I feel that management and technology is not contradictory, who said the architect only need to understand the technology, and do not need to know how to manage it. In fact, once up to the architect level, not only need to communicate with the developers, but also with managers, customers, operations, testing and other different roles of personnel interaction, but also need to carry out risk prevention and control, project cost estimation, etc., if there is no excellent communication management and project management capacity, Is definitely not an excellent architect.
How quickly to become a qualified architect. In fact, it is from two aspects:
#1 Professional Skills
@ First of all of course basic knowledge to solid, some classic professional books must look. For example, design patterns, algorithms, data structures, specialized books in the field of programming languages, and so on. What types of books do you need to read about different competency stages, please refer to ThoughtWorks (China) Programmer's reading radar, which is updated every year.
@ as an architect, review other people's Code and give reasonable advice is the basic skills, such as variables or method naming rules; So code Daquan, refactoring, improve the design of the existing code, clean code and so definitely need to see.
@ For a certain technical field or business area, must have a technology is proficient, because so you can understand the future encounter you do not know the technology, how to quickly become an expert in this respect.
@ usually have time to do a lot of code training, that is, Martin Flower often said kata practice, this metaphor comes from Taekwondo, taekwondo players generally find some basic moves every day, to practice repeatedly, so as to train the conditions of the muscle launch, then for our programmers, must also carry on the continuous programming training, for example the above colleague, the suggestion is, although spends most of time in the communication and the coordination above, does not have the opportunity to write the code, but oneself must use the spare time, oneself to find some examples to contact, for example, participates in the Open source project, Or go online to search for examples of the classic Kata links of some masters, or whether there are small tools in the work to improve their communication efficiency, except for children's shoes that have been written every day. Please refer to another article I forwarded and an article that introduces you to practice kata code online.
@ It is better to be proficient in a language based on the learning of other languages, thereby standing in a higher angle, for the programming language has a higher level of abstract understanding, for example, after learning Java, you can learn ruby,groovy,c# and so on, in fact, the language is mutual reference, For example, Lamba expression, even Java slowly to functional programming direction.
@ If you have time, you must maintain a blog, since the choice of architects, decided that he is not only a technical expert, but also to become a preacher, for the enterprise organization or other IT peers in the community to contribute their meager power.
@ Participate in a number of social software professional meetings or events to understand the current more popular technology and framework.
@ This does not advocate, I have a colleague, almost every year to update resumes one or two times, the purpose is not to really change jobs, but through the interview to get the current market most companies are using what technology and framework. For this article, please use with caution ....
@ If there is a pair of programming opportunities must cherish, especially with the master Danale together when the pair.
@ If everyone has done very well, this time can look at architecture design books, such as enterprise Application architecture model, the beauty of architecture and so on.
@ Go to 51Job to search the architect for this job label, look at the technical requirements and standards of the architects in different industries, then combine their current industry and your own technical characteristics, such as being good at the front or back end, selectively learning some of the techniques or methods of interest.
@ about the common site, no conclusion, the author is mainly based on the results of the search to find suitable for their own site, so need to master a certain search skills, I generally like to search in English, so the information is relatively new; if you download an ebook or view a blog, you will generally prefer CSDN , if it is to solve the problem at work, the probability of being answered on the StackOverflow is the largest, in addition to the usual oneself also need to accumulate some of their own technology of interest more popular site list, such as the general and window related to the MSDN If you are interested in getting started with Java, you can look at this website. For some open-source frameworks, there will generally be a community to think of, Google a search, will soon be able to find. Another German blog is very sophisticated, if you are interested in the Eclipse plug-in development of special friends can refer to it.
@ Everyone, if time and refinement allow, it's best to open up and share your usual code on GitHub. On the one hand can be familiar with Git usage, on the other hand can also be your usual practiced hand code for free to save, why not.
@ If you usually encounter any problems, you can go to StackOverflow above to find the answer, of course, if you can register your own StackOverflow account that is the best, so not only can ask questions, but also to help others, while there are many job visas work opportunities.
#2 Soft Skills (modern society, a qualified scientist is not only a technical expert in one industry but also a professional social activist)
@ Encounter problems, must think more, encounter a problem, if resolved, it is necessary to reflect on why can solve, if later encounter similar problems,
How to solve the problem more quickly.
The importance of English, it is self-evident, because many new technologies in the framework of Chinese documents are very small, even if translated into Chinese, is also used (excluding some of the domestic development of some open-source framework)
@ If there is time, read some of the communication aspects of the book, if there is a chance to participate in communication, it is necessary to think how to communicate better and more comfortable.
@ If you have a chance, you can take the PMP exam, about how to prepare for PMP, please refer to another article: How to prepare for PMP, but if you do not want to participate, there is no relationship, at least to engage in project management books, or later if become an architect, When a client or a manager gives you some professional terminology about project management, it will be confused.
@ The architect is actually a role in a sense, not a position. Must always keep the empty cup mentality.
Must have a hunger and thirst to learn and endure loneliness of the heart.
@ The current technology festival is very fast, especially after the marriage and there are children. Must make good use of their own debris time, for some technology, at that time do not understand it does not matter, but must remember and understand its key words, this is mainly to broaden their horizons. For example, now that you want to develop a system yourself, the result is an open source framework that has been implemented and is stable, and there is no need to reinvent the wheel.
@ is dealing with different technologies, programming languages, design patterns and structures, and so on (even if it doesn't give you immediate help in the daily life). You never know whether this knowledge will come in handy in the future, but it's definitely good for you.
@ at work, can help others to solve technical problems, must try their best, because this can not only win the goodwill and reputation of colleagues, but also can increase your problem-solving experience and improve your technical thinking ability
@ must take control of their own time, the work does not help the meeting, can not participate in as far as possible not to participate, of course, enterprise security, the company rules and regulations if it is mandatory, the participation also has to participate, but if there is no efficiency and wrangling the meeting, try to avoid participation.
@ Programmer to endure loneliness, to dig deep in their own fields, can not see what fire, learn what, must have their own ideas and judgments, if not decided, can to senior colleagues or friends to communicate.
@ Try to participate in the coding in the project as the architect cannot detach from the project.
@ If you have the opportunity to exercise your own in the public environment of the speech and PTT ability.
@ have the opportunity to do more knowledge sharing, because once you share the knowledge, you will have a deep impression of the technology, but also to establish a good technical image among colleagues, so as to win more expert influence rather than position influence.
The above is just what I can think of, easier, know some of the above experience, does not mean that young programmers can immediately succeed, after all, this requires a Phoenix Nirvana and the process of practice, but certainly can help the young programmers interested in this little detour, if there are other ideas, Or the reader has other good suggestions, I will continue to update.