Coding Architects != Senior Developer

I worked at a company with “coding architects” who were actually senior developers in disguise. It was so obvious that they were more interested in working on some little side project that when as a lead developer on a project that required their guidance I threatened to steal all the semicolon keys from their workstations. In retrospect I realized the difference between a coding architect and a senior developer is primarily one of perspective. The architect should be concerned with higher level, long-term impacts of design decisions and the feasibility of implementing those decisions. Therefore they do need to be fluent and experienced in the domains they are working in. The senior developer is largely responsible for implementing the design and working with the architect to help guide the design and implementation of the system. Honestly, I don’t believe it should be a hierarchical relationship, only the scope of their responsibility should differ.

Unfortunately, most architects fall into two major archetypes. The senior developer cum architect and the manager cum architect. The senior developer architect will tend to become mired in the minutia of their design and instead of working with their real developer colleagues will take on the primary implementation of their design. I think this is a huge mistake. They will inevitably lose any possibility of maintaining a long-term vision. This will make it difficult for the senior developement team from being focused on the implementation and conflict will result from confusion because the one person who was supposed to have their eyes on the road distracted.

I am not saying that the architect shouldn’t be involved in their design development. But that like in scrum with the Pig and Chicken analogy, they should take on the role of a chicken in the development team. They should act like any other developer on the team, in the trenches working to carry out their own ideas and collaborating to improve the design. The should not take over the project or make sweeping design changes without the consent of the team. If there is a major problem with the design they should take a step back, re-evaluate the vision and reason for the decisions and work with the team to readjust.

It is important for architects to be good coders, but they need to beware of being micromanager. Otherwise they are no more than over-titled developers who shouldn’t be handed the reins.