Software Development Length: Expectations Vs Reality

SOFTWARE DEVELOPMENT

So, how many months will it take to de­velop my com­pa­ny’s soft­ware ap­pli­ca­tion?

Before we an­swer that…

“I want to build a house,” you ask the new ar­chi­tect. “How long will it take?”

Well, that’s a vague re­quest, the ar­chi­tect thinks. But I am well ex­pe­ri­enced and will do my ut­most.

“That’s a dif­fi­cult ques­tion. Which type of house? Where will it be built? Do you have elec­tri­cal and plumb­ing con­nec­tions ready?”

It’s a sim­ple house with a few de­sign ‘innovations’. How long did your last home build take?”

The last house took us five months…”

Great, let’s do this…I have a pos­i­tive feel­ing about this guy…let’s see if he comes back with good news…”

What is Quality Software?

According to Tutorials Point, soft­ware qual­ity has two dis­tinct no­tions:

  1. Software func­tional qual­ity refers to how soft­ware com­plies with a given de­sign based on func­tional spec­i­fi­ca­tions.
  2. Effectiveness in serv­ing its in­tended pur­pose com­pared to its com­peti­tors in the mar­ket­place.

On the other hand, the soft­ware struc­ture qual­ity refers to how it meets the non-func­tional re­quire­ments that aid in de­liv­er­ing the func­tional re­quire­ments. It is the de­gree to which the soft­ware works as needed.

Quality soft­ware can be likened to your house, where you can en­joy a vast range of ra­tio­nal and ir­ra­tional flex­i­bil­i­ties such as room for a bat­mo­bile and bat cave (more on this be­low).

This type of home is a simil­i­tude to qual­ity soft­ware. You want to carry out the bur­den of ac­tiv­i­ties seam­lessly with­out hic­cups.

If you aim to stay in such a house for as long as you live, I am sure you would­n’t want it built as fast as words could fly.

Our build con­tin­ues…

Three months later, the ar­chi­tect comes back… with good news, I’m sure….

“There’s been a bit of hin­drance while lay­ing the foun­da­tion.”

Ah, What’s the prob­lem? Do we still have our five months sched­ule in­tact?”

“That de­pends. How will we cull the packs of wolves in­fil­trat­ing the lot? We’ve al­ready lost two dig­gers (developers), and good ones are ex­pen­sive.”

“Well, maybe you can just shoot them all! What do you think?”

“No, not at all…we need the dig­gers (developers). We can surely sub­con­tract out the wolf ex­ter­mi­na­tion, but it’ll take us a few months.”

Fine. That’s okay, but I’m dis­ap­pointed the time­line slipped. Please, make sure to take care of that.

Why does it take a long time to de­velop qual­ity soft­ware?

The amount of code needed to solve busi­ness prob­lems ver­sus 20 years ago has re­duced dras­ti­cally. With this, you would think that cre­at­ing soft­ware would be light­ning fast.

It does­n’t seem to be hap­pen­ing, though, so why not? What is hap­pen­ing?

Software de­vel­op­ment is a more seam­less process now in con­trast to some decades ago.

However, while the speed of com­plet­ing soft­ware de­vel­op­ment is laud­able, there are other fac­tors to con­sider.

Below are a few ex­am­ples of the changes that have hap­pened over the years.

Automated Testing

While build­ing your new house (house again? Rolls eyes), it’s es­sen­tial to en­sure that home in­spec­tors visit your site at the dif­fer­ent stages needed. Inspections aren’t tick and flick on a sta­tic arte­fact.

Similarly, when soft­ware is re­leased, we must have a prop­erly tested ap­pli­ca­tion!

To un­der­stand whether the soft­ware de­liv­ered is of high qual­ity, we do per­for­mance ac­cep­tance test­ing, in­te­gra­tion test­ing, unit test­ing, and many more. All of this test­ing adds in­ci­den­tal com­plex­ity to the pro­ject.

Aside from that, bugs (or as I’ve called them, wolves) show up many times dur­ing de­vel­op­ment. A bug is a spe­cific mal­func­tion of an ap­pli­ca­tion.

When de­vel­op­ers test for and de­tect bugs, their com­plex­ity is re­mark­ably un­pre­dictable. Finding the un­der­ly­ing cause (extermination) and track­ing their im­pact through­out the soft­ware ap­pli­ca­tion be­comes prob­lem­atic 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 han­dle. Luckily for me my neigh­bour was the tester for the door han­dle once I flicked the trip switch back on.

Parody con­tin­ues

90 days later. That ar­chi­tect again. “What now? More wolves?

“No, the wolf hunt is work­ing great - we haven’t lost an em­ployee in months. But my sec­re­tary for­warded me the new specs you sent over. It’s more ar­du­ous than the ini­tial pro­posal.”

Yeah, that’s true.. It’s just a light ren­o­va­tion to the on­go­ing work?

“Okay, tell me how long it will take. I see noth­ing wrong with hav­ing an­other bat cave for Bruce Wayne to park his bat-mo­bile.”

“Everyone should have one… But that does change the build. It’s go­ing to take us an­other nine months.”

Fine. “I hope this will be the last de­lay.”

We want more & more from our soft­ware ap­pli­ca­tions

More than ever, we are lever­ag­ing more tools and li­braries to cre­ate our soft­ware. This should make cre­at­ing soft­ware more ef­fort­less, but it pro­pels us to de­mand more from our soft­ware on a broader level.

Back in the 1800s and 1900s, there was no such thing as a bat cave, bat­mo­bile, or ex­pen­sive ex­tras like spa, fire­place, and gran­ite coun­ter­tops, it was much eas­ier and faster to build houses.

The same thing ap­plies to soft­ware; we want our soft­ware to per­form at a much higher level with more fea­tures than twenty years ago. Remember when on­line pay­ments be­came pos­si­ble? Now, we’re dis­ap­pointed if we have to even look at our card num­bers (thanks ApplePay). Thus, as we build more com­plex and ro­bust, fea­ture-rich ap­pli­ca­tions, we have to al­ter the soft­ware de­vel­op­ment process con­sid­er­ably.

This keeps them func­tional, re­li­able, and durable.

Increasing Specialisations

Let’s branch out of the house build­ing sce­nario a lit­tle.

In the 2000s, it was­n’t un­com­mon for a soft­ware en­gi­neer to de­sign UI, build UI, and the back-end of an ap­pli­ca­tion.

However, it has be­come a hand­ful of roles nowa­days. Web ap­pli­ca­tions have be­come more com­pli­cated.

This is why a team build­ing a web app will of­ten in­clude a UX de­signer, Developer, Business Analyst, Scrum Master, and prod­uct owner (yes, we need your pres­ence).

Teams must now mas­ter tech­nolo­gies such as React Native for mo­bile apps, Java, and Angular for web apps. These tools and the processes in­volved in com­pil­ing every­thing in­tro­duces a large amount of ad­di­tional work.

Software de­vel­op­ment will of­ten be de­layed to en­sure that se­cu­rity and pri­vacy are not breached. In ad­di­tion to that, our ex­pec­ta­tions of qual­ity must be met.

Parody con­tin­ues

A year later, the con­trac­tor is back. He was look­ing de­pressed.

“We’ve built your house. It’s done. Bat cave, bat­mo­bile, and not even a wolf nearby.”

At last! “That’s good news! Why the long face?”

“We had a prob­lem when the in­spec­tor came by to cer­tify the elec­tri­cal work.”

We built your house, Batmobile and all in some­one else’s swamp.” Yours is the lot half a mile east.

Gosh! “I got to know of that yes­ter­day evening and was about to call you.” This one is on me. “So how long will it take to…?”

“15 months, min­i­mum.”

Here we go again…

Infrastructural Automation

To meet the in­creas­ing de­mand for a web ap­pli­ca­tion, we have be­gun to au­to­mate their main­te­nance and cre­ation.

This has en­abled us to man­age en­vi­ron­ments at scale eas­ily but re­quires many suites and knowl­edge to run them ef­fec­tively.

The amount of com­plex­ity posed by these tools is im­mense. These processes are a ne­ces­sity, mak­ing DevOps a ded­i­cated role in larger teams.

Consistent Deployments

Applications are grow­ing in size and com­plex­ity. This brought the need for con­tin­u­ous in­te­gra­tion and de­ploy­ment. Wolves (bugs) show up every time, and we don’t want to lose our de­vel­op­ers.

Most times, de­vel­op­ers per­form pe­ri­odic ex­ter­mi­na­tion (checks for bugs and fix them), of­ten bring­ing ac­ci­den­tal com­plex­ity from the range of tools and skills needed to op­er­ate these processes.

Conclusion

Well, we have got­ten this far to­gether. While the sci­ence be­hind cre­at­ing soft­ware has dras­ti­cally im­proved, the in­crease in de­mand of our cus­tomers, stake­hold­ers, and the time to test and fix bugs (wolf hunt) makes it harder to beat time.

Want an in depth un­der­stand­ing of what your soft­ware ap­pli­ca­tion will cost to build? Download our soft­ware pric­ing guide.

Discover Software
Secrets

ABOUT THE AUTHOR

David Burkett

Growth en­thu­si­ast and res­i­dent pom

Get cu­rated con­tent on soft­ware de­vel­op­ment, straight to your in­box.

What is Agile Software Development: How to Start with a Problem

16 October 2020

The Advantages of Agile Project Management

09 September 2020

What’s the Best Agile Project Management Method For You: Scrum vs Kanban

11 September 2020

Your vi­sion,

our ex­per­tise

Book a con­sul­ta­tion