Responsibilities of Architects
Architects need to participate in all the processes of project development, including requirements analysis, architecture design, system implementation, integration, testing, and deployment, guides and coordinates technical activities and technical instructions throughout the project.
There are four main responsibilities of Architects:
1. Confirm requirements
During the project development process, the architect is involved after the requirement specification is completed, and the requirement specification must be recognized by the architect. Architects need to communicate with analysts repeatedly to ensure that they fully and accurately understand user requirements.
2. System Decomposition
Based on user requirements, the architect divides the system into smaller subsystems and components to form different logic layers or services. Then, the architect will determine the interface of each layer, and the relationship between the layer and layer. Architects not only need to perform vertical decomposition of the entire system, but also "horizontal" decomposition of the same logic layer.
This is a relatively complex task.
3. Technology Selection
Through a series of system decomposition, the architect finally forms the overall architecture of the software. Technology Selection mainly depends on the software architecture.
Does the Web server run on Windows or Linux? Does the database use MSSQL, Oracle, or MySQL? Do you need to use lightweight frameworks such as MVC or spring? Does the frontend adopt rich clients or thin clients? Similar work needs to be put forward and evaluated at this stage.
The architect's selection of products and technologies is limited to evaluation, and no decision is made. The final decision is decided by the Project Manager. The technical solution proposed by the architect provides the project manager with important reference information. The project manager will weigh the actual conditions such as the project budget, human resources, and time schedule, and finally confirm the situation.
4. Develop Technical Specifications
Architects are the technical authority in the project development process. He needs to coordinate all the developers and maintain communication with the developers to ensure that the developers can implement various functions according to their architectural intent.
The most important form of communication between architects and developers is the technical specification, which can be UML views, Word documents, and Visio files. The technical specification provided by the architect ensures that developers can observe and understand their respective subsystems or modules from different perspectives.
Architects should not only maintain communication with developers, but also communicate with project managers, demand analysts, and end users. Therefore, architects have not only technical requirements but also interpersonal communication requirements.
Misunderstandings of Architects
1. the architect is the project manager.
The architect is not a project manager. Project managers focus on budget control, time progress control, personnel management, external contact and coordination, and have management functions. Common project managers and architects in small projects.
2. the architect is responsible for requirement analysis.
The architect is not a demand analyst. Requirement analysts collect and analyze requirements and maintain contact with end users and product managers. The architect reviews and confirms the final requirement only and puts forward the unclear and incomplete requirement. He will keep in touch with the requirement analyst at all times. Architects are technical experts rather than business experts.
3. Architects never write code
This is a controversial issue. There are currently two ideas:
Opinion 1: architects do not write code, and write code is purely physical. Architects write code for minor purposes. The architect handed over various views of UML to the developer. If there is any ambiguity, he or she can communicate with the architect at any time.
Viewpoint 2: the architect is from a programmer who is at a higher level than the programmer station. The only difference between the architect and the programmer is experience and knowledge. Therefore, the architect cannot write code.
I personally think these two statements are related to the architect's birth and environment.
Architects are a technical role first, so they must come from the group of technicians. For example, System Architects mostly come from O & M personnel, and may not write much code themselves, or you cannot write beautiful code. Software architects mostly come from programmers and have the lineage and feelings of programmers. Therefore, some core code may be written during project development. Our ideal is that architects do not need to write code, but sometimes it is too ideal. Architects do not write code, which may depend on the company's scale, culture, quality of developers, and other practical situations. In addition, the architect is not so clear as the programmer's boundaries. There are also high and low levels of competence. Writing or not writing code is not the fundamental criterion for distinguishing the two.
3.4 basic qualities of Architects
Zhou xingchi has a movie "The King of Comedy". Yin tianqiu in the drama carries this "actor's self-cultivation" all day. A good actor not only needs talent, but also theoretical guidance, after all, there are a few people who have no teachers or their own skills. The same is true for architects. From ordinary programmers to senior programmers, to architects, is a process of Experience Accumulation and ideological sublimation. Experience accumulation is one aspect, and quality cultivation is another aspect. The two complement each other. Therefore, I think it is necessary to list the qualities that architects must possess as the direction for programmers to work hard.
1. Communication Skills
To improve efficiency, architects must win the approval of team members, project managers, customers, or users, which requires strong communication skills. Communication capability is the most universal quality requirement of human beings. It seems that technicians are easy to ignore. If you want to become an architect, you cannot ignore it. Never hold on to the idea that pregnant people will always be discovered after a long time. Or the guy who sells daliwan on Tianqiao is right: simply say no fake tricks, just do not say silly tricks. Let's look at the headers around you, who are not the masters. We should never despise them. We think that this is a flattering, speculative, and positive side for everything, "communication" is indeed a capability. I think I am a slightly introverted person, because I am a child from the countryside and I cannot speak Mandarin. I used to feel more or less humble. I dreamed that gold would always shine, therefore, I suffered a lot of losses in my career. Now, I deeply understand the importance of communication. I will take the initiative to communicate with my colleagues from time to time and feel that my work is much smoother.
I think this article is the most important, so it ranks first. I even think the following items can be ignored. The only one should be kept in mind and I should always remind myself.
2. Leadership
Architects can promote the technical progress of the entire team, make critical decisions under pressure, and implement them to the end. How can architects ensure such execution? This requires the architect to have leadership.
The achievement of the architect's leadership is not the same as that of the Project Manager. The project manager is mainly responsible for solving administrative problems. This kind of ability has little to do with the technology. He has the authority and financial right, and then pulls a "Leader" tiger skin and uses the "carrot and stick" approach, basically, the execution can be ensured. Architects may use informal leadership more in projects, that is, our influence, including personal charm, technical ability, and knowledge transfer.
3. abstract thinking and analysis capabilities
Architects must be capable of abstract thinking and analysis. This is the basic quality of system analysis and system decomposition. Only with this ability can the architect see the overall system and control the overall situation, which is also the basis for the formation of the overall situation of the architect. How do you have this capability? First, it comes from experience, and second, it comes from learning. Architects must not only have experience in the problem field, but also experience in the software engineering field. That is to say, the architect must be able to understand the requirements accurately, and then use the idea of software engineering to transform the requirements into the degree of implementation in available computer languages. The accumulation of experience requires a process of time. No one can help you in this process and you need to experience it. However, if you consciously cultivate and constantly learn from previous experiences, you can shorten the cycle. This is also one of the initial motivations for writing this series.
4. Technical depth and breadth
It is best for architects to be proficient in 1-2 technologies. With such technical capabilities, they can gain a deeper understanding of the working principles of the architecture, draw closer distance from developers, and form an influence in the team.
The wide technical knowledge of architects is also very important. You need to know as many technologies as possible. The so-called knowledgeable, only in this way can you combine various technologies and select a solution that is more suitable for the project. Some people say that the technical breadth requirements of architects are higher than those of technical depth, which makes sense.
To sum up, an architect is the technical authority of the project team.
The two basic concepts of process-oriented and object-oriented are not only need to be very clear for architects, but also for programmers and designers. This is also the basic knowledge of system analysis, design and coding. Many programmers I have come into contact with are stuck at a similar level. This is not acceptable. If you want to move on, you have to consolidate the foundation. Therefore, I think it is necessary to go back to the furnace first, makeup.