Ignorance In Software Development Is More Dangerous Than Your Credit Card
If you keep buying stuff (building features) without paying off your debt (delivering value to consumers), soon or later you‘re screwed.
Like the consequences of accumulating debt on your high-interest credit card, the reality is that your organisation will be in an undesirable position. This could include borrowing funds, the stress of raising additional funds or accepting the loss of other opportunities because the previous investment failed and is now a sunken cost. Meanwhile, your competition is thriving on the advantage that you’ve handed to them.
The Invisible Burden of Debt
Having a credit card has its benefits such as the convenience of not carrying cash and not having the money being taken from your bank account upon each purchase made. However, those same benefits provide a danger. Because we don’t see the cash physically disappearing from our wallet or bank account, it requires effort to determine how much money I “can” or should spend and when to stop spending before you are able to pay back. It is easy to end up in a position where you’ve spent more than you are able to pay back.
Software development is not too different from credit cards. Let’s observe some key parallels between credit card and software development in more detail:
#1: Credit cards have a maximum spending limit
In software development, we too have a spending limit which is often to referred to as the project budget. We are not required to provide how much we’re going to spend for each action taken or feature we will develop for the software development.
#2: Debt accumulates with each purchase
When a team sets off to define, design and build one or more features, this is the debt accumulation in the software development. Organisations are paying their teams to produce solutions that they hope will deliver value to the end-user in the form of either resolving a pain or providing a gain. Hence, it is crucial to build and release features often to obtain end-user feedback in the same way that a credit card bill should be paid in full by the due date to minimise interest incurred.
#3: Ability to pay back the debt
There is no guarantee in software development that what you develop will result in the desired revenue and thus the ability to pay back the debt. Like a credit card and cash flow (eg. income), debt can be kept in control with critical thinking and continuous management. But if left ignorant to what you are able to pay back, then you will be in a difficult situation both with a credit card and software development.
By no means is this an exhaustive list. But in the same way we decide to manage our finances with a credit card, one can easily incur more cost than necessary creating a burden which limits our opportunities. Ultimately, this influences our morale and ability to be successful.
Ignorance Inhibits Success
According to Wikipedia, ignorance is the “lack of knowledge or information”. On the other hand, Donella Meadows, the author of Thinking in Systems, does a much better job at explaining ignorance in a relatable context by telling the ancient Sufi story called The Blind Men and the Matter of the Elephant:
It is a story of a group of blind men, who have never come across an elephant before and who learn and conceptualise what the elephant is like by touching it. Each blind man feels a different part of the elephant body, but only one part, such as the side or the tusk. They then describe the elephant based on their partial experience and their descriptions are in complete disagreement on what an elephant is.
Meadows explains that it teaches “a simple lesson but one that we often ignore: The behaviour of a system cannot be known just by knowing the elements of which the system is made”.
Likewise in software development, we cannot develop individual features and expect for our target audience and consumer to interpret the intended overall value proposition of a product from an individual feature alone. For the consumer, its about being in the moment of actually using and experiencing the product/service for themselves that they realise value or not. In my consulting work, I also often hear from stakeholders state that “the target audience won’t know until they can see, use and experience it for themselves”.
There are several ways which we are ignorant when it comes to developing tech products and/or software. But the key to building successful products more often is to become less ignorant and improve the ways we generate/consume useful knowledge (aka the “right” evidence) to drive truly informed decisions.
The Power of Knowledge
Going back to our credit card example, if we chose to be ignorant of our credit card responsibilities (eg. when our credit card bill was due, that there was compounding interest incurred when the bill was not paid in full, what one’s capacity was to spend regardless of the credit card limit, etc), we would be in a very dangerous situation — drowning in debt. On the other hand, if we simply consumed the knowledge about what the responsibilities were of owning a credit card, we would be able to better manage or, even better, avoid the unnecessary debt. The same applies to developing software and technology products. However in many ways, I’d say “avoiding debt” in software development is much more complex.
In many ways, developing software and technology products is nothing more than one massive exercise of uncertainty. It’s a known fact that humans are innately bad at making decisions as we do not have the mental capacity to consistently make rational decisions. Hence, we must also be bad at making product decisions. This is no different to our shopping behaviours, specifically making impulse purchases from time to time. But the good news is it’s addressable by becoming less ignorant and more empowered through the “right” knowledge.
“Ignorance is never better than knowledge” — Enrico Fermi, winner of 1938 Nobile Prize in Physics
Knowledge helps to both reduce uncertainty and bring clarity to intangibles. As a result, we are empowered to make better decisions. This is true for countless aspects of developing software and technology products. For example,
- Project Budgeting: If you knew that the amount invested into a project did not mathematically yield the expected ROI or revenue required to achieve our desired goal, would you still invested the same amount or would you take the time to reassess?
- Project Benchmarking: If you learnt that what you were trying to achieve with project X was unrealistic based on similar projects of an industry standard, would you continue pushing your team as hard or would you have taken actions to restructure the project/team?
- Team Benchmarking: If you were presented some benchmarks about the varying capacity of engineering teams similar to yours, would you be as likely to expect unreasonable deliveries from your team or would you be inclined to alter your expectations and take more suitable action?
- Team Performance: If you learnt that you were performing “behind the pack” (eg. behind where majority of teams similar to your), would you be more motivated to seek the appropriate steps to improve or would you just be happy to brute force the way you make improvements?
- Delivery Speed: If you learnt that by reducing a certain action would increase the amount of development throughput, would you take that action to reduce your cycle times (thus, increasing delivery speed)?
- Future Outcomes: If you could predict the potential outcomes and it’s corresponding probabilities, would you take the opportunity to increase the confidence of your decision or forego this extra knowledge in your decision-making process?
I could go on, but I think you get the point. If you could have access to more knowledge so that you could better develop software and technology products, what would you like to learn and/or know more about?
“Many of the options we face in life are “mixed”: there is a risk of loss and an opportunity for gain, and we must decide whether to accept the gamble or reject it” — Daniel Kahneman
Having said this, its important to consider where knowledge fits into your approach to developing software and technology products. It’s a fast-paced and dynamic environment that doesn’t easily support making informed decisions. It requires the right tools and techniques to create a consistent stream of useful knowledge.
To all those organisations developing software or technology products, remember it is just like owning a high-interest rate credit card. Ignorance quickly gets you into a disastrous situation — debt. The debt incurred needs to paid off at some point, in one form or another, in the same way that dark secrets eventually are found out. Although debt (in most cases) is nobody’s friend and it is reasonable to expect that you may sometimes need to incur “a little” debt, embracing knowledge seriously outweighs the stress and burden of dealing with the consequences of ignorance (for both credit cards and software development).
If you would like the learn more about how to find the best balance of knowledge and delivery speed of successful software, get in touch at firstname.lastname@example.org.
Learned something? Click the 👏 to say “thanks!” and help others find this article.
Hold down the clap button if you liked the content! It can prevent others from making the same mistake.
Clap 99 times!