Why developing software is like a construction project

The software industry is notorious for being late delivering software and is frequently over budget. When you think about it, this is similar to many construction projects, or even small home improvement jobs. I am sure many of us have experienced a contractor coming in to undertake a job such as plumbing, painting/decorating, renovation, small build, or even a garden project and have experienced delays and a budget that always seems to increase and never decreases.

 

Stage 1 - Foundations

Projects start with foundations. In construction projects, this is the big hole in the ground into which concrete is poured.

In the software industry, this is the framework for the software project upon which everything is built. Unlike a construction project, end users generally can’t see anything useful at this stage.

Stage 2 - Shell

In the second stage, you can really see the project taking shape and there is a sense of excitement as you can see the building coming to life.

Rapid software development is similar in that you can see the screens and possibly navigate your way around them. However, there is normally little substance behind them.

Stage 3 - Internal Works

After the buzz of seeing the shape of the building coming together, there then appears to be a long lull as things progress slowly.

Similarly, the software project seems to drag on for an eternity as the code that sits behind the screens is developed. This is by far the longest stage in the software development cycle.

Stage 4 - Second Fix

Construction work has finished and now any building issues are identified and fixed.

In a software project, this is where testing is undertaken and any issues are resolved. Major issues may involve rewrites of entire sections of code. This is also where ‘scope creep’ can often happen, i.e. having seen the application, changes may be requested which has a significant impact on cost and timeframe.

Stage 5 - Finishing Touches

This is where the painting is done and the fixtures, fitting and furniture are all put in place.

For a software project, it is the final review of the project before it is released. Decisions may have to be taken to omit certain functionality in order to meet a target release date.

Or a decision may be taken to delay the release of the project to ensure that all functionality has been delivered.

In the end, the software project should deliver something that the designers, developers, testers and everyone else involved can be proud of.

 

Key Frustrations along the way

The key frustrations between a construction project and a software project are strikingly similar.

  1. After an initial flurry of activity when the shell of a construction project or the screens in a software project are completed, the project seems to drag on interminably as the internal works are undertaken.

  2. Second fix or testing as it is called in the software world. Any misunderstandings in requirements come to the fore at this stage and the cost of correcting them can prove to be very significant. It is also where people see the project for the first time and realise that it may not be exactly as they envisioned, or they have had ideas about how it can be improved. This is often the root cause of delays and cost overruns.

  3. Impatience to get the finishing touches done to fully complete the project so that it can be used.

 

The SafeAmigos Project

In common with multi-billion dollar companies, SafeAmigos has missed its target launch date. Fortunately, there has been little if any ‘scope creep’ and in many ways, the development team has added some interesting touches to the project.

It has been complex software to deliver, juggling impact on battery life with location information, handling the vagaries of satellite positioning, and the complex nature of the host infrastructure that supports the app on the phone.

It is significantly behind schedule but the finished product has been worth the wait. A few final tweaks and it will finally be live, and can start helping people to feel safer and be safer.