The Agile Solution Architect: Refactoring in Scrum Software Development

Image of Scrum product or software development code used on agile teams when refactoring code.

I’ve been preoccupied with the question of how a solution architect fits into an agile team.

First — like many folks just about to transition to agile — I thought that the solution architect defined the solution architecture artifacts before the team could start anything else. After all, how does a team implement anything without the artifacts required to guide the design and implementation of various components, and modules of such complex systems? So the solution architect would operate mainly in the period before the team starts the sprint or the implementation.

Inadequate Designs in Software Development

While gaining hands-on experience with agile and Scrum, I was involved with technical practices, such as code refactoring. However, as we were refactoring a piece of legacy code, we realized that the design was inadequate. I imagined three cycles/loops similar to a Russian doll model — the code refactoring loop is contained in a larger design refactoring loop. And when the latter loop proved inadequate, we would use an architectural refactoring loop to course correct. (Note: This is not meant to suggest sub-teams!)

So now we bring our friend, the solution architect, back into the power seat on the agile team. Their absence or focus elsewhere can put their meaningful contribution to a proper refactoring at the architectural level under question, given the likelihood of the lack of context; lack of understanding of the current state of software, solution, or systems; and lack of understanding of the team’s skills, to name a few of the challenges! Consequently, it is important to keep the solution architect on the team.

But wait! Why haven’t I found the role of agile solution architect defined in the literature and in the community at large? What is everyone missing? Oh, I get it! I’m the one who forgot that in agile teams, we need T-shaped professionals who collaborate and share responsibilities for the lifecycle of the product and contribute to the best of their abilities to all aspects and phases of delivery. With this in mind, I’m ready to shape up my proposal for a solution architect.

The Solution Architecture Skillset as the Answer

Solution architecture is a skill most software teams need. The folks arriving on an agile team with a solution architecture background should step up as the custodians of solution architecture! They bring with them a significant amount of experience, knowledge, and skills about the technology, tools, practices, and solutions in place. These skills and knowledge provide the team with the technical leadership required to define and follow the architectural principles for the implementation of the solution and nothing more — no artificially defined artifacts, rules, or principles that could impede the implementation or deviate it from delivering the most amount of business value often and frequently.

For this structure to function optimally, the person who brings solution architecture skills to this model must act as a trusted custodian of the solution architecture, instead of as the owner of it. The individual must consider the input of everyone on the team and guide the development of the architecture, in an iterative and incremental fashion, just in time, and in parallel with the development process.

Instead of telling developers what the architecture is and how they should execute their design, development, and other tasks, they should collect the details to assemble the current state architecture and drive the team efforts to understand target states, the next steps, and the architectural direction for the day-to-day work.

Developers acting as solution architects can also contribute to:

The creation and refinement of user stories and acceptance criteria

The definition of detailed designs and data models

The implementation of advanced technical practices (e.g., pair and mob programming, test-driven development, and continuous integration and delivery)

And nothing is stopping them from pairing with developers to code some of the components and modules required for the implementation of the solution.

As much as this is a demanding perspective of their daily work life, this modus operandi constitutes an amazing target for the high-performing agile architecture custodian! And nothing is stopping the product owner, ScrumMaster, or any of the developers on the agile team from supporting this role.

 

About Horia Balog

Balog is a DevOps specialist and senior solutions architect. He offers more than 20 years of experience leading complex organizations and initiatives in telecom, financial services, public sector, etc. in the areas of eCommerce, identity management, CRM, enterprise-level SOA programs, and application/data integration initiatives as well as in-depth experience with implementing CI/CD, TDD, automated deployment and testing and other agile technical practices. His areas of expertise include agile team coaching, agile technical training and development, agile technical practices, test-driven development, automated testing, continuous integration/continuous deployment, and enterprise and solutions architecture.

 

RL_257_agile-solution-architect-refactoring-scrum-software-development
Stay Connected

Get the latest resources from Scrum Alliance delivered straight to your inbox

Subscribe