Software, why does it take so long to build it?

Dario D'Ambruoso
5 min readFeb 4, 2021

The answer is simple, because Software is Software, ok, stop, I finished.

We daily hear questions like this and, there is a good reason we hear it, the world need custom software every day in order to stay competitive, and yet it feels like as time passes the speed at which software is delivered is always the same, or worse, getting slower.

I’d like to talk to you all about why this is, but in order to explore the topic, I need to introduce you to a simple concept that is near and dear: Software is not a giant IF.

Software is not a giant IF

Every single day I talk to people which think of software like a number confused lines of code without a logic. It is frustrating, boring and at the same time stupid try to explain what is a Design Pattern, or what is Saas or Paas and so on.

Why is the professionalism of a surgeon respected and not that of a software engineer?

I don’t know about you, but I’ve never heard say to a surgeon:

5 hours is too long for an open heart surgery!

In my opinion the problem is in the left atrium!

I have nothing against surgeons, the problem here are all that people who think they are experts after reading a paragraph of Wikipedia or see a concept on a slide.

The quality of code

Great software are clear and readable, they can be easily extended, they work great with other software, and maintaining them is not a nightmare. The quality of the code is not a negotiable thing, using sloppy shortcuts because of a deadline or other “abstract” things is not acceptable.

Extendibility, scalability, portability are not only beautiful words. There is no software born and died without changes, or evolutive features. Users will demand more and more features or easier ways to use software, everyone of us is a user of something and, everyone of us has a great feature or ideas to request.

A piece of software is usually useful when communicate with other pieces, exchange their data, and collaborate on the task of presenting data by means of a user interface giving a great user experience.
Software have to be designed with that in mind, yes, have to be designed first and write then.

Please stop doing “creative writing”, stop using copy/paste “paradigm”, design and write a great software, your Sacellum Sixtinum; don’t do the monkey.

Good things needs a lot of time

There is no doubt that we need more time to do well-done software. Tools, human-resources, methodologies make a big difference and they are often under-appreciated, but why does software take so long to be build? And why it take longer than expected?

Wow, great questions, let’s try to clarify with a bulleted list, as we like:

  1. Software Planning: it takes time and experience to make a software plan. When you talk software, you don’t have hundreds of tasks and several resources to coordinate with overlapping dependencies, it is unlike building a house, don’t you think? Well, software tasks and resources are largely intangible. The truth is, there’s no clients who want to spend 1–2 weeks for planning upfront. They want to focus their dollars on pure development.
  2. Software Requirements: a project plan is based on requirements. It goes without saying that if you change your requirements or identify missing ones during the project, the project plan and time will be impacted. When there is ambiguity, a software developer will do one of two things: guess, possibly causing rework later, or will ask for clarification. In both cases, the project timeline could be impacted. By guessing, there may be rework later in the project. Instead if the developer stops to ask, the time spent to ask, clarify, and then wait for the answer or requirements clarification, we will start to see the project delay. During the requirements phase of your project, take the time to make sure your requirements are clear, detailed and don’t leave room for ambiguity, when there are a requirements list.
  3. Development Team: software is a very transient industry, developers staying 1–2 years at same company before moving away. It is not uncommon for a project that lasts 4–6 months to have one or more of its team members leave. If you lose a key team member during the course of development, it will cause a project delay. A new resource will need to be found (delay), or the work split between the remaining resources (overload). In either case, it may disrupt the energy of the team and their ability to produce at the same rate as before.
  4. Technology: whether it is, technology which didn’t act like we expected or technology cause unforeseen issues, it may cause project delay. 3rd party tools that is brand new, or really old, or if you are using the technology in a way that it wasn’t originally intended… The tools or components you are using might be sensitive to your hardware or operating system versions, more and more and here are another project delay.

Spend time now to write a maintainable and readable software, do a plan, you will save time in the future for any changes or new features.

--

--

Dario D'Ambruoso

Software engineer, tech lover, obsessive compulsive developer and head of software area.