The closest analogy I’ve been able to come up with is “A builder is to an architect”.
But when I use this analogy I get some push back. “Wait a minute,” they say, “a builder can create a house without an architect.” It’s true – many builders do build houses without architects. A lot of them work from plan books or pre-made drawings. Many also draw upon their years of experience in home building: once you’ve built a house, it’s not that hard to figure out the things that work well, and there are certainly lots of houses to draw upon. Many of these houses are just fine. So did they need an architect?
It’s an analogy, folks. It isn’t perfect. There are some key differences:
- Houses, unlike software, are all generally similar. They need bathrooms, kitchens, bedrooms, and living rooms. There are certain well established standards for the sizes and configurations of these rooms and a home builder can draw upon these well established patterns to create an acceptable house. Software is much MUCH more diverse. Each piece of software can be wildly different from another, so it can be hard to transfer skills. It would be like asking the same builder to make a residence, a skyscraper, and a green data center.
- In addition, any one piece of software must serve the needs of thousands of users, not a single client. So building a residence is comparatively easy: you just have one person to please. Software has many users, all of whom need to be considered in the design. We handle this by aggregating users into personas and designing for them, but many projects have multiple personas.
- Finally, the process of building software is ongoing, unlike building construction, which generally comes to an end. Renovations aside, most builders work until the structure is finished, then they are done. Imagine a builder that is called back week after week to add more and more to a building and you start to see how building software can be tricky.
In order to make this analogy really work, we need to tweak it a bit:
- Let’s imagine that we’re not building a house, but rather a library. And let’s imagine that although our builder is very skilled, he’s never built a library before.
- And let’s even the playing field: the architect, although she is very skilled, has never built a library, either.
This, I think, is a little more representative of what the software experience is about, and reveals how an interaction designer is like an architect, and the software engineer is like the builder. To be successful, these two will need to collaborate and both will need to draw upon their skills.
The builder will need to apply his knowledge of materials and building practices to create a library that will last 100 years. He’ll know what loads the walls can bear, how large the spans can be, how to increase energy efficiency in the walls and roof, ground water conditions, soil and water considerations, and what subcontractors to hire to do the best possible work throughout the building. He’ll be in charge of the schedule, the materials, and the staff who are building the structure. He’ll even decide what tools the team will use and how to allocate the work among the individuals. Ultimately, he is responsible for the final structure. His team’s hands will be what creates it.
The architect’s will work closely with the client and the people who will use the building. She has to establish requirements for the building: how many people will use it at a time? What kinds of spaces do they need to use and for what purpose? What sorts of needs to the staff have? What needs do the patrons have? Are there special events that need to be accommodated? She’ll work with the building’s users to establish design goals and parameters. Then she’ll develop designs that meet these needs.
While designing, she’ll consider lots of things. What spaces should be near one another, and which ones should be far away? Everyone entering the building needs to pass by the front desk, but the staff working at the front desk have many requirements for their space that need to be accommodated. She’ll consider the effects of lighting, sound, and even smells. How can she create social spaces, and quiet corners? The architect may not have designed a library before, but she will drawn upon her knowledge of design to create a space that meets its users needs. She will work closely with the builder along the way, making sure that her designs can actually be built, and looking for ways to save money and cut costs. She’ll also work with the landscape designers and interior designers to put the visual touches on the building, both inside and out.
This is, in my mind, very much like the relationship between a UI designer and the software engineers they work with. Both bring essential skills to the table and when they collaborate the results are a thing of beauty. Would love to hear your thoughts – send them via Twitter!