The path for architects to cultivate

Source: Internet
Author: User

In China, our career positioning for architects, project managers, development managers, or technical directors is generally not clear. In many cases, we have one person and several roles. Darwin's theory is absolutely applicable in our industry. I have never been willing to become a knockout since I started in this industry, I also love this industry with my heart. Many years ago, I decided to become an architect (also known as a system analyst. Looking back at the past 10 years of training, I have summarized some of the capabilities that a qualified architect should possess and how to obtain these capabilities.

Encoding capability

An architect is a profession and has accumulated many years of development experience. In addition, I always think that an unencoded architect is not a good architect. I have seen many so-called architects who do not understand coding at all, but they always like to talk about architecture. But strictly speaking, they are not part of the scope of "Software architects". At best, they can only be regarded as "system architecture designers". When such an "architect" occurs, I always like to say one sentence: "don't tell me the concepts show me the code! ".

If you do not participate in encoding, it does not mean that the Code will not be encoded. If you do not have a good development foundation and a huge amount of coding time accumulation, a lot of details will be ignored when designing the software, this will directly affect the success or failure of the entire project, when the project manager customizes the development plan and arranges the project resources according to the software blueprint designed by the architect, there are a large number of unknown risk factors due to the "Blueprint" memory, and the unpredictable results triggered by risks. Can the project be successful?

 

  • Read more-read others' code and read the software architecture and design ideas from others' code
  • Learn more-master various languages, do not be paranoid about a certain technology formation, regardless of Java ,. net, phyon, and JavaScript each language has its own advantages and disadvantages, and becomes a language control, learning from the language itself and understanding the ideas of Language designers.
  • Do more-crazy coding, experience and understanding from time and practice, and work well.
  • Brave-strictly require you not to write "stinking" things and rebuild them bravely! Make the code elegant and easy to read full of your design ideas.

 

Expressiveness

The two most difficult tasks in the world are to put the money in others' pockets into their own pockets and put their thoughts into others' minds.

I think a successful design is "to make people at different levels understand". Why? So you need to know who needs to look at the design, and for what purpose to look at the design.

  • Sales-find selling points and characteristics from the design, enrich sales plans and customize pre-sale plans.
  • Project Manager-estimate the time, prepare the project resources, and break down the work according to the design.
  • Development-Prepare the technology, development environment, compile the demo and final code according to the design requirements.
  • Test-divide the test granularity, prepare the test environment, and customize the test plan according to the design.

 

Different development methods and processes have different design document requirements, and the audience is nothing more than the above. As a project/software designer, it is extremely important to clearly convey your own design ideas to the audience. The expression here is not about the skills of the mouth, but more about the skills of the tool and the ability to express words. Different tools are used to express the same idea to different recipients, which is a verification of architecture design. Such communication and expression can effectively integrate different perspectives, it also allows architects to have a deeper understanding of their design direction.

 

How can we exercise our Expressiveness in the face of so many complexities?

  1. Communicate with others and participate in brainstorming
  2. Exercise the professional knowledge to express "non-human" in human language. A diagram of a pencil drawing is easier to understand than a design made using a professional UML design tool. UML is a required course for architects and a tool to assist architects in thinking. However, if you do not understand UML, it is a non-human document. The design is for you to see, the professional, standardized design can only be made of waste paper.
  3. Cultivate the habit of testing first-write more examples and tests during design, which can greatly reduce design errors and verify the feasibility of implementation. This saves a lot of communication time after the design is delivered to the development and test.

 

Embrace change

As XP (eXtreme Programming) said: "The only thing in the world that remains unchanged is change ". Embracing changes, predicting changes, and controlling changes is not simply a requirement of good developers and project managers, but also an important capability of architects.

"Change"

In my understanding, the "change" in the design is the requirement of "customizable". The higher the degree of customization, the higher the scalability of the system/project. What architects need to exercise is to control the scope and extent of such changes. "change" is a double-edged sword. Allowing too many changes will lead to "over-design ", there will be a lot of "functions that may be used in the future"; too closed will become rigid and difficult to adapt to new requirements.

"Unchanged"

The "unchanged" mentioned here is just relative implications. The "core" or "Basic Framework" should remain unchanged in the system/Project. The simplest example is. net Framework is one of them, although it will continue to develop and enhance functions. However, its basic core design philosophy and architecture have never undergone qualitative changes. More specifically, "unchanged" is the rule, usage, and basic design philosophy.

 

I think the best way to learn to control changes is to look at the excellent class libraries or systems and ask why to do so and understand the ideas of the original designer. After a certain amount of time, with the increase in observation of "change", it is natural that "change" and "unchanged" will be properly applied in their own designs according to the design requirements.

 

Methodology

How should we choose from a wide range of architecture design methodologies? I have also read many related books. I only select the most practical ones. Here I recommend several books.

  • Design Patterns-to read and use them, I have learned different ideas over the past 10 years. applying them to the architecture can greatly simplify many complex problems.
  • Java programming ideology-it is helpful to improve the object-oriented design capability by talking about one of the best object-oriented books.
  • Refactoring-refactoring is not just a practice that programmers care about. Reconstruction over consciousness and thinking can be used in architecture design.
  • Extreme Programming-although it discusses development methods, it can best interpret what is "change".

The practice and application of methodology also need time to combine and integrate. They give us more ideas and consciousness, and we must avoid entering the misunderstanding designed for the practical methodology.

 

I believe there are many ways to become an architect. I believe that every architect must learn, practice, and think for a long time, and have a passion for software.

 

 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.