Amanda Woo

@amandakwoo

Decision-Making: The Most Undervalued Skill in Software Engineering

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!

And good decision-making is measured by the speed and correctness of this action.

Decisions, Decisions, Decisions

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.

Uncertainty & Developing Software

What does this have to do with software development? Software development is a massive problem solving exercise where uncertainty is the norm. This is evident in our behaviour of 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. Uncertainty numbs our ability to make good decisions. There are countless intangible elements in software development make some decisions more riskier than we realise.

Quality Over Velocity

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.

Mastering Organisational Agility

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.

Our Mental Handicap

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. The act of critical thinking seems to be It is possible to minimise or avoid teams from making the obvious bad decisions.

Quick But Expensive 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.

For example, software projects more often late and/or over budget than on time and/or under budget. This demonstrates our lack of discipline around software estimations (eg. how much and how long will it take to deliver business value X) which leads to sub-optimal decisions. Our decisions are only as good as the information that supports it. Want to learn how to do more reliable estimations?

Stop Repeating Mistakes

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 By Change

Change is not easy and sometimes a lot of hard work but growth can only happen when there is change. But nothing will change, unless we change!

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

Make Good Decisions

Whilst there’s no formulate to the “right” way of making decisions, there are some principles we can keep in mind such as using supporting data and being aware of cognitive biases. Ultimately, making good decisions comes down to the speed and correctness that they are made.

How have you improved making decision about project costs, resource allocations, delivery timeframes, which order to build things, etc.? I’d love to hear about the methods, techniques and/or tools that worked or didn’t for you. Please share your thoughts in the comments.

You may also like:

6 Habits To Making Better Decisions In A Tech Business

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

More by Amanda Woo

Topics of interest

More Related Stories