This is the first in a series. Software development is software development, it has its own unique challenges and it is not exactly like building a house or any of the other things that I will be comparing it to. But there are analogies that can be drawn, and I think they can be constructive, or at the very least, entertaining. So here we go.
Software Development is Sometimes Sorta Like Building a House
- If you put the drywall up before the plumbing is in, you will tear down the drywall to put the plumbing in.
- It is hard to envision what the final house will be like until the drywall is up.
- You may be eager to put up the drywall to feel what the final product will be like.
- This desire will be strongest if this is your first house.
- If this is your 500th house, you will fire anybody who puts up drywall before the plumbing is in.
- Maybe you could attach the drywall temporarily with easy-remove attachments. The drywall will get damaged, and the easy-to-remove attachments will be in the final house. The ultimate owner of the house will not be happy when his ceiling falls on his head while he is reading the Sunday paper.
- Every house is unique. Every house is the same.
- If you are in charge of building a house, there have been milliions built just like it.
- The house you are building is unique. It may even be a one of a kind design envisioned by a famous architecture and design firm.
- No matter how unique your house is, there are expectations for it
- The house will not fall down
- All doors will close tightly and reliably
- The electrical system will be sufficient and meet local standards and codes
- The house will not be in danger of catching fire during normal use
- The house will be visually appealing
- The front door will be on the front
- The garage door will open automatically
- If you keep enumerating the requirements for your home, you will find that this construction project is almost exactly like every home ever built.
- There are companies that build homes like this every day.
- Some of them are wildly successful, profitable, and have highly satisfied customers.
- Some of them go bankrupt, get sued, and have dissatisfied customers.
- The successful companies do things differently than the unsuccessful companies.
- What the successful companies do is usually no secret.
- It is sometimes hard to believe that what they do leads to their success.
- It is even harder to have the discipline to do these things that lead to repeatable success, unless you’ve done it before and have experienced the rewards.
- The people who run bankrupt companies with dissatisfied customers that sue will tell you that the discipline followed by the successful companies is a load of garbage.
- There may be successful companies that tell you what their successful competitors do is a wasteful load of garbage. Go work for these naysayers and you will find that they are in fact quite disciplined, follow many of the same techniques, but call those techniques by different names or have integrated them so deeply into their culture that they don’t see them as methodology at all.
- Building a house is like building a house
- Building a house is not like building a skyscraper
- Building a house is not like building a back yard shed
- Building a house is not like building a diorama for your 4th grade daughter
- You need blueprints to build a house
- You can build a diorama for your 4th grade daughter in an afternoon with just an idea in your head
- You can build a back yard shed in two afternoons if you follow very detailed instructions very carefully, if all of the pre-fabricated parts have been drilled exactly right, if the bolts to attach them together are all in the package, and if there are no mistakes in the instructions. If there are problems, you face at least a week delay (to wait for your next weekend of free time) and possibly 6 to 8 weeks delay (to wait for the manufacturer to ship the correct parts).
- To build a skyscraper, you will need about 10 years. Of course you can’t build a skyscraper without blueprints. But you need much more.
- It will take 2-3 years minimum to secure a location desireable enough for your skyscraper
- It will take another year or two to work through the political process to allow your skyscraper to be built there
- You may never secure the site, or the permission to build there, so your project might not ever get off the ground
- You can do some things in parallel
- The design of the building will take 2-3 years to finalize
- The architecture and detailed blueprints will take a year or two or three
- After 3 to 10 years you can start construction
- Construction will take 2-3 years if all goes well
- Construction will take much longer, or never complete, or be completed with major, expensive-to-fix errors if any of the up-front planning was insufficient.
- Somebody very experienced needs to be in charge of this phase. One supply, labor, design, or implementation glitch can delay the entire project for months.
- If this is your first house, and you realize it is a skyscraper, leave the building and go find a house to work on. You don’t want this skyscraper to fall over because of you. More likely it would just never get built, in which case you will have wasted 5 years of your life on nothing.
- If anything major goes wrong, the investors will lose all of their profit and some or all of their capital, even if the construction finally completes and the building appears to be a success.
- You can build a house in a year if you know what you’re doing
- If you have built this kind of house before, you will have detailed blueprints with corrections
- You will have reliable suppliers for the components you need
- You will have a trusted labor force that can follow the blueprints exactly and on time
- You will know your customers’ rational and irrational expectations and meet or exceed those expectations
- If you’ve been at this a while, you can build 10 or 100 houses in a year, because you will have many corrected blueprints, many reliable suppliers, and a large trusted labor force, and every house is almost exactly the same as long as you are willing to say “no” to the customer when they ask for the front door to be on the roof.
- You can’t build a house in a year without help if you’ve never done it before
- You may find yourself tearing the drywall down to put in plumbing
- Then tearing it down again to put in an electrical system
- Then putting in space heaters and window-unit air conditioners because you forgot to put in a centrail air system and you don’t want to tear down the drywall again
- Then calling in the professionals when the house sinks halfway into mud and starts itself on fire
If you are building a house without blueprints, if this is the first house you are building and you are expected to build it in one year and exceed your customer’s expectations and you are just starting to recruit workers and find suppliers, if your customer requests the front door to be on the roof, if it seems like you are expected to build a skyscraper with the budget of a house, if you are expected to assemble a shed in a weekend with no pre-fab parts, no bolts, and no foolproof step-by-step instructions… you are in trouble, and it’s obvious that you are in trouble and that you will not be able to achieve the goal as expected. You would say “no, I can’t, and you’re an idiot for asking” if presented with any of these challenges.
Software development is sometimes sorta like building a house.
0 Responses to “Software Development is Sometimes Sorta Like… Building a House”