First-profile architect

Source: Internet
Author: User

A successful architecture is an architecture that can solve user needs (including functions and non-functions. Of course, the feasibility and scalability should also be considered. Among them, scalability is the most prone to problems and the most difficult part. To achieve easy scalability, you must know or predict the change direction of user requirements in the future. It is really difficult for an architect to focus only on technology. Therefore, from the perspective of an enterprise architect, he must understand not only the business of the enterprise, but also the business development direction in the next few years. The popularity of SOA actually gives us a chance to figure out the relationship between it and business departments. It is just a department that blindly catches up with business needs, or a business partner, mutual influence, which will affect the success of the overall enterprise information architecture.

Communication is the most important tool that is not necessary for software architecture design. Communication is for two reasons. The first is the understanding of the demand, and the second is to promote your design, which is indispensable.

The first point is easy to understand. As mentioned earlier, it is impossible to design a successful architecture without knowing the requirements. The second point is easy to ignore. To be honest, the success of an enterprise architecture depends on whether the architecture can be implemented and whether Project Teams of individual departments can follow the architecture. Therefore, as an architect, you must listen more and communicate more.

In the planning and design phase of the architecture, I found that the most useful tool is the workshop, which brings people from different departments together for a specific purpose for discussion, this allows all affected departments to make full comments. As a facilitator, architects must have good communication skills, a keen sense of touch, and an inclusive and positive attitude. There is no major technical difference between the domestic and foreign architecture designs, but the technical personnel in China pay too much attention to the technology and generally ignore the attention to the business and the emphasis on governance and communication.

In real life, software systems can be described as complex systems. Many people and things are involved in planning, development, maintenance, and change. Architecture design is to take the following things into consideration in the planning stage, and to make efforts for stability, but also to think about maintainability, scalability, and many performance indicators. In addition to technical considerations, we also need to consider human factors, including personnel organization, software process organization, and team collaboration and communication.

The architect must first have rich development experience and be a technical director. It must be clear about what can be implemented, how it is implemented, how difficult it is, and how the system can adapt to changes in requirements. In addition, we need to have a deep understanding of the process-oriented, object-oriented, and service-oriented design concepts, so that we can quickly detect problems in implementation and propose corresponding improvements (Reconstruction) solution (also known as anti-pattern ). All of these require long-term development practices to be truly realized. It is difficult to comprehend from books alone. Even if I understood it at that time, it may not be able to integrate it into practice.

 

In terms of technical capabilities, the most important and necessary knowledge of software architects is the knowledge of component communication mechanisms, including in-process communication (Object Access, function call, data exchange, thread synchronization, etc.) and out-of-process (including cross-computer communication (such as RMI, DCOM, and Web Service ). Today, when web applications are widely used, developers tend to pay more attention to inter-server communication, but less attention to intra-process communication. Inter-process inter-machine communication is the cornerstone of building distributed applications. It is a bird's eye view in architecture design, while intra-process communication is the skeleton of module implementation, and it is the cornerstone. To design a. Net-based enterprise-level architecture, you must first understand the language level, including. Net CLR, inheritance features, delegation, and event processing. Then there is an understanding of common solutions, including ASP. NET web service,. Net remoting, and enterprise service components. In short, a wealth of development practices help architects avoid the high level of effort on paper.CodeWriting personnel brings tangible feasibility.

It is also important to have enough industry business knowledge and business mind. Sufficient industrial business knowledge can give architects more capabilities to embrace changes, and leave some room for expansion during system design to adapt to potential demand changes.

The attention of architects must be put into consideration at the beginning of the architecture design, including communication and Determination of personnel quality.

Architects should always pay attention to the development of new software design and development, and constantly explore more effective new methods, development languages, design patterns, and development platforms for constant and rapid upgrades, software architects need to learn about new technologies and apply them to software system development.
Important Role of software architects
Software architects play an important role in the entire software development process. As the development process advances, their responsibilities or concerns change constantly. In the demand stage, the software architect is responsible for understanding and managing non-functional system requirements, such as Software maintainability, performance, reusability, reliability, effectiveness, and testability. In addition, architects should also review the requirements raised by customers and market personnel on a regular basis to confirm the design proposed by the development team. As the requirements become increasingly clear, the architect's focus begins to shift to the Organization's development team members and the definition of the development process. In the software design phase, the architect is responsible for the design of the entire software architecture, key components, interfaces and development policies; in the coding stage, architects become consultants for detailed designers and code writers, and regularly hold technical seminars and technical training courses. As software starts testing, integration, and delivery, integration and testing support will become the focus of software architects; at the beginning of software maintenance, software architects begin to make decisions on whether new functional modules should be added to the next version of the product.
 
How to become a good software architect

Obviously, the importance of a good software architect should not be underestimated during software development. So how can we become a good software architect?

First, you must have rich software design and development experience, which helps to understand and explain how the design is mapped to the implementation.

Secondly, the software architect must have leadership and team collaboration skills. The software architect must be a recognized technical leader who can make timely and effective decisions on technical choices at key points.

The third is to have strong communication skills. At that time, it seems that any ghost role is the best, and the software architect needs to deal with various Teams frequently, customers, marketing personnel, developers, testers, project managers, network administrators, database engineers, and so on. In addition, many roles need to play the role of communication. In terms of technical capabilities, the most important and required knowledge of software architects is the knowledge of component communication mechanisms, for example, Remote Process calling, javarmi, CORBA, COM/DCOM, various standard communication protocols, network services, object-oriented databases, relational databases, and so on. In addition, architects should always pay attention to the development of new software design and development, and constantly explore more effective new methods. Development languages, design patterns, and development platforms are constantly evolving. Software architects need to learn about these new technologies and apply them to software system development. Of course, the business knowledge of the industry is also very important to software architects and helps design

An architecture that meets the customer's needs. A good software architect often needs to learn and observe quickly to gain an understanding of the industry's business as soon as possible.

The above description is boring, but as a software architect, there is endless fun in the development of the entire software system, because this role is very challenging and sometimes needs to be exquisite, sometimes it is necessary to be decisive and show no mercy. In China, a small number of software enterprises have independent architects. Generally, a software master is a project manager, software architect, software developer, and sometimes a tester, this is detrimental to the software development cycle and product quality. Sometimes, a person's opinion is one-sided, and heavy work and heavy pressure will affect one's mood, sentiment affects decisions and results. Therefore, it is worth thinking twice.

Constructor self-cultivation process

Architects can't do it through theoretical learning, but they certainly cannot do it without learning relevant knowledge. The following is a summary of the self-cultivation process of the constructor, which is for reference only.

1. Framework engineer embryo ( Program Member)
The knowledge learned is the language foundation, design foundation, and communication basis, which should be completed in the university, the content includes Java, C, C ++, UML, RUP, XML, and Socket Communication (Communication Protocol), which are the raw materials required to build an application system.

2. Architect sprout (Senior Programmer)
You can learn about distributed systems and build them in college or in the first year of work, including the principles of Distributed Systems, EJB, CORBA, COM/COM +, and WebService (graduate students can study network computers, high-performance concurrent processing, etc)

3. Architect seedlings (designer)
On the basis of the above, we should thoroughly understand the application design mode based on the actual project experience, including the design mode (C ++ version and Java version), EJB Design Mode, J2EE architecture, UDDI, software design mode, etc. During this period, it is best to understand the application of software engineering in actual projects, as well as group development and team management.

4. The software architect is built on opportunities, personal efforts, and talent. The software architect is actually a job, but after a programmer fully master the basic skills required by the software architect, how to get such an opportunity, how to use the skills you have mastered to apply a rational architecture, how to constantly abstract and summarize your own architecture model, and how to go deep into the industry to become competent for analysis and architecture this is not a pie that everyone can meet ......

 

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.