Sergey Mikhanov  

Wrapping-up the architects topic (March 17, 2010)

The previous post on software architects gained enormous amount of views and comments. I guess I hit the nerve here; the nerve being the career management for tech people. Except for the selected few in the programming world (like Guido van Rossum or Rob Pike or Joshua Bloch) there are almost no engineers widening their field of influence without becoming entrepreneurs, just by being employed by someone. Now I am certain that I am not the only one bothered by that.

Among other insightful things, the comments for that post brought a link to Who Needs an Architect?, a Martin Fowler’s article. I can’t resist the temptation to cite Ralph Johnson mentioned by Martin in the text

One of the differences between building architecture and software architecture is that a lot of decisions about a building are hard to change. It is hard to go back and change your basement, though it is possible.

There is no theoretical reason that anything is hard to change about software. If you pick any one aspect of software then you can make it easy to change, but we don’t know how to make everything easy to change.

Martin writes a bit earlier referencing the talk by economist Enrico Zaninotto

One aspect I found particularly interesting was his comment that irreversibility was one of the prime drivers of complexity. He saw agile methods, in manufacturing and software development, as a shift that seeks to contain complexity by reducing irreversibility — as opposed to tackling other complexity drivers. I think that one of an architect’s most important tasks is to remove architecture by finding ways to eliminate irreversibility in software designs.

Most of the efforts behind the software architecture activity are focused on removing the need for it. I can’t be fascinated more about the extent how this fits into my vision.