Many architects are gradually transitioning from good developers, but not every good developer wants to become an architect, and not all of them are suitable for architects. Whether you are a developer planning a career transition or a manager looking for the right person to take responsibility for the architectural design, you must have a clear understanding of the transformation process. This article will discuss the transition from expert to architect.
When looking for good command, you first need to find a good music performer. But not every music performer can become a good conductor. The Professional Development of architects is similar. More and more IT organizations are beginning to recognize the importance of a good software architecture, and the architect profession is rapidly evolving into an independent category in it. As architects are to be recruited from a very small range of candidates, this brings some new challenges to management. Even if the human resources department finds candidates, experience-based filtering is more rigorous than other categories. The fastest way to overcome these obstacles is to realize that most good architects are good developers at the same time. Therefore, when looking for architect talents, you may first need to find common developers. This point of view should be taken into account by recruiters during a detailed review of candidates (internal or external. However, it may be difficult to select such resources because only a few outstanding developers have the characteristics or aspirations to become architects.
This article lists the work that developers need to do to become architects. I will discuss this issue from two aspects: developers who may consider this transformation and managers of developers who evaluate it. I will also provide a series of factors to consider when making these decisions.
Personal Characteristics
The connection between the software development team and the management team is always a key aspect of it. Both of them tend to consider the given problem in a completely different way. Most of the related technologies discuss how project managers track and explain developers' progress and problems. However, insufficient communication is still common, and this is the primary cause of project failure. A good architect is the most effective solution to this problem. The primary responsibility of architects is to provide shared communication media between developers and project managers. They are responsible for adapting business rules and requirements to engineering practices and restrictions to ensure success. The following are some of the main features of a successful architect.
Willingness and ability to communicate: Developers find that the most valuable criterion for architects is effective communication. You need skilled and experienced developers who need to have experience communicating with the business issues in the project. Architects often have to predict the gaps in understanding before they can contribute. They must be willing to overcome the difficulties to ensure the integration of technology and business perspectives. They do not have to plan and coordinate the exchange of views; this is still the work of the Project Manager. Their task is to determine the best tools and components for expressing system design to facilitate effective exchange of views. They must be able to determine whether the current method is insufficient and the new method is required. Writing skills are also very important. You also need to be able to make a sketch or use the drawing software.
Experience in handling negotiation details: architects often need to discuss technical trade-offs for system development. A conflict of priorities may lead to practice restrictions, risk avoidance, or may lead to different requirements between different business groups. Excellent Architects can effectively assess technical possibilities and develop development plans to deal with various interests and restrictions without compromising the project's main value. This is closely related to the communication skills discussed earlier, but it must also reflect the technical capabilities of architects. Good candidates for architects should be those who often help guide controversial discussions, so that new ideas can be discussed without getting stuck in a single position.
Proactive and proactive design solutions: the architect's daily work objectives are often unclear. Many developers directly refer to the functional specifications to list tasks. Architects usually provide these developers with the structures they need to improve their work efficiency as much as possible. Good candidates not only conduct communication work, but also anticipate various design issues and solve them-they are generally consciously carried out without any specific instructions. Regardless of the assigned responsibilities, developers who actively participate in the project have the opportunity to stand out from those who work together.
Abstract thinking and analysis: architects must be able to understand vague concepts and turn them into project components that relevant parties can understand. They must be able to understand abstract concepts and communicate with them in specific languages. Good candidates among developers often require or actively explain problems that are easy to confuse during the development lifecycle. They can quickly evaluate various ideas and incorporate them into operational recommendations for subsequent work.
Developers often have strong mathematical skills, while good Architects tend to show stronger verbal skills. Managers often say that developers are "engineering aware", which is a very meaningful aspect for evaluating architects. Architects should be able to solve technical problems, but they must be able to obtain more comprehensive information about how people interact with the technology. This requires a certain form of abstract thinking (insteadCodeDetails), this kind of thinking ability may be difficult to form.
Some people think that a certain level of formal education is one of the essential conditions for becoming a good developer. I do not agree with this kind of elites. I met many outstanding developers who dropped out of school. However, my personal experience in Architecture Design and my understanding of the required capabilities make me believe that good architects usually earn at least a challenging bachelor's degree.
Tracking Lifecycle
Good architects usually have experience in organizing and working with well-defined software development life cycle (SDLC. Architects must understand the most important operations in their major. This does not mean that there are other prerequisites, such as the absence of working experience at the Capability Maturity Model (CMM) level. Good architects may come from organizations that use SDLC's multiple eXtreme Programming (XP) methods for small iterations. Pay attention to a variety of traditional software development operations, such as Michael A. Jackson's method: Jackson structured programming, JSP) and Jackson system development (JSD ). Jackson's research on architect career development is like Donald knuth's research onProgramMembers are equally important. Architects may prefer any classic, time-tested software system development method.
SDLC can also be a useful mechanism for evaluating suitable candidates for architects. Each SDLC stage has the characteristics that can provide relevant clues. SDLC contains many small variants, but in this section, I will use the public basics of almost all methods. The following list details each stage of SDLC and lists the characteristics of good architect candidates in each stage.
Analysis: During the analysis, good architects will consider non-technical influences to understand the requirements and the environment in which development will be conducted. Architects can provide extensive software experience for risk assessment tasks for reference. Find experienced developers to help the business department understand the information required by technicians to correctly interpret the requirements. Find the developers who can predict possible problems in the early stages of development.
DESIGN: during the senior design period, a good architect will collect and communicate with each abstract element of the problem space, so that the development team can draft relevant charts of the system to be developed. Architects are responsible for carefully ing requirements to the functions of the obtained system architecture. During the detailed design, the roles they play are not core roles, but they are still needed to review the elements of specific modules according to the rules of the entire system. Find developers who are good at allowing the team to predict the impact of design decisions on the final system. Find developers who are good at identifying some of the best components to facilitate communication with technical and non-technical audiences on design issues.
Implementation: during implementation, the architect guides the project to ensure that it complies with the system architecture. They assess technical change requests on the front-line and determine how to adjust the design to best handle such requests. Architects also need to closely understand the progress of developers, especially to track the status of integration points between modules in the system. Find developers who often guide the discussion to connect multiple subsystems. Find the developers who can rely on the project manager to quickly evaluate risks related to changes and problems.
Test: The architect guides system integration and user acceptance tests, and is responsible for evaluating the progress of correct communication of continuous test results. Find a developer who understands the error pattern and is good at converting test review results into action plans.
Maintenance: during maintenance, the architect will initiate a discussion about system integration. Whether dealing with IT infrastructure problems or ensuring technical cooperation between departments, architects must fully understand applications and quickly learn the architecture of Sister applications, in addition, effective communication between integration points and risks is required. Find developers who have system integration experience and have the ability to quickly master the entire picture. System integration is a unique task.
Suggestions for architects
Some organizations can conduct architect training more effectively than other organizations. It would be wise to make efforts to encourage developers to develop into an architect environment, taking into account the difficulty of recruiting such new professionals. However, you must avoid penalties for unwilling or unsuitable developers. The organization should develop multiple development routes for developers, including those who are willing to continue serving as developers. For architects, Senior developers are indispensable. They can implement the most critical modules in the system. By providing code check and testing support to other developers, they can help ensure the overall quality of the software, and if the quality is not guaranteed, even the best architecture is useless.
The organization should develop personal assessment procedures to encourage developers to consider their career goals, including options for architecture design. Managers should be encouraged to find architecture design talents among their subordinates. A guiding plan should be implemented to allow architects to work with developers who wish to become architects. Developers should be encouraged to participate in various associations and writeArticleAnd participate in meetings to participate in professional fields. In this way, developers can understand the system from a new perspective and help them better communicate with each other. In this way, we can also cultivate important innovative ideas that can improve efficiency.
Conclusion
Once developers take the first step towards the architectural design expertise, they can use a lot of resources to get help, including a lot of resources from IBM. Sometimes, the most difficult part of this process is the first step. This article provides some clues and tips that managers and developers can use to evaluate who should be encouraged to become architects.