The other day I came across an article describing 8 mistakes our brains make subconsciously, and it struck me that I was experiencing one of them at that very moment, namely the sunk cost fallacy.
Let it go, already. (photo – “sunken skiff” by Jenny Spadafora)
There’s lots of information online about this phenomenon, so you can use your Google- or Bing-fu to find out more, but the short version is this: the sunk cost fallacy causes us to continue to invest (time, money, effort, etc.) into something beyond the point at which those investments make sense, because we do not want to “throw away” the time, money, or effort we have already invested (the already made, or “sunk,” cost).
One example of the fallacy is the gambler who, having lost substantial amounts of money, continues to gamble in hopes of making back all the money they’ve lost. In reality, that money is gone for good. And given their previous results, a gambler who’s lost substantial amounts of money would be better served walking away from the table, as their odds aren’t improved by mere persistence.
My Own Sunk Cost Example
In my case, the occasion of succumbing to the sunk cost fallacy was corrupted permissions on my primary laptop which left it pretty much unusable.
Windows 8.1 provides a variety of options for recovering from problems, and given that one of the symptoms I was seeing was issues with modern apps (those formerly known as “Metro” apps) not launching properly, that’s where I started troubleshooting. One thing that helped a bit, at least in terms of understanding the problem, was the apps troubleshooter, which you can find at the following link:
The troubleshooter diagnoses the modern app subsystem and can automatically correct many problems. In my case, it correctly identified that there were registry entries related to modern apps that were incorrect, but could not repair them for some reason.
One of the other solutions I tried was using the System File Checker utility (run sfc /scannow at the command prompt) to see if any system files were corrupt. This did initially identify some problems, which I subsequently repaired using the following command:
Dism /Online /Cleanup-Image /RestoreHealth
See this post for more info on this command. Once having run the Dism command, I re-ran SFC, which came back with no errors, but the problems persisted. And in addition to not being able to launch modern apps, I started having problems in Windows Explorer as well.
To make a long story short(er), things got bad enough that I decided to try Windows 8.1’s Refresh My PC, which in theory should bring Windows back to its original state while preserving your personal files and modern apps. All desktop apps need to be reinstalled, but the process is supposed to provide a list of all desktop apps removed, to make the reinstall process easier. Well, the refresh process didn’t work either. Modern apps were still broken (in fact, they showed up with a little X in the corner, so they were more broken than before), and no list of removed desktop apps was provided.
Ultimately, I ended up using the Reset My PC feature to do a complete reinstall of Windows 8.1, and then reinstall all of my desktop apps. To save myself some headaches in the future, I’m making some changes to how I set up my environment, but that’s a topic for a future post.
The Good News and the Bad
On the plus side, since I use a Microsoft Account to log into Windows, and use OneDrive for most document storage, it was very easy to get most of my environment back to where it was before the problems. Which is something I should have realized earlier.
Unfortunately, I spent the better part of two days fighting to avoid doing a reset, because of the time that I had invested in getting my laptop set up the way I liked. At every step of the troubleshooting process, the decision to try “just one more thing” to restore my working environment seemed to make sense. Because I was thinking too much about what I was potentially losing, and not enough about the ongoing costs of failed troubleshooting attempts, I continued to attempt repairs beyond the point where it really made sense.
The time I’d spent setting up my environment was a sunk cost. There was no way to get it back. It would have been better for me to cut my losses and start the reset process earlier, which would have resulted in being back up and running that much more quickly.
Sunk Costs in Business Decisions
In a similar way, sunk costs sometimes come into play in discussions with clients about how to move forward from their existing applications. Many organizations, thinking about the time and money that they’ve invested in their current solutions, seek to preserve some components of those solutions, not wishing to lose the value that those components represent.
In some cases, there may be value in re-using some components or assets. But many times, attempting to leverage or re-use existing software components can be costly, in terms of limitations those components may place on architectural choices, and/or potential security ramifications of building new systems on top of code that may not have been written with modern app architectures in mind.
To be sure, there are real costs involved in choosing to start a project from scratch when you already have working software. But there are opportunities and benefits to doing so, including architectural flexibility, improvements in platforms and tools, and more.
Sunk Costs in Career Decisions
Similarly, we as developers and consultants need to be aware of the sunk cost fallacy when considering where to invest our time in keeping our platform knowledge current. Personally, I’ve spent a great deal of time over the last dozen years or so in working with the ASP.NET stack. While there’s some validity to the notion that it makes more sense for me to stay current on ASP.NET than to, for example, go out and learn PHP at a level that would match my expertise in ASP.NET, I should not allow my past investment in learning ASP.NET to be the sole factor in choosing where to invest my time in the future. If another platform offered better opportunities as a consultant, there might be more value in spending time learning that platform, despite my past investments.
The point, both in terms of business decisions in whether to build new systems vs. re-using parts of the old, and in terms of where developers and consultants invest their personal learning and development time, isn’t to say that sticking with something you’ve invested in is a bad idea. Rather, the point is to be aware of WHY you’re making the decision you’re making, and in particular whether sunk costs are influencing that decision in an irrational way.
None of us want to throw away things that we think have value. But that loss aversion can cause us to forego opportunities that may have much greater value than the time, money, or effort we’ve already invested. And since those past investments cannot be recovered, it may be best to leave them out of the equation when making future decisions.
Do you have examples of being bitten by the sunk cost fallacy? Or suggestions for how to avoid it? Share them in the comments!