Wednesday, July 30, 2008

Architecture?

I’m an IT Architect. This makes it fairly difficult when people ask “what do you do?”. Generally, I just say “I work with computers”, which is true, misleading and, often, all the information that is necessary to provide. If I say that I am a software architect, the common response is to ask about CAD systems and techniques for designing buildings.
There have been several attempts to define the role of architecture in the IT industry. The one that I most recently saw was IASA who are trying to get it recognised as a profession, along with things such as accountancy, medicine, teaching etc. This is a goal which carries a number of implications which I am not going to try to go into here – their web-site has details if you want to follow that line.

None of which has any impact on the normal person that you find at a suburban barbeque. They still have no idea what you are talking about. If this person does have any further interest (which is unusual but not unheard of), it is useful to have a convenient metaphor at hand.
Personally I tend to go with the obvious analogy to building architects. Most people have some idea what they do but not enough for any pre-conceived notions to get in the way. As an alternate example, using medicine – such as Brook’s surgical team analogy (from Mythical Man-Month) - leads to more confusion than anything else. Everyone *thinks* they know what a doctor does, especially when they don’t.
But an architect? The use of the construction industry as a metaphor to computing has a long and distinguished career; starting with the term “Software Engineering”. There are all sorts of points where the analogy breaks down. With software the actual building is the simplest step and is fully automated (it is called 'compiling'); the construction is not placed on the site until after it is complete; and every new construction has some significant difference from every other construction. But none of these matters when you are describing your job, in 25 words or less, to someone who is making polite conversation.

When making the analogy I tend to put something like this:
Someone putting up a garden shed can, if they are handy, do the job themselves. Building a house requires a team that includes a number of specialists (plumber, electrician, etc). It usually benefits from having an architect but a senior designer is sufficient. For a 50 storey office block, you had better have a team of architects – many of them specialising in some aspect of the construction – and a single guiding view of how the finished product will look.
Similarly, a simple web-site can be put together by an average person with a bit of computer literacy. A well designed business application requires a team including specialists such as a database expert and a UI designer. It would benefit from architectural input, especially if it interacts with any other applications, but, depending on the size, you can get away with just a technical lead. A business critical application which operates at the enterprise (read - big company) level and services thousands (millions) of people requires some serious designing and oversight – and a single conceptual view is essential.

There are a number of key differences which also be covered. The construction industry has been operating for several thousand years; the computer industry has been in existence for only a few decades. Software is enormously more tractable than hardware (hence the name) and the limits of imagination are therefore more important than the limits of the available materials.
But there are also a goodly number of similarities. I have heard a number of comments about how difficult it is to correctly estimate for software. Engineers are notoriously optimistic about how long a project will take and how much it will cost. I have read a number of articles about how this is due to the nature of software and the fact that each new project is entirely new – by definition no-one has built it before (else they would just create a copy) and therefore estimation is very difficult. I used to believe this. Recently a major upgrade occurred to the railway which connects our town with the nearest capital city. The original estimation was $80m. Apparently the final cost, after all was said and done, ended up at $750m; and took a year longer than expected. The IT industry is not the only one that has trouble correctly estimating costs!

No comments: