What does it mean for a person to be an architect of a piece of software instead of a building? What does that person do, exactly?
My favorite definition of a traditional architect is someone who guides the construction of a building through writing, sketching, drafting, model-making and collaborating. This is not, however, an accurate description of most software architects. And because of this, all of us that use software are worse off.
The garden variety software architect is more akin to a structural engineer in construction, focusing the structure’s serviceability, performance under extreme conditions and other deep technical details. These are worthy pursuits, to be sure. But all too often, no one is deliberately designing how the user interacts with the software and how it will meet her goals.
Software desperately needs more people that actually guide applications toward those goals using the methods of a “real” architect:
- Writing (especially storytelling)
- Drafting (producing detailed specs if necessary)
- Model-making (prototyping)
Software is not about code any more than the Eiffel Tower is about iron. Lead your team accordingly and call yourself whatever you like.