One of the problems of the software development industry, is non-software people making decisions about software builds. Many of these people believe that building software is like building houses, which it is not. People see the software business, approach it like building a house, specifying upfront and asking when it is finished. Assigning project managers as general contractors and hiring cheap labor to execute the build. I can hear some managers who are reading this think: Wow! Can we do that? That is the answer! No, it is not, we tried it for more than a decade and it failed spectacularly. They even came up with a name for it: “out-sourcing”.
But even though we move from Big Design Up Front (BDUF) to Agile the analogy of building houses is hard to get rid of. Yes, we know we do Agile with sprints, no deadlines just sprint goals and a backlog with user stories and a road-map with epics. But we are still building a house. Well.. no.. we are actually not building a house. The whole house analogy is wrong. We are building a LEGO house. Yes, something like this:
Was it a coincidence that Paul Hammant used a LEGO picture in his post about software architecture? I think not. Here are some of the points that show why building LEGO house is a good analogy for building product software:
- Innovation: Best builds come from experimenting constantly and thinking out-of-the-box.
- Flexible: LEGO house foundations can be replaced carefully. Anything can be replaced any time.
- Looks: Building a pretty LEGO house is very hard and requires special skills.
- Agility: There is no such thing as a “done” LEGO house. It is alive and constantly changing.
- Requirements: You don’t plan building a LEGO house. You know what you want when it evolves.
- Specs: LEGO is enjoyed best by building whatever comes to mind, not by following specs.
- Compatibility: Everything connects to everything, with hardly any effort.
- Freedom: LEGO can be build without having to comply with all kinds of regulation.
- Creative joy: Creating software is as much fun as creating with LEGO.
- Value: People pay for the promise of easy integration and high flexibility.
- Validation: A real-life test by the target audience tells you things you could not imagine.
- Mindset: Grown-ups do not understand LEGO, like business does not understand software development.
- Out-sourcing: If somebody else builds your LEGO house, you will get something you don’t like.
- Standards: Build with non-standard blocks and you’ll get stuck quickly.
Can you think of other things in which the analogy is right? Use the comments! Don’t comment saying that I do not take software development serious. I believe that software development is a serious business, but it is also seriously fun. To put it stronger: If it does not remind you of playing with LEGO when you were still a kid, you are doing it wrong.