4 agile best practices every enterprise architect should follow
The architect's role in an agile team is challenging, and not well defined. Neither agile nor Scrum principles offer a clear definition of the responsibilities. But the role of an architect in agile is important.
Agile transforms the traditional command-and-control mechanism—with all its rules, guidelines, and standards—into a democratic process in which everyone on the team has the freedom and flexibility to design a system. With no architect, things become ugly as the sprints go by, and managing the code becomes a nightmare if you have no standards and no framework in place.
Traditionally, architects have designed and created solutions and recorded them in documents. Such documents were extensive and made available before the project's development phase.
But in an agile scenario, architects work on epics and user stories in the product backlog and provide the best solution. They need to see the bigger picture and make global design decisions after having discussions with the product owners and agile teams.
Here are the best strategies and practices every agile architect should adopt to be successful.
1. Define the architectural vision
Agile architects define the architectural vision, aligned to the organization's business goals and strategic objectives. They also define the technical direction, keeping in mind key constraints such as scope and budget. They choose the right solution for the enterprise and design an architecture that is testable and adaptable.
To achieve this, architects need to know the stakeholders' needs and goals, as well as the constraints. The architect should be agile in the approach toward modeling and documenting design and architecture, while at the same time working closely with the sprint teams.
2. Choose the right technologies and tools
The choice of tools and technologies is very important in agile. The architect should take the lead in helping the team choose the right tools and technologies, but should not dictate the tools and technologies to be used. The agile architect should involve people when making decisions, and collaborate and contribute when needed.
3. Plan for change
An architecture that cannot handle change is fragile, not agile. The agile architect must plan for change, be able to manage change in a controlled way, and understand the costs involved.
The architect should encourage comments and suggestions and should not be protective of ideas; the architect must embrace change and be open to feedback.
However, the architect should not accept change without considering the impact and cost of the change. The architect should be able to come up with alternatives.
4. Socialize, collaborate, motivate
The agile architect should build relationships with the team members. Socializing is critical for agile architects to be successful. Failure to socialize might well be a reason for failure of the agile architect in an agile team. Hence, the agile architect should be adept at communicating and collaborating within and across teams.
The agile architect should communicate with stakeholders to understand their goals, requirements, and constraints.
It is imperative that the agile architect communicate the architecture so that everyone in the team is aware of it. The agile architect should spend time with teams, motivate the team members, and be able to gain respect and trust from them to be successful. The success of an agile team thrives largely on shared understanding, knowledge, and collaboration.
The agile architect need not be a problem solver. Rather than solving problems, the agile architect should motivate, guide, and mentor the team so that its members can solve the problems themselves. The architect should make design decisions together with the team. Design ideas should evolve by grooming the product backlog together with the team.
Lead from the front
Agile architects should serve as evangelists who influence team members, communicate the design and architecture to the team, and take the lead when it's time to choose tools and technologies.
Unlike in a traditional waterfall model, agile architects deal with much higher levels of uncertainty, change, stakeholder interaction, and risk management issues. They typically have many roles to play, but helping the team work in an agile manner is of the utmost importance.
There's no room or scope for an "ivory tower" architect creating architecture and design specifications. Rather, the agile architect should work closely with the team; understand the goals, requirements, and constraints; and lead the team from the front.
To be successful, an agile architect should be pragmatic, be able to deliver business value, maximize stakeholder value, and manage change and complexity.