Construction vs Software Development
By Jerry Keusch
Having spent 30 years in construction, I thought I would dedicate my first post to a comparison of the software industry and the construction industry. I’ve listed my top 5 differences and top 5 similarities, and then summarized with 5 key observations.
Top 5 Differences
- Physical vs Virtual
On a construction site you don’t need a chart to see progress, it takes shape right in front of you. In a software office it takes a little time to get used to the fact that everyone spends their day in front of a screen. It’s the difference between building a physical product and a virtual product.
Resources vs Knowledge
A construction project is all about the deployment of scarce and valuable resources; materials, plant, and labor. A major civil engineering project may require enormous quantities of materials and a large amount of heavy machinery to complete. In comparison, software development only requires a few talented people and some reasonably comfortable seats. Relatively speaking, it’s a cheap fix.
Consecutive vs modular
Construction is a ‘waterfall’ process, first you dig a hole, then you build the foundations. Each step is necessary to ‘cascade’ down to the next step on the project program. Software is largely modular, you can build the parts (features) separately and glue them together.
Final Product vs Minimum Viable Product
Probably the closest you get to a Minimum Viable Product (MVP) in construction is a model. It’s simply not cost effective to build a small bridge across a river just to find out if people will use it to get to the other side. In software development, the reverse is true, an MVP is ideal to assess demand and gain user feedback.
Operate vs Improve
When the ribbon is cut on the motorway and the traffic starts to flow, the contractor ships off to the next project. In software development, when the product is released this is often just the first step in a long cycle of continuous product development and support.
Top 5 Similarities
- Remove an Obstacle
Construction projects usually remove an obstacle, whether that obstacle is a river or a mountain, the solution cuts through them. Good software does the same, it removes an obstacle, it solves a problem, it improves the user’s experience.
Adding courses of bricks and adding lines of code both do the same thing, they add complexity. Construction projects and software development projects both share the same fate when things go wrong, they can become horribly expensive.
Construction teams and software development teams look a little different, but the dynamics of team working are the same. Great teams work well, poor teams suck.
Process & Project Management
This is the similarity I have to thank for getting me a new job, they both require project managers. At their core is a process, and while the domain is different, the process shares common artifacts and rituals.
As a builder hates snagging, a developer hates defects.
5 Key Observations
- Beautiful solutions
I like the fact that similar to a bridge, good software removes obstacles. In architecture, form follows function, and I have already had the good fortune to see how creative and talented developers can build simple, beautiful and intuitive solutions to solve problems.
Potential for Profit
Software development is a low cost industry. Given that software can be sold to a million people at pretty much the same cost as a hundred people, this makes software development an industry with potentially phenomenal profit margins.
Test the market first!
The challenge of course is to build the killer app! With the ability to build a Minimum Viable Product to test market demand, it’s almost inconceivable that this is not compulsory before a project goes into full production. It might prevent a lot of expensive failures, after all, nothing motivates likes success.
Build High Performing Teams
Software development is a people business, but most importantly it’s about teams. Perhaps, in a business where the only resources are people, the best form of training is to build high performing teams.
The new paradigm of highly connected networks is breaking down traditional hierarchical structures. As software development is leading advances in technology, it is imperative that it embraces the new forms of collaboration to drive innovation and empower diverse and highly distributed teams.
Jerry Keusch is a software development project manager. He has strong interest in how software teams communicate and collaborate as well as the tools and processes we use. You can read more from Jerry on his blog.