Architects are a new profession in the software industry. They are responsible for converting customers' requirements into standardized development plans and texts during the development of a software project, develop the overall architecture of the project and instruct the entire development team to complete the plan. The major task of an architect is not to write specific software programs, but to work on a higher level of development architecture. He must be familiar with development technologies and have good organizational and management skills. It can be said that the quality of an architect determines the success or failure of the entire software development project.
The architect is actually the general designer of the software. The chief designer is the chief designer. For example, Deng Xiaoping is the chief designer of China's reform and opening up. We can use the current statement to explain that Deng Xiaoping is the chief architect of China's reform and opening up. The formation of architects must have been accumulated in practice, rather than several training courses. After reading a few books, architects can succeed. Architects are trained in engineering practice!
Architects are not omnipotent either. Architects serve as a bridge between customer needs and developers. In the software industry, the architect is a technical architect, ignoring the concept of a domain architect or a domain engineer. A good expert in the field must be an architect in the business field. He can give the architecture of a business field. We can call it a business architecture, only when the technical architecture and Business architecture are closely integrated can a good system be created!
In recent years, the software field has gradually become popular with architects, especially for the development of some large software products or projects. This role is critical, there are countless examples of project failures due to lack of good software architects. An inexperienced and competent architect can speed up project failures.
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 customer needs, good software architects often need to learn and observe quickly to get an understanding of the industry's business as soon as possible.
The above description is boring, but as an architect, there is endless fun in the development process 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 (programmer)
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 ......