The Shiny New Agile Architect

unlike traditional architects, he does not move to a new project after the so-called architectural phase.

An Agile Architect writes system-level tests that stress the architecture.

He writes the infrastructure tests to test the architecture of the system. If there is an architectural hole then the failing test would point to that hole. Since agile promotes testing first, he writes tests to make the system fail on quality attributes and then makes relevant changes to the architecture to make the tests pass. In rare cases where testing is not practical, he thinks of other ways in which he can "test" the architecture. This ensures that effort is not spent around unproven design. The tests confirm the viability of a good design on which effort should be put. Any design decision, however small it may be, is preceded by a test case.

For example, if the system is supposed to meet the desired quality of service at a load of 10000 users then he writes JMeter or equivalent stress scripts to generate adequate load on the system to make sure that the system is performing under that load. If this test fails, then he refactors the architecture to make sure that the test passes. Now after refactoring when the test is executed again, it should be green.

An Agile Architect participates in intense collaboration.

He does not make design and technical decisions alone; these decisions are collaboratively achieved with the team. He has an open mind for ideas and is a firm believer of the fact that he does not know everything and is never protective or defensive about his own ideas. The best ideas come from the team when members brainstorm together; anyone may have a good idea or valuable insight. Open and honest communication helps people to make better decisions based on better information. The Agile Architect is a people person who treats everyone with respect, and promotes every opportunity to learn from each other. He promotes consensus and allows everyone on the team to contribute to the solution.

If a business sponsor explains the goals of a project and the architect proposes a single solution immediately, you're probably not working with a true architect.

An Agile Architect is a rock solid mentor.

This is a trait which has no bounds. He constantly works with the team to improve its decision-making abilities. This eventually helps in giving the Agile Architect better leverage than being the sole decision maker on the project. He utilizes his team better by guiding the team on new technology, building and providing support for technical frameworks. He makes sure that the team doesn't simply reject a design due to lack of experience or discomfort with the techniques/technologies. If that is the case, he bridges the gap for the team so that they can make informed decisions.

As Martin Fowler puts it "This leads to the satisfying rule of thumb that an architect's value is inversely proportional to the number of decisions he or she makes." [i]

An Agile Architect is a deft mediator.

Agile teams include skilled and passionate team members. Frequently, there are differences of opinion on a design decision, the best way to implement a feature, ways to improve the development process, etc. These differences of opinion may lead to heated exchanges and may result in hard feelings if not handled quickly and effectively. On these occasions, the team members need a mediator who has more experience, maturity, and knowledge to help the team and break disconnects. The Agile Architect is a perfect fit with his level of maturity and experience.

An Agile

Tags: 

About the author

TechWell Contributor's picture
TechWell Contributor

The opinions and positions expressed within these guest posts are those of the author alone and do not represent those of the TechWell Community Sites. Guest authors represent that they have the right to distribute this content and that such content is not violating the legal rights of others. If you would like to contribute content to a TechWell Community Site, email editors@techwell.com.