This blog has been moved to

Sunday, January 28, 2007

What every software manager needs to know about software architecture

If you are a manager in a software company, and you enjoyed the "Conjunction, Junction, what's your function" videos on ch 9 when you were a kid (or whatever channel they played Sesame Street on), you should watch this video!

Architect Video

Obviously somebody has too much time on their hands :).

I have to admit that I'm not sure that comparing software architects to building architects makes a lot of sense. Though perhaps the differences are more of a matter of degree than of kind. The basic job function for both types of architects is to plan a project to make sure it addresses the customers requirements, doesn't violate any regulations, and can be constructed within a reasonable amount of time and cost.

However, the actual environment that the two types of architects work in is very different.

There are no regulations on who can become a software architect. Building architects must obtain a licence and only after having received specific certifications and experience. Although most software architects have previous experience as developers (hopefully they all do), few have any certifications that mean anything in the industry. The field of software is so new and changing so rapidly with so few regulations (and those are changing fairly rapidly as well), it would be difficult to create a licensing process that wasn't obsolete before anybody could even achieve it.

There is usually a considerable amount of difference in the education and experience of a building architect and the people who will construct the building. The building architect must be very detailed and consider all of the implications of any design decisions. However, in software, the difference between the architect is usually only a matter of number of years on the job and aptitude. Software architects often just produce high-level designs and the developers produce the detailed designs (I'm sure there are many exceptions to this, but this has been my experience).

Unfortunately, there are many software projects where the planning was left to personnel managers and inexperienced developers. This has led to software being written on an extremely shaky foundation. Typically this just means that developers have to work extra hard to make things appear to work smoothly to end users. A building cannot be placed on a shaky foundation. It would be condemned.

Not as much time is put into the design of a software system as you would put into a building. This is because the cost of making a mistake with software is far less than the cost of making a mistake when designing a building. In fact, their are design techniques in software that allow the building of a system without doing very much up-front design at all (such as Extreme Programming). I don't believe this would be possible when designing a building.

Of course, the video is trying to explain the need for architects to people who probably don't really know anything about software architecture, so the analogy might be appropriate for that level of ignorance.

Check out Wikipedia for more information about building architects and software architects.

No comments: