Teams who embrace the idea of software architect as a way of thinking instead of as a role on the team produce better software. When the majority of the team is an architect, the team can explore more design decisions faster. Software quality increases since more eyes can critically evaluate design decisions. Documentation is leaner and conveys more knowledge with less effort.
When everyone on the team can design architecture, everyone feels a greater sense of shared ownership over the design. The software becomes our system, not the system. Change becomes easier to manage since everyone understands the intent behind the design and feels a sense of responsibility for maintaining design integrity. Development velocity increases thanks to less rework, improved quality, and more efficient communication.
With a greater sense of ownership comes increased happiness, which in turn amplifies engagement in the whole software development process. When we design software together, we create force multipliers that accelerate our ability to ship amazing software. The benefits are amazing, but it’s important to remember not everyone is ready to accept more design responsibilities.
It is our job to nurture our team’s design skills while at the same time designing an architecture with them. We must empower our team while at the same time ensuring we design an appropriate architecture that lets us ship value-adding software for our stakeholders.
We accomplish this by providing just enough guidance to keep the team on track without requiring that we oversee every design decision. We build skills. We improve trust. We make it possible to recover from mistakes. We try to stay a few steps ahead of our team so we can shepherd them away from traps and pitfalls.
18.117.102.248