Sunk Cost Fallacy & How To Be Unsinkable – Dev Leader Weekly 31

Welcome to Dev Leader Weekly!

I’m happy to announce my next Dometrain course is available now! Nick Chapsas will be announcing this course on Monday and it will be paired with a deal for my NEXT course launching at the end of March. If you get this course, my third course will be heavily discounted.

Getting Started: C# - Dometrain Course

And did you enter to win the dotUltimate 1 year license giveaway? This draw will end on March 1st 2024. You earn the most entries by referring your friends to the draw:

Promo - JetBrains - dotUltimate License

If you enjoy my content, you’ll love premium membership access to my site! This includes:

Let’s dive in!


What’s In This Issue


The Sunk Cost Fallacy

What Is The Sunk Cost Fallacy?

It’s got a funny name, but you’ve probably at least heard of the sunk cost fallacy. It’s this situation where we’ve invested time, energy, and other resources into something that turns into a “sunk cost” — as in, we’re not getting them back. But given the situation, the progress or the results we’re seeing are not lining up with the level of investment.

But since we’ve already come so far and we’ve already put so much time and money into it… it would be silly to give up now! We should put a little bit more in to make sure we can get it to where we need to be.

Maybe just a bit more now… Okay, just a couple of extra weeks and a bit more money… Okay for REAL this time this is it.

You see where this heads, right?

Failing in Public and My Sunk Cost Fallacy

I made a vulnerable LinkedIn post yesterday about my most recent run-in with sunk cost fallacy, and I’ll come back to it at the end of the article. But I wanted to talk about another situation that came up recently that’s a lot more applicable for software engineers.

My Nutrition Platform

I’ve been working on a nutrition platform for the past few years called mealcoach.io. The goal of the platform was to automatically create custom-tailored meal plans for individuals who wanted to save time with their nutrition, and even better — we could save time for coaches doing this for their clients that they’re training.

The idea was great but since we’re experienced with startup philosophies, we wanted to prove our assumptions before investing too much time and effort. So I’d continuously code a little bit on the side. Just enough to move us a bit further ahead so we’d have some experimental features to show off. I’d also get some content for articles and YouTube doing this. Slowly chipping away at building out the platform.

Testing Hypotheses on Repeat

We learned very quickly as a group of introverts it was really difficult for us to test our hypotheses. It was hard for us to reach out to potential customers and see if what we were building was right. So we’d build a bit more. I’d pay the hosting fees out of my pocket.

We’d see a potential competitor with thousands of users show up offering one of the feature areas we were contemplating building. Damn! But now we know that feature has value! Good thing we were still building… So build some more. Foot the hosting bill out of pocket. Move onto try and test the next hypothesis.

Rinse. Repeat. Two years go by.

The Straw That Sunk The Camel… Or Something.

A few weeks back now, we came across two competitors that had built *everything* we had talked about. Every single thing they had finished. They had the sales and marketing team behind it. They had built the engineering team. They had the customers onboard to their platform.

That was the final straw for me though. Even though I was years of my own personal time into this and thousands of dollars in platform hosting out of my pocket. Enough was enough. We simply couldn’t catch up at the rate we were going. My time and monetary costs were sunk and there was no getting them back. More would not help.

How is Sunk Cost Relevant to YOU?

Learning New Concepts

For the more junior folks, this might show up when you’re learning how things work. And to be honest, when it’s about learning, my philosophy is that as long as you’re extracting learning value it’s still valuable.

But sometimes it’s hard to draw the line. You might be working on a side project and trying to decide what database tech to pick. Or which cloud provider. And no matter what you pick, you’re going to be investing time into learning about it — which is awesome. This IS what you should be doing to learn.

Sometimes though, you’re days into trying to get it to work. Weeks. A month goes by. You still can’t even read and write data to the database. Does that mean you’re a failure? Does that mean you can’t continue your project?

No! But it might be a good opportunity to reflect on what you’ve learned, and perhaps move on to the next option to explore. If it’s starting to impede your overall learning progress in your project, maybe consider the next option and keep that

Projects and Products at Work

Much like the previous example… But now we’re talking about commitments to other stakeholders:

  • Your teammates who are waiting on your code changes, design documents, etc…
  • Your product owner waiting on your bug fixes and features
  • Your partner teams waiting on your deliverables and commitments

… Suddenly, other people are waiting on you for things. And if you’ve picked a path to go down and invested time and energy into it, you might reach a point where you start to realize it’s not the best path.

Maybe you keep telling yourself just a couple of extra days. I’ll get it by the end of the week. The end of next week. One more sprint.

But sometimes maybe the best answer is just maybe not. Maybe it’s time to go back to the drawing board with your team and say “Hey I think I need some help exploring another option here”. Instead of getting so far down one path maybe press pause to take a step back. I’ve seen this kind of thing get completely out of control with tech debt and refactoring when it could have been addressed with a simple conversation before it had gone too far.

Career Progression

This example may perhaps resonate the most with more senior software engineers reading this — but that doesn’t mean that others won’t find some value. I’ve seen many situations where individuals are promised a promotion after completing this next big project. Just this one more big surface area, high impact, high visibility project by the end of the year. If you just land this, we’ll have a case for your promotion.

… Okay *one* more project, and this is going to be the one! There’s no way it won’t have the necessary visibility for leadership to sign off on this promotion!

It’s a crappy pattern. I try not to put my own engineers into a position where I am telling them “Just this one next project”, but instead “I need to see consistency in these types of areas, interactions, and deliverables… this kind of project is a good example of touching on these”. It’s similar, but it helps to not tie the very specific project to a promotion — which I feel just isn’t realistic.

I went through a similar thing recently in my own career where I was delivering on and beyond what I was asked to do for promotion only to be told “Sorry, there wasn’t visibility”. Along the way, I was feeling the sunk cost. If I move on *now* then I lose all of this time and effort I’ve invested into demonstrating my value in this space. Just a bit longer. Just one more to prove I can do it.

Eventually, we need to make decisions for our careers that seem selfish on the surface… But we’re in the driver’s seat of our career progression. Nobody else is.

Wrapping Up The Sunk Cost Fallacy

I wrote about this topic because aside from my recent career change where I switched to managing teams in another org, and aside from my failed nutrition platform that I had been working on for years… I had one more sunk cost: I have been dieting for two bodybuilding shows in April. I’m about 10-11 weeks into dieting and roughly 6 weeks left to go before I get on stage. I’ve been suffering from being hungry. I have been losing sleep. I have had terrible workouts (which is where I get my meditation and personal time). I’ve been spending money on posing and coaching and physical therapy.

But the bigger cost was in my own personal relationship with my wife. I realized that regardless of all of these other costs I was putting in, these would be “sunk costs” if I walked away from my contest prep — but there’s no room for being a crappy husband to my wife. And once I started to realize just how much my own focus on dieting down for these shows was impacting my relationship, the “sunk cost” of walking away from the shows really didn’t matter. There’s nothing that can justify impacting my relationship with my wife negatively.

So this was a good reminder for me and I wanted to share the reminder with you: It’s great to work your butt off for stuff. It takes a lot of hard work to be successful in many areas of life. But it’s also important to know when we need to walk away from things.

Don’t fall into the sunk cost fallacy.


NEXT LEVEL! – Upgrading Our Blazor App With Entity Framework Core

YouTube player

In our ASP.NET Core Blazor build series, we reached an important milestone: It’s time to get started with Entity Framework Core. So in this video, I start on the next phase where I walk us through my thoughts about getting EF Core setup in Blazor. We have more design decisions that we’ll need to make after this! Entity Framework in C# is powerful, and I’m only exposing some of it in our Blazor Web app. Will it be enough?

Build Levels.fyi in DotNet! – How To Use Google Sheets API in C#

YouTube player

You’ve heard of https://levels.fyi, right? You heard the story where they built their website without a database but instead had it backed by spreadsheets? That’s the spirit of make it work, make it right, make it fast! In this video, I’ll walk you through how you can use the Google Drive API and Google Sheets API in C#.

You Can Extend ANYTHING With Extension Methods in C#!

YouTube player

Looking for a C# tutorial on how to extend ANY class or interface? Look no further! This video tutorial provides code examples so that you can write your own extension methods in C#. Using these techniques, you can extend any class in your dotnet project to be able to have more functionality. Learn the secret behind the syntactic sugar with these static methods in CSharp!

xUnit in ASP.NET Core – What You Need to Know to Start

xUnit in ASP.NET Core - What You Need to Know to Start

Learn how to leverage xUnit in ASP.NET Core tests with simple code examples. See how to write easy-to-understand test code and cover your ASP.NET Core apps!

Weak Events in C# – How to Avoid Nasty Memory Leaks

Weak Events in C# - How to Avoid Nasty Memory Leaks

Are you struggling with memory leaks due to your event handlers and events in C#? Check out how weak events in C# can help with garbage collection in your apps!

Google Sheets in C# – How to Build Your Own Levels.fyi!

Google Sheets in C# - How to Build Your Own Levels.fyi!

Interested in using Google Drive and Google Sheets in C#? Get started with the Google Sheets API to access spreadsheets in C# in your own dotnet applications!

NUnit in ASP.NET Core – What You Need To Get Started

NUnit in ASP.NET Core - What You Need To Get Started

Leverage NUNit in ASP.NET Core for crafting reliable code with confidence! Learn to create tests, use advanced techniques, and improve your code quality!


As always, thanks so much for your support! I hope you enjoyed this issue, and I’ll see you next week.

​Nick “Dev Leader” Cosentino
[email protected]

Socials:
Blog
Dev Leader YouTube
Follow on LinkedIn
Dev Leader Instagram

P.S. If you enjoyed this newsletter, consider sharing it with your fellow developers. Let’s grow our community together!

author avatar
Nick Cosentino Principal Software Engineering Manager
Principal Software Engineering Manager at Microsoft. Views are my own.