Decision-Making: The Most Undervalued, But Most Important, Skill in Software Engineering

By Amanda Woo

Chess, in general, is the process of making decisions (Photo by rawpixel)
“The average person makes an eye-popping 35,000 choices per day

It may come as a surprise to many, but the most important skill in software development is not how good your coding skills are or how much you know about machine learning and data science. It’s decision-making!

Did you know that the average person makes 35,000 decisions each day? About 227 of these are on food alone. Our rapid advancement of technology has us continuously surrounded with an overwhelming amount of information. If that’s not enough, we’re also bombarded with “smart” notifications.

What does this have to do with software development? Software development is a massive problem solving exercise where uncertainty is the norm. As a result, we’re constantly asking questions, inventing assumptions and making countless decisions. To list a few:

  • How long will this project take?” — Manager
  • How much should we spend on building feature X?”Stakeholder
  • Let’s use Flutter to build our new application.” — Developer
  • “There are no test on the code for X functionality. I’ll write some tests for it.” — Developer
  • “The team estimates that it will take 10 days to build X.” — Product Owner
  • Let’s start using Trello to track our tasks, it’s simpler.” — Product Owner

Unlike our daily life decisions of what to eat and what to wear, the decisions in a business that develops software carries a cost that could be detrimental to its commercial viability. The are several intangible elements in software development make some decisions more riskier than we realise.

We’re obsessed with delivering software products faster. But at what cost?Although, what is the point if what we are delivering does not delight the customer and generate the business revenue? Furthermore, there is a certain point at which the rate of delivery becomes unsustainable and other aspects of the software business will begin to suffer such as culture, motivation and innovation.

Making better decisions is not only a necessary skill for management but for teams who deliver software as well since every decision has a flow-on effect. How we make decisions influences an organisation’s agility, culture and ability to successfully deliver software that delights its customers. Each bad decision might initially grant us a step forward but soon enough will take us a few steps backwards.

Decades of research show that we easily fall victim to our default mental shortcuts (aka cognitive biases) and how they frequently rule the way we make decisions. In order to truly optimise and rapidly deliver software, ultimately business value and thus revenue, we need better discipline around the way we make decisions in software development. It is possible to minimise or avoid teams from making the obvious bad decisions.

Bad decisions are always more costly than we realise. If we’re too busy spending money on fixing up the bad decisions, then our opportunity to innovate with technology will rapidly decrease.

We repeatedly preach for a “culture that learns from its mistakes” in the software world. But yet we continue to deliver software products that are late and over budget. Have we really made any significant progress in being better at delivering software? Or have we danced around the core problems?

Growth can only happen when there is change. Yes, that’s hard work. But nothing will change, unless we change!

“There is no substitute for hard work” — Thomas A. Edison

You may also like:

Coming soon! Follow me to be notified when it’s published.