“You see, but you do not observe. “— Sir Arthur Conan Doyle, creator and writer of Sherlock Holmes
We develop software in a dynamic and face-paced environment, where the pressure to innovate and delivery of value to the consumer is becoming more and more competitive. Here’s a look at some of the core issues today in businesses that develop software products:
Not only do we make decisions at a rapid rate under pressures of the tech business environments, but (dare I say) we often make decisions like making “bets” at a casino. We let our current emotions and gut feel rule our decision-making decisions. Whilst its natural for us to make fast, intuitive and automatic approach, allowing this type of decision-making in software development is detrimental to building successful software products.
Opposite to our fast, intuitive and automatic behaviour to make quick decisions, critical thinking is a skill that is commonly de-prioritised since it requires effort and time. However, thinking critically is needed the most because we are surrounded by the noise of uncertainty when developing software products. This uncertainty only further adds to the complexity of a likely already complicated situation or problem.
There have been waves of different best practice for delivering software products. For example, we started shifting from waterfall in Agile in 2001 and then Lean Startup in 2008. Although we have had best practices to guide the way we develop software products, none of the processes are ergonomic towards human and yet humans dominate the development of software products.
Asking a product manager how long it would take to deliver some new idea would look something like this (over a period of a few days or weeks):
The problem here is that we are often asked to answers about things that we don’t know much about, in addition to not applying sufficient techniques to model out different situations with other information that we know about. In the example above, there are still many unknowns (eg. will it be attractive to a particular segment of their customers only) and thus uncertainty.
Many proven scientific methods exist to help us predicting future outcomes but models and methods are currently a distant thought in everyday practice. I believe this is because they are difficult to access and even more difficult to understand without being educated with the foundations in at least statistics, probabilities and data analytics.
The future of developing successful software products lies within forecasting. I’m not talking about a “one size fits all” kind of forecasting but rather creating relevant forecast for each situation and opportunity. Predicting future outcomes when developing software will (if not already) give your business a competitive advantage. Here are the 3 simple reasons why:
“It is better to be approximately right than to be precisely wrong”
— Warren Buffett
Where there is uncertainty, there is risk. Risk is obviously no good for any business. However, software development is often high risk because we’re using technology to develop something different and there isn’t a manually to show you exactly what to do. Currently, all we have is a swarm of guidelines and best practice. Reducing uncertainty is also intertwined with making better decisions. A high level of uncertainty can paralyse our ability to make decisions in a reasonable timeframe. And with the rapid pace of technology developments, timing is a crucial factor in decision making. It will be the difference in catching or missing your window of opportunity.
We need tools and techniques, as well as training, for software development that encourage us to continuously reduce uncertainty and make potential future situations more tangible. Intangibility makes it easy for us to quickly become out-of-tune with reality. This results in building software that doesn’t match reality, hence higher probability of failure.
“Achievement is talent plus preparation”
— Malcom Gladwell, Outliers: The Story of Success
Human decisions are naturally driven by our cognitive bias and requires our System 2 thinking to bring more reason and consistent rationality to our teenager System 1 thinking. But in order for us to better prioritise, better rationalise, better distinguish the difference between a worthwhile versus useless opportunity and improve the way we make decisions overall, we need train our minds to think critically. Critical thinking also enables us to identify the best path of execution and anticipate potential issues that could arise, thus being the difference between another successful or failed product.
All business decisions have economic consequences. When it comes to software development, it is important to foresee upcoming events, challenges and opportunities because the cycle time of making changes to software products does not compare to the rapid rate of our decision-making. A constant change of direction due to rapid decisions can also negatively impact a product development team’s productivity which results in further delays of getting the product to market.
“Never invest in a business you cannot understand.”
—Warren Buffett
Obviously, improving ROI is about high returns and low risk. However, this often gets forgotten or in practice we execute poorly in reducing the risk (eg. we run a survey or experiment which does not actually reduce our risk about the decision we needed to make for a product enhancement). As a result, we end up making a series of bad decisions in software development which stagnate or prevent the expected ROI. But we can reduce the number of bad decisions by predicting future outcomes and choosing certain paths based on credible evidence generated by scientific models. Again, making the potential scenarios tangible is key to thinking through the pros/cons to each situation and imagining the different outcomes.
Improving ROI not only makes stakeholders happy but it has a positive impact on supporting innovation within a business. From my experience, when there are too many software development projects that fail, stakeholders and investors become more conservative in how much and how frequent they invest in efforts to preserve.
“Survival of the fittest” — Herbert Spencer
Forecasts are a big influence on whether an outcome is a success or failure. Don’t mistaken any kind of forecasts for being helpful. There is a great skill required to modelling the “right” forecasts (eg. what to measure and how to measure) and one needs to be clear about what decision(s) they are looking to support with the model/forecast. Not only does predicting future outcomes reduce uncertainty, it also enables better decision-making and thus improves ROI.
In the tech world, the advocating to “failing fast, fail often” has become the norm. Whilst embracing failure is noble, being ignorant to the consequences of failure is not. It will make or break a good team culture, but even worse, this could make or break your business. To ensure that we build sustainable and viable software products, we need to be curious, observant and think like the famous Sherlock Holmes. This is a determining element in why companies, who develop software products, will succeed far more than others.
Interested in predicting future outcomes for your business’ technology investments and software development? Drop us a message at [email protected].
Hold down the clap button if you liked the content!
Clap 50 times!