In today's Internet circle, may casually meet a person to pass you a card, title is XXX architect. Architects like the River Crucian Carp, but also is an interesting phenomenon in the industry at the moment. What do you think about architects?
When I first had an appointment with Infoq about an architect, I was stunned for a few minutes, although I had experienced several different architectural positions in my career and had formed a team of architects. However, when I want to put it on paper, I find today I see in the industry architects are very different, even a mixed-up, in the direction, skills, experience, academic, achievement difference is like Cloud moss, so, today I would like to communicate with you some of my views on the architect.
About the old driver
Chen Mijian (Frank), 12 of software development and technical management experience. A high-concurrency, highly available distributed system architecture designed for the Internet, which builds and leads teams to complete project orders from zero to millions of levels of breakthrough. For large and medium-sized complex systems needs analysis, abstraction, architecture design, split, service design and integration is also good at, has many years of securities, telecommunications and other traditional business systems combat experience.
What is an architect?
Open a recruiting site casually: System Architect, search architect, front-end architect, Ios/android architect, platform architect, (large) data architect, java/php/. NET architect, senior architect, senior architect, bi architect, these are common, not to be seen there is also a background architect, Mis/erp/oa system architect, financial system architect, search architect, bus architect, ops architect, security architect ... There are a myriad of them.
Just above these job names, you can see the differences in the position of the architect, different directions, different technology stack, the industry is different, even if the same position, the level gap is a world of difference, if only by the architect a title to describe, obviously is not suitable, so I think today in the industry this appellation is still a bit "virtual".
Why the architect?
First I think it's because the programmer needs it. Small, remember all the local barber shop, no matter which barber to cut hair, is a price, although also from 1 Mao rose to 5, but the price is the same, but choose which shop or which Barber's right in the consumer.
After growing up work, there is a barber shop downstairs, in order to covet convenience, I often go there to cut, clearly remember that one of the boys named Prince in my hair, the first time to cut is 20 yuan, and then every few months will rise once the price, from the initial 20 yuan rose to 38 yuan, 58 yuan, 68 yuan, 88 yuan, 98 Yuan, the last to 108 yuan.
Each time the payment, the enthusiastic lad is particularly embarrassed to say to me: "elder brother, I also promoted, the price has risen!" "People are still the same person, the level of haircuts for men generally do not see much difference, but the title from the barber to hair stylist, senior hair stylist, design Director, Senior design director, chief designer, Sassoon chief designer, when the price all the way up and tiangang a level of the Beidou, I finally unbearable to change to 2 kilometers away from the residence of Small Yan Barber shop, 10 yuan to fix. PS: Think that was really lazy at that time, may be related to hair volume at that time.
This example seems to belittle the programmer's meaning, but people do not forget to look at the price above the trend, up to 98 yuan when I insisted on cutting hair there, which means that I have been walking in the junior programmer, intermediate programmer, Senior programmer, architect/development manager, director of the road. Prince students in those years, in addition to the price increase, but the skills do not seem to be particularly significant progress, but this does not mean that in those years my ability has not progressed, indeed is the accumulation of some experience, but also a point of ascension, the natural salary has risen up.
Most professions need to have a growth system, in order to make people have the pursuit of progress, and the architect is the programmer this group growth path often appear an important node, he described a programmer in a field, the industry in the knowledge, skill breadth or depth has accumulated to a certain extent, Need the community to have a clearer positioning and value for this group, is a product of the refinement of the Division of labor in the development field, so I think the emergence of this post and programmer's growth is related to the needs of programmers.
Because of project development needs. A development project from the inception to the end of the need to do a lot of things, demand analysis, carding abstraction, System/Module Division, service, data structure design, front-end architecture, technical architecture, operations, monitoring and so on, it involves abstraction, architecture, design, evaluation, research, tuning, team training and so on.
He needs to have a role in the overall, it is obvious that the project manager, Product Manager, BA do not do such things, often need to be the team's main responsible to do such things, I guess even in the development of a more refined division of labor today, most of the startups are looking for this kind of people: they have the CTO, VP, One of the titles in TD (CVT), most of these people spend most of their time on these things.
But with the development of the business, the CVT will find itself into a bottleneck, in addition to the above mentioned technical work, but also require the CVT to spend a lot of time to learn new knowledge, practice, summary, but also need to discuss with the company's business needs, and external agencies docking, team building, project management, and then need to have division of labor , project managers, HRBP, BA/SA, architects, etc. to support their work, need to have a more focused, professional staff to help, so there is an architect such a post.
Therefore, such a need and division of labor in each field, the industry to the knowledge, skills, experience requirements of different levels, are collectively referred to as architects, so the above-mentioned "virtual" feeling. Most of the time when you talk about architects there will be irrelevant and even a scene of contempt between the upper and lower sides.
Of course, there are many architects who might scoff at not having an open source project, a distributed framework, a system architect who has experienced billions of concurrent systems architects, and what I would say is that basically you are right, but if you have 3 minutes to rest, you might as well look down.
Field experts (technical field, industry field)
As stated above, if you are confined to a particular scenario, such as a distributed service system with more than billion levels, and the architecture is called an architect, you may find it easier to accept.
But I would like to participate in the framework system developers, called domain experts, it actually has a lot of technology stack is not a person can be completed, such as hardware, data storage, network layer, operating system, service framework, security, algorithms, big data, etc. have the relevant field experts to participate in the completion, It is not just the architects who draw the blueprints on top of the frame, each of which requires a professional staff to architect, research, and develop.
These areas can also be subdivided, the specific areas of storage systems, specific network protocols, specific areas of business scenarios and other deep research, this is not to say that an area of experts are unfamiliar with other aspects, but that he in some areas of special research, far beyond the industry average, stepped on a lot of pits, have enough experience, At the same time the breadth of knowledge in the technical field is better, then such developers are often defined as architects, but I prefer to call them domain experts.
This is also the development of computers and the Internet to today, there will inevitably be a situation, review the entire IT industry development trajectory, many positions are so, such as the Web front-end architect, product manager is a typical example.
It is generally easier for many developers to limit their domain expertise to the technical level, but if it is extended to the business domain (sometimes called an application architect?). ), it's very controversial, and even I've seen some architects who have always despised and spurned this so-called business architect: what is the business architecture to talk about? Only the technology to do bad people, only talk about business structure! Let's talk about Byzantine generals, blockchain, machine learning, big data ...
I am not entirely against this view, first of all, because many developers feel that the business architecture is not as deep as the technical architecture, if a distributed domain of experts to talk about the Distributed service Framework governance, RPC protocol, long-term connectivity, routing design, fault tolerance, flow control, grayscale, demotion, consistency, Reliability and so on, he could talk a few hours, smelling like a drunk.
But if you let a technical expert in the field of telecommunications talk about the business architecture, I believe many developers will be sleepy, one with industry characteristics, and one that does not have a quantifiable standard to judge good or bad, and that leads to this situation.
But in the eyes of non-developers, the business architecture is so important that they don't care what your technical architecture is, but what systems/modules/services are needed to support the business more efficiently, except that the system does not fail and is not too slow? is the system/module/service flow smooth? Can you adapt to rapid changes in your business? Does the new activity/rule appear as little development as possible, or even without development?
Most of this is done by an expert or architect with a business field, but in practice I have seen many architects who are more proficient in some areas of technology, such as networks, databases, distributed service frameworks, security, algorithms, and even workflow engines.
But the developer has a high vision, can quickly comb, decompose, abstract business needs, and really can practice the landing is extremely rare, and this field is also the industry has been neglected, because there is no criteria, not as the technical framework can be quantified (how many QPS can support, how much throughput, Concurrent processing of how many orders, etc.), most of the time the technology is the business is dragged away. So, technology is always the bottleneck!
Of course, above I was to give a more extreme situation, more time the architects agree that the architecture must understand the business, but the developers really put this matter in the important position in fact not much, engineering technology is willing to take the time to learn, and practice, can quickly progress, but the business abstraction requires many years of experience accumulated and summed up , it takes time to precipitate.
Give a developer time to study a popular new technology or rewrite a technical framework that is not well suited for the current business, and he must be hungry for a few days to see a big fat, ready, eager, terrorize all up;
But if you let him complete a business needs of the abstract decomposition, process carding, and realize the development, I believe he can do, but willing to spend a lot of energy, seriously to do, and do not do much, because the results are not good assessment, the sense of accomplishment is not strong, so most of the time do such things will feel more painful. Compare the two scenes of the attitude of things, the results are self-evident.
So, I think that most of the time architects use domain experts to describe things that might be more accurate, and, of course, this is not limited to skilled professionals.
The Architect's ability
Of course, whether an architect or an expert in the field, I think that in general it locates a developer who has accumulated to a certain extent, the breadth or depth of knowledge and skill in a particular field, so what kind of person is this?
Fundamentals: Logic, Abstraction, imagination
Excellent logical thinking ability is one of the basic requirements of architects, this is not a common problem for most developers, is a lot of training in this area from a young age, and choose the programmer this career, overall is good.
But the excellent abstraction, however, determines the future of many developers of the space, whether he is engaged in the technical or business areas of the system architecture, is the need for a very good abstraction, can be different from the different dimensions of analysis, abstraction into the appropriate model, and can actually fall into practice, this is a very important ability.
In addition, I think also need a little imagination, can also think of business development has some forward-looking, this ability is more difficult to assess, and the scale of the grasp is relatively hard, but in the personal experience, this is a very important ability, otherwise the technology is dragged by the business situation will be more serious, development is always the bottleneck, The more you go up, the higher the demand.
These three abilities, I think is a good developer to grow into an architect, CVT must have the basic quality, the rest is to have a good mentality and a lot of actual combat.
Mentality: Empty cup, curiosity, practice
The IT industry is one of the most promising industries in my cognition, a simple Ajax technology that can be stir by industry media for two or three years (and of course, because it really derives from the development model of today's front-end separation), every year there are many new term, new technology, open source framework emerging, An open source framework can be used throughout the industry overnight.
This explains the industry's impetuous, but also shows that the industry update changes quickly, as long as you do not keep up with the study, often will be dragged down a long distance, of course, many of the principles and methods are universal, but there are many good practice at each stage are constantly in the industry to spread, perhaps already is people know things, But it's easy to get dumped as long as you don't keep up.
To give a special example of his own frustration, let everyone despise: 2007 began about three years, I am responsible for a mobile application department of product and Research and development work, most of the time is busy with the project (then the mobile phone is mostly the era of the function machine), When one day I and the industry friends to Exchange Client cluster solution, even the consistency hash of this half-hour can understand the hash algorithm, I actually did not hear, was despised is living in ancient, knowledge structure obsolete. Obviously I have been pulled down very far, go home a check incredibly is in 1997 out of the paper, just a start in the field of peer application more, less spread.
So, I want to say is in the engineering field, an excellent developer, can not outworn, only humble, keep empty cup of mind, constantly learn from others, can advance. No matter where you are today, there must be a lot of knowledge that you do not understand, only in certain areas you may be an expert, in theory, the C language, the most basic file system or database can solve most of the system problems.
But why every year there are many new languages, frameworks, databases, protocols, principles, patterns and so on, only to remain curious, ask more why, why do such things appear? What problem does it solve? How to solve? What is the disadvantage of it? What new problems does it bring? In order to absorb and grow, we can understand it deeply.
The basic quality is good, the mentality is also right, the rest is a lot of solid practice, in the field of engineering there is no more than a large number of actual combat to improve the level of development personnel, even if the mentality is good, again smart, if the lack of many years of actual combat experience, or as a castle in the ground, talk about the theory and technology
Many have just worked for several years, their own quality is also very good programmers planted in this, because indeed the quality is good, so soon transferred to the management post, the Tao, also gradually away from the code, go to a certain stage, or easy to be criticized, it is very regrettable. Empty cup, curiosity, practice, such a mentality should be to become a good engineering staff to have.
Architecture of the technology
The architecture of the technology is much more, whether it is a larger overall system architecture, or subdivided into a domain, such as hardware, distributed service framework, storage, monitoring platform, and even algorithms, engines, and so on, all kinds of shared articles are more.
Architects are not scientists, more work is only in the field of engineering experience in the accumulation and summary, an excellent developer, have good quality, good mentality, and then meet some good projects, accumulated a lot of actual combat experience, there is a chance to become a good architect.
The architecture of the business
The architecture of the business is difficult to describe accurately, because it has no standard judgment and the boundaries are not clear enough. But to become this type of expert, rich system combat experience is essential, stepped on many pits, experienced many different business scenarios, so that the architects have a wide range of vision, many things have common, often can learn from each other and reference, but also facilitate the analysis of business needs, abstract business scenarios, framed system/module/ The boundaries of the service. In addition, there must be deep technical breadth and depth, out of technical discussion business structure, is on paper, can not fall.
Organization's architecture
Finally, the organizational structure of the technology, this is not to discuss the scope of the architect position, but the architect and the CVT is a line between, ready to turn around, so by the way. Many times, the CVT is often the architect turned around, because it is easier to bring up the technical team, and the developer will not be turned on when discussing the problem:).
However, with the development of the business, in addition to communication capacity, coordination and other capabilities, organizational capacity is particularly important, organizational division will determine the efficiency of the entire team, such as when to form a team of architects? Architect and project or independent into the department? Are the different functions managed vertically or organized by functional teams? Is there a need to set up a technical support unit to deal with interference and collection issues? Do you need a PMO? High-speed business development, a large number of people, organizational structure on how to quickly digest?
As with the technical architecture, there is no standard paradigm, only according to the different business scenarios, in different companies, industries, especially at different stages of development, the organizational style of the requirements are not the same, some even anti-pattern, but if effective, but also need to stage implementation.
Post
The above content only out of the author's personal experience, biased greatly, if you do not agree with some or all views, right when is a joke. All disputes involving the content, the author does not reply, do not debate!
Architects are awash, but do you really understand the job of the architect (from smelting number into gold)