This is the first day of my participation in Gwen Challenge

Code word is not easy, your praise will be my motivation to continue to update the creation.

Architect, is a mysterious and sacred existence, every novice programmer mentioned here, all show yearning and daunting complex expression.

However, how to become an architect has not been a unified path, last weekend I participated in QCon, Teacher Guo Dongbai’s share inspired me a lot, BEFORE I also learned some lessons about architects, here, let’s talk about what I think.

Part-time Architect & Full-time Architect

Generally, those who solve a problem on their own because of internal technical debt or business opportunity priority are called part-time architects, whose real identity may be a software development engineer, project manager, etc. But he stepped up when there was an opportunity driven or internal temporary need for the role of architect, which we call a part-time architect.

A full-time architect, on the other hand, is a role that is required in a heterogeneous organization because of long-term strategic needs or competition that creates uncertainty about goals. He makes the plan, others carry it out.

Whether architects full-time or part-time architects, its core competence is to have a certain ability of architecture, integrating the advantages, about current events, about truth and about the practical work, timely operation, real-time operation, when you have the “5” operation, also need to have a macro and micro perspective, moment to jump out of a position to look at the problem, devoting to incoming, To be both holistic and nuanced.

The necessity of an architect’s existence is to have the right goal

One of the most common architectural mistakes made by both entry-level part-time architects and senior full-time architects is a misunderstanding of constraints and goal values.

An outstanding architect should possess and the design of the software to make the right decision, the basic ability in doing these decisions often need to consider a lot of restrictions, such as: time, cost, manpower cost, cost of capital, specifications, quality requirements, the organization structure, the architect has never been a loner, he is a deck requirements, the implementation of a role. To meet the demand, we need to go into customers often, understand their real needs and experience feedback; The next implementation requires us to decompose the business according to the needs of customers (product managers), so as to build a highly available, highly scalable system architecture. Architecture, in the final analysis, is to empower the business. The architecture without business is just a bunch of empty shells. Even if it meets the above “three high”, it is not a successful architecture.

A good architecture should also have the ability to maximize certain values: social value, business value, employee value, certain capabilities (high availability, high scale, high scalability, etc.), code life, etc. Of course, this is also an embodiment of the technology services business.

Is an architect always necessary?

Three questions of the Soul:

  • Does your company have an architect role?
  • Is the role of architect currently required in your company?
  • Do you think your company’s architects create architecture that improves the quality of your business?

Not necessarily. Small software development organizations don’t necessarily need full-time architects. Because architecture and design capabilities are fundamental software developer capabilities, every developer has them more or less. Full-time architects create significant value only in sufficiently competitive environments, complex organizations where long-term perspectives and top-level design are lacking, and teamwork is inefficient.

Architects are not necessary for any company, but architectural design is always necessary.

The second requirement for an architect’s survival: competence

Want to become an architect must first have the basic ability of the figure, the only meet the ability, to the creation of the wider value, can be based on the current resources, make the best trade-off the lowest cost to meet the user’s requirements, based on the business direction of control technology, control the company’s overall risk, expansion plan for the future.

How can architecture resist increasing entropy?

An isolated system always tends to increase entropy, and eventually reaches the maximum state of entropy, which is the most chaotic state of the system. However, for an open system, since it can transfer the entropy increase generated by internal energy exchange to the environment by releasing heat, the open system may tend to decrease entropy and reach the ordered state. The combination of thermodynamic theory of entropy increase and probability theory has a metaphysical philosophical guiding significance: the higher the disorder, the higher the probability.

In layman’s terms, the system gets messier and messier over time.

Specifically, as time goes by, both development and maintenance will increase the complexity of the system. The more codes enter, the more likely it is to cause chaos and the more likely the software architecture will be damaged. Therefore, software architecture should consider how to resist entropy increase when designing.

In general, I think there are four ways to reduce the increase in entropy:

First, ** starts from the architectural design itself. ** In the architecture design, the future variability should be fully considered, the variable part and the immutable part of the system should be analyzed in the early stage, and the volatile part should be isolated. Use design principles and design patterns to grasp the evolution direction of the architecture from the overall software, so as to identify the impact of development and maintenance on the architecture in advance.

Second, the architecture must be shared across the team. In particular, every developer on the technical team should have a good understanding of the software architecture, the place of their code in the whole, its relationship to other components and communication channels. Whatever development model is adopted, it should not give up the importance of architecture in developer perception. Only in this way can component developers design locally within the overall architecture and maintain architectural continuity. Otherwise, it is easy to appear local structure does not conform to the overall architecture, thus causing the system to chaos.

Thirdly, design review or code review can also effectively reduce the occurrence of entropy increase. Design review is the prevention before implementation, code review is the quality assurance in implementation, both of which can ensure the consistency of the architecture, and in the concrete implementation can reflect the adjustment of the architecture, architects and technical managers often adopt the management method.

Finally, take the initiative to adjust the structure. Architects cannot predict the future, and when change comes, they need to proactively adapt their architecture to change, rather than passively accommodate it and rely on their coding skills to cope with it. In that case, active entropy has been increased architecturally and is a source of confusion.

What are the prerequisites for being a good architect?

Sagrada Familia cathedral (Catalan: Basilica I Temple Expiatori de la Sagrada Familia, Basilica I Temple Expiatori de la Sagrada Familia, Basilica I Temple Expiatori de la Sagrada Familia, Basilica I Temple Expiatori de la Sagrada Familia, Basilica I Temple Designed by Spanish architect Antonio Gaudi (1852 — 1926). Although the church is still unfinished, it has been selected as a UNESCO World Heritage Site. In November 2010, Pope Benedict XVI named the church a papal sanctuary.

A good architect creates good designs for an organization.

1. A good design is a process of discovery and creation, not memory and knowledge.

The beauty of architecture lies in understanding. The world of information is created out of thin air, and we don’t need to memorize it, but to find the skeleton and logic behind it.

Architecture is creation.

The structure of learning lies in ingenuity and understanding. It depends on understanding, not memory. Remember as you think, not as you remember.

How does a good architect build requirements analysis capabilities, especially the ability to anticipate requirements?

First of all, the ability to summarize is very important. Analyze the reasons behind the phenomenon and speculate on the future possibilities. It doesn’t matter if you were wrong. Analyze what you missed and what important information you didn’t take into account. Critical thinking is also crucial. Criticism is not to make criticism out of thin air, but to find the efficiency bottleneck and mental burden in technology. Especially when you are reading classic books, you should be good at finding the difference between the current situation and the historical background of the book, summarizing the spiral road of technological evolution, and developing a scientific critical methodology.

2. A good design must have more lasting external adaptability (technical implementation is adaptable to future needs and changes in the external environment)

We can get a product solution for a domain by abstracting multiple external opportunities. We can get an architecture by abstracting multiple product solutions for a domain. Abstraction is good for memory because a skeleton requires logical consistency. This abstraction ability is important because it is the key to connecting and dredging the whole knowledge context of the information world. When you do the cognition of the world can be macro or micro, naturally everything is in control. Our core goal is to abstract the framework of the system, integrate the knowledge of these fields, and spell out a complete map of the information world.

The ultimate goal of abstraction is also to improve the external adaptability of technical implementations. Only if your architecture is abstracted well enough can it ultimately feed back enough models to the business.

To be continued, follow me to check the follow-up…