So, how many months will it take to develop my company’s software application?
Before we answer that...
“I want to build a house,” you ask the new architect. “How long will it take?”
Well, that’s a vague request, the architect thinks. But I am well experienced and will do my utmost.
“That’s a difficult question. Which type of house? Where will it be built? Do you have electrical and plumbing connections ready?”
It’s a simple house with a few design ‘innovations’. How long did your last home build take?”
The last house took us five months...”
Great, let’s do this…I have a positive feeling about this guy…let’s see if he comes back with good news...”
What is Quality Software?
According to Tutorials Point, software quality has two distinct notions:
- Software functional quality refers to how software complies with a given design based on functional specifications.
- Effectiveness in serving its intended purpose compared to its competitors in the marketplace.
On the other hand, the software structure quality refers to how it meets the non-functional requirements that aid in delivering the functional requirements. It is the degree to which the software works as needed.
Quality software can be likened to your house, where you can enjoy a vast range of rational and irrational flexibilities such as room for a batmobile and bat cave (more on this below).
This type of home is a similitude to quality software. You want to carry out the burden of activities seamlessly without hiccups.
If you aim to stay in such a house for as long as you live, I am sure you wouldn’t want it built as fast as words could fly.
Our build continues...
Three months later, the architect comes back... with good news, I'm sure....
“There’s been a bit of hindrance while laying the foundation.”
Ah, What’s the problem? Do we still have our five months schedule intact?”
“That depends. How will we cull the packs of wolves infiltrating the lot? We’ve already lost two diggers (developers), and good ones are expensive.”
"Well, maybe you can just shoot them all! What do you think?”
“No, not at all...we need the diggers (developers). We can surely subcontract out the wolf extermination, but it’ll take us a few months.”
Fine. That’s okay, but I’m disappointed the timeline slipped. Please, make sure to take care of that.
Why does it take a long time to develop quality software?
The amount of code needed to solve business problems versus 20 years ago has reduced drastically. With this, you would think that creating software would be lightning fast.
It doesn’t seem to be happening, though, so why not? What is happening?
Software development is a more seamless process now in contrast to some decades ago.
However, while the speed of completing software development is laudable, there are other factors to consider.
Below are a few examples of the changes that have happened over the years.
While building your new house (house again? Rolls eyes), it’s essential to ensure that home inspectors visit your site at the different stages needed. Inspections aren’t tick and flick on a static artefact.
Similarly, when software is released, we must have a properly tested application!
To understand whether the software delivered is of high quality, we do performance acceptance testing, integration testing, unit testing, and many more. All of this testing adds incidental complexity to the project.
Aside from that, bugs (or as I’ve called them, wolves) show up many times during development. A bug is a specific malfunction of an application.
When developers test for and detect bugs, their complexity is remarkably unpredictable. Finding the underlying cause (extermination) and tracking their impact throughout the software application becomes problematic and takes more time.
If you’re as handy as me on the tools, we’ll never know why the lights tripped when I put in the new front door handle. Luckily for me my neighbour was the tester for the door handle once I flicked the trip switch back on.
90 days later. That architect again. “What now? More wolves?
“No, the wolf hunt is working great - we haven’t lost an employee in months. But my secretary forwarded me the new specs you sent over. It’s more arduous than the initial proposal.”
Yeah, that’s true.. It’s just a light renovation to the ongoing work?
“Okay, tell me how long it will take. I see nothing wrong with having another bat cave for Bruce Wayne to park his bat-mobile.”
“Everyone should have one... But that does change the build. It’s going to take us another nine months.”
Fine. “I hope this will be the last delay.”
We want more & more from our software applications
More than ever, we are leveraging more tools and libraries to create our software. This should make creating software more effortless, but it propels us to demand more from our software on a broader level.
Back in the 1800s and 1900s, there was no such thing as a bat cave, batmobile, or expensive extras like spa, fireplace, and granite countertops, it was much easier and faster to build houses.
The same thing applies to software; we want our software to perform at a much higher level with more features than twenty years ago. Remember when online payments became possible? Now, we’re disappointed if we have to even look at our card numbers (thanks ApplePay). Thus, as we build more complex and robust, feature-rich applications, we have to alter the software development process considerably.
This keeps them functional, reliable, and durable.
Let’s branch out of the house building scenario a little.
In the 2000s, it wasn’t uncommon for a software engineer to design UI, build UI, and the back-end of an application.
However, it has become a handful of roles nowadays. Web applications have become more complicated.
This is why a team building a web app will often include a UX designer, Developer, Business Analyst, Scrum Master, and product owner (yes, we need your presence).
Teams must now master technologies such as React Native for mobile apps, Java, and Angular for web apps. These tools and the processes involved in compiling everything introduces a large amount of additional work.
Software development will often be delayed to ensure that security and privacy are not breached. In addition to that, our expectations of quality must be met.
A year later, the contractor is back. He was looking depressed.
“We’ve built your house. It’s done. Bat cave, batmobile, and not even a wolf nearby.”
At last! “That’s good news! Why the long face?”
“We had a problem when the inspector came by to certify the electrical work.”
We built your house, Batmobile and all in someone else’s swamp.” Yours is the lot half a mile east.
Gosh! “I got to know of that yesterday evening and was about to call you.” This one is on me. “So how long will it take to...?”
“15 months, minimum.”
Here we go again...
To meet the increasing demand for a web application, we have begun to automate their maintenance and creation.
This has enabled us to manage environments at scale easily but requires many suites and knowledge to run them effectively.
The amount of complexity posed by these tools is immense. These processes are a necessity, making DevOps a dedicated role in larger teams.
Applications are growing in size and complexity. This brought the need for continuous integration and deployment. Wolves (bugs) show up every time, and we don’t want to lose our developers.
Most times, developers perform periodic extermination (checks for bugs and fix them), often bringing accidental complexity from the range of tools and skills needed to operate these processes.
Well, we have gotten this far together. While the science behind creating software has drastically improved, the increase in demand of our customers, stakeholders, and the time to test and fix bugs (wolf hunt) makes it harder to beat time.