Building Houses

This is a common analogy to building software, I thought I would use it to draw a distinction between programmers, software architects, user interface designers and graphic designers.

These four groups of people represent four distinct skill sets. Let’s see how they do building a house.


The programmer will talk to the house owner and ask them what features the house needs. They will come up with a list: bedroom (main), bedroom (second), bathroom, toilet, kitchen, lounge, dining room, passage way, garage.

The first thing they would notice is the number of features required form a perfect square (9). Excellent! So, they will design a house with 9 identically sized rooms in a perfectly square house:

Every room would have at least two doors leading into two of the adjacent rooms. Because it is perfectly symmetrical, there will be four doors in to the house and eight windows.

The foundation would be well made, and the plumbing and electrics all concreted in at an early stage. The house would be able to withstand a nuclear blast and would be designed to work under water to a depth of 100 metres.

The toilet would be in the centre of the house, because that’s the room without any sunlight and the developer wants to be sensitive to the users’ needs. There would be no plaster and no paint on the walls. I mean face brick never went out of style did it?

Software Architect

The architect would not need to hear the user’s requirements, but they might jot down on a piece of paper those things they might want in a house of their own. They would probably get the features right, at least the main ones.

The house would be built like a doughnut. All rooms would have a door opening out into the centre of the doughnut (the passageway). All the doors in this round passageway would be clearly labelled. However, the labels will be written with a whiteboard marker.

“You see, the beauty of this design” (the architect excitedly explains to the customer) “is that you can very easily change which room is which, to suit your particular need or lifestyle.” The walls between rooms will be on a cleverly designed wheel system so that you can make every room smaller or bigger. Every room will have fittings for 2 hot and 2 cold taps as well as 4 power outlets. The plumbing and wiring will run in concentric circles in the foundations of the house, enabling any configuration the user desired. There would be extra conduits in the floor and ceiling for more wiring in future.

Although only one toilet would be installed, there would be plumbing just under the carpet to allow the user to quickly add more toilets in whatever room they desired. “You could have a toilet in every room!” the architect intones dramatically “I might even get one for myself”. Of course, the toilet fittings interface perfectly with standard plumbing so you could turn your toilet into a Jacuzzi.

As you can see, there is no entrance to the house because having an entrance breaks the flexibility of the architecture.

User Interface Designer

They would spend a great deal of time talking to the user and finding out about their requirements. They go live in the user’s current house and watch them sleep, eat, and go to the toilet. Because of this extra care and attention, they would be the only ones to figure out that the toilet should be in the same room as the bathroom and they would be the only ones to design a main en suite.

The house would be a marvel of easy living. Everything would be in its place with clear labelling. All colours would be consistent (light grey, grey and dark grey) with contrasting colours used so that even partially blind people can find the doors.

The indoor outdoor flow would be great and the doorways would all flow in such a way that all of the authentic tasks one would want to do in the house are easily achievable.

Of course, there would be no plumbing and no electrics. The house couldn’t actually be lived in. You see it was prototyped in paper-maché and it dissolved in yesterday’s thunderstorm.

Graphic Designer

The graphic designer would ensure there are lots of walls. Walls are important parts of houses because that’s where the paint goes. The “rooms” would be designed to lead the eye from one part of the house to another. In fact, the house would be one never ending surprise. You may one day lean against a wall and discover a special toilet left there by the designer as a bit of visual interest.

No rooms would be labelled, in fact, if at all possible, the rooms would move a little every night so that the visual experience is always a little fresh and interesting. The colours, texture and alignment of all the walls would be carefully planned and executed.

There would be a water feature down one wall that doubles as a urinal “now that is form and function” the designer says gleefully. “I slept in the great room last night and it was an amazing experience, the acoustics are great, you can even hear the cows from across the other side of town”.

The décor would be trendy yet sophisticated, bold yet understated and the lighting alone would set you back half a million dollars.

Of course, you would die of exposure if you tried living in this house for more than a week.


The moral of this story is simple. In order to build effectve software you need many different people with different skill sets: Graphic designers, user interface designers, programmers and software architects. You may be lucky enough to find someone talented in two or three of these areas but anyone who claims to be good at all of them is either incredibly gifted or is kidding themselves.

How do you make these parties see eye to eye? Well, you need a project manager and a software development process.