Architect, such as the title, the title and director has used rotten thoroughly, but in the life cycle of a software product, the architect is an extremely important role in the truth, this article will talk about my feel portraits of the architect, exactly what qualities of the students is the joint architects image, At the same time, welcome to reply what is the portrait of NB architect in your mind?
Business understanding and abstraction
The architect’s first responsibility is to understand the business, and converted to be research and development to understand the implementation of the plan, so business understanding ability is the essential skills of the architect, usually a senior business architects, the business will have a very deep understanding and accumulation, an excellent business architects should be able to anticipation about the trend of the development of future business, In order to leave some room for extensibility of the system, it is natural for some business architects to move into pD-type roles as they go along.
Abstract ability is the ability to translate business understanding into a model of system implementation, which is obviously an important ability. In many cases, abstraction is also responsible for the separation of responsibilities of multiple teams and the clear division of labor.
NB code capability
The reason why many architects are now considered to be “liars” is that there are a lot of people with the title of architect who don’t do any work (even some people who don’t know much about technology). It is easy to be considered as “liars” when they just talk and don’t do anything, as far as I am concerned. I have always believed that an architect has a very important responsibility to code the core part of the entire system, which is not necessarily the most technically challenging part, but has a critical control over the quality/failure of the entire system, so the architect must be born from the core code writers.
In a large system that spans multiple domains, architects are unlikely to be good at everything and cannot write core code for each part. In this case, architects must know how to judge whether the implementation of parts outside their domain is OK or not, so as to ensure that the combination of parts meets the expectations of the architecture design. Usually this mechanism to ensure that the pieces work together should be part of the code written by the architect himself.
comprehensive
Comprehensiveness is the most critical quality for an architect. Comprehensiveness can be reflected in three aspects:
1. In the face of business issues, the architect mind will emerge out of a variety of technical solutions, it is important, otherwise may appear clearly there is a simple and mature solutions, but because do not know and do the other complex not mature plan, so broad vision technology is essential, for architects and architects can’t be good at all, It is also important to know which major is reliable in areas where you are not good at.
2. Whether enough aspects have been taken into account when designing the system:
For example a lot of system design is easy to miss the details of the online link, lead to find missing anything consider when online, a temporary solution or can only be again, I do remember a year a design without considering the launch phase of a detail, result in online to find due to the problem of network segment does not work, and there is no temporary solution, have to again, System design not only instructs students in r&d how to write code, but also instructs students in all related technical work;
For example, when I designed the service framework in 2008, clusters and clusters were accessed by hardware load balancing devices, and the connection was a single long connection. As a result, if the service party to be called was to be published during the operation, it was easy to focus the pressure on the machine restarted in front. This is also a typical design problem caused by the whole link is not considered clearly;
Again, for example, in 2013, I was doing a larger range of the design of the system, due to know enough about some of the software, misjudgment, subsequently discovered in the process of the transformation in some modification of the key software design is too coarse, the last launch schedule almost delayed for more than a month, And those later designs are done urgently, the risk is very high;
Review of their own design software and found the mistake at this point can speak for several days, it seems I should arrange another document “on my system design of a XXX mistakes”, some actually rely on a good system design template might be avoided, is a good system design templates can help architects thinking about your overall.
3. Has the future development been taken into account when designing the system? Do you want to avoid the phenomenon that a few changes in the future will result in useless work or a lot of effort will be spent on transformation? As a result, huge efforts (not in technology, but in implementation) were made to remedy this.
Comprehensiveness requires the architect to have a broad enough technical domain knowledge and enough experience to see that the architect’s job is not just to draw a few boxes and connect a few lines.
Of architects of this challenge, with the greater the range of system (a system design, and 100 system consisting of a large system design challenge is completely different) and become, the more difficult, whether it is the breadth of knowledge, considering the point of coverage, and future trends, more complex situations can appear even architecture adjustment corresponds to the organizational structure adjustment, This should also be taken into account. For example, the big structural transformation of servitization means the establishment of a full-time service team in the professional field.
global
Sys usually refers to the system design is considered for the influence of the upstream and downstream system, usually, after all, the design of the system is not an isolated system, if there is not enough good to develop, is likely to lead to finish launched its own system, other upstream and downstream systems (especially some even upstream and downstream is who, don’t know how to use the case) there is a problem, There are also many cases.
Weigh the
Balancing is also an extremely important skill for an architect, or it can also be thought of as the ability to make decisions. The decision making of technical solutions is an architect’s most important responsibility.
The overall mentioned above is the open process of the architect when thinking, and the tradeoff is the process of receiving. The end of the receiving process basically means the determination of the technical solution, and also determines the rhythm. The tradeoff will be particularly prominent in two aspects:
1. Decision-making principle of technical solution
Usually, there are many technical solutions to a problem, so how to make a decision is very important, and the decision is usually related to the overall, generally speaking, the principle of the decision is cost-effective and sustainable development.
Is the implementation cost ratio of simple, the cost to include a lot of ways, for example, some scenes may be solve with hardware seems to be money, but the final conversion cost is the most cost-effective, many system design in the decision price is too casual, such as another common scenario is a new system to replace the old system, At this time, the cost of migration of the old system may not be considered at all or even exceed the cost of transformation of the old system;
Sustainable development is simply a choice of technical solution is sustainable in the company, for example, the simple case is the company’s main research and development personnel are PHP, but make a other languages, and only few people know (of course, it still depends on cost performance, if make the benefits of more than one other language of language/talent system replacement costs). For example, introducing an open source product, whether there is a professional team to maintain it is a key factor to consider.
2. Prioritize and pace control
I often ask students who do system design a question: for this business scenario, what is the most important point to grasp in system design? This is a key problem, comprehensive means considered in many parts of the problem, but usually the business requirements to realize are strong time requirements, therefore must also be considered when the difference of priorities, as well as the technical solution to also want to choose in decision-making, are likely to chose a less good technical solution, but by leaving some space can be engineered, Pave the way for future reconstruction, that is very good, especially technical students sometimes easier to fall into the scene of solving technical problems, but that problem may not be the most important at this stage.
In fact, priority and rhythm control are the best embodiment of the most NB architect in my opinion. Priority means to grasp the key points, which can ensure that there will be no major problems in business implementation under the guidance of the designed architecture. Rhythm control means to be comprehensive and pave the way for the future.
Scan code to focus on not getting lost
A public account dedicated to sharing architecture tips