Should Software Architects code?

Juan M. de Hoyos photo By Juan M. de Hoyos Comment Permalink

Tough question. Should Software Architects write code like developers do? Should they be part of the development team? The question has been around for years and still there are strong opinions.

Some years ago, this article from Martin Fowler Who needs an Architect made a clear distinction between two types of Architects. The first one is confined in its ivory tower throwing tons of UML pages down the developers which little or no sense of whats feasible or not. That what Fowler called Architectus Reloadus, as analogy to the Matrix Architect from the cult film Matrix.

The second and opposite was a coordinator between all project stakeholder, mainly developers, project manager and product owner. This kind of Architect makes sure the design has been understood by all parties and proved to be realistic. Tries to reach consensus among stakeholders and supports the development during the project.

I believe the latter describes much better what a Software Architect is suppose to do. Sure there are legions of Architectus Reloadus in many companies, but their contribution to customer value are close to zero.

Clarified the role of the Software Architect , let’s go back to the question in the title of this post: should she write code as anybody else in the development team? In my opinion, it depends.

In projects of small complexity or those that have reached a certain level of maturity, the architect can be a senior member of the development team, skilled enough to conceive the new functionality in her head and point the team into the right direction. In that case, this de facto architect will code as anyone else. This is the approach followed by many companies were there isn’t anyone with the title Software Architect in the business card but there are people which cares about the big picture.

Having said that, beyond certain level of complexity, the role of Software Architect becomes a full time job. Coordinate a mid-size team, keeping an eye on the development and integration stream, and feeding the project management with regular updates leave not too much time to other activities. In such projects, having the Architect coding a significant amount of the functionality lead to have only a part-time architect, which definitely affects deadlines. At the end, the Architect is almost always in the critical path of the project. Slowing her down means slowing the whole project down.

Additionally, a good programmer needs quietness and isolation to focus in the code. This is not always possible as the architect is usually the most interrupted person of the team. Switching contexts during programming leads to sloppy code.

I believe that a Software Architect must be able to code her own designs. But it does not mean she has to. A Software Architect must be always ready to open her Laptop and speak with the developer in their own language (in the broad sense of the word). That makes them respected and accepted in the team as an equal. We all know developers only like to talk with their equals.