So, the current task is to write a program to convert data provided by another company from format "A" (their internal format) to format "C" (our internal format).

The original plan was that the other company would provide the data in industry-standard format "B", and we would write a converter from "B" to "C". Four weeks of development later, we've got a program that does that flawlessly. However, it turns out that when faced with real-world data (as opposed to test data), the other company's converter produces a dialect of format "B" that is human-readable, but not easily machine-readable.

I estimate that it would take eight to twelve weeks of trial-and-error programming to adapt the software to this dialect of format "B", with no advantage towards importing anyone else's data (the original reason for using an "A" to "B" to "C" conversion chain). In contrast, writing a direct "A" to "C" converter would take about three weeks.

However, my boss wants to go with adapting the existing converter on the grounds that we've already spent four weeks on it, a classic example of the sunk-cost fallacy. How do I communicate this to him?


Personally, I'd characterize either approach as a separate converter (particularly for a non-technical boss) and just lay out the options.

Boss, I agree that it sucks that we're not getting the data in format B from the other company. On the other hand, we can import data from everyone else now so the effort we put in wasn't wasted.

In order to load the data from the other company, we're going to need to write a custom converter. We can build a converter from the original A format. That will take 3 weeks and is likely to be more reliable because it will only have the one conversion. Or we can build a converter from the modified B format. That will take 8-12 weeks and will likely be less reliable because we're doing two separate conversions. In either case, it's going to be work that is going to be specific to the other company. And in either case we'll reuse whatever code makes sense to reuse from the converter that we've built. I don't see any reason to take potentially 12 weeks when we can accomplish the same business goals with a more reliable solution in 3.

If your boss really wants to go down the 3 month path because that reuses more code, that's his call to make even if it's wrong. But I've yet to see a boss that wants to spend 9 more weeks building something unless they get some benefit from the extra time invested.


This is a flaw in the way that humans think in general, so good luck. I think you did a good job of explaining it in the OP. Continue to use numbers and tangibles like "this is going to take 3 weeks to build vs. 2 months to build the other thing" and away from intangibles like "look, it just makes more sense to do it this way". I think the only way you can really get around this flaw is by saying "X is larger than Y, therefore X". Even if your boss objects by saying "we've pushed so many resources into this so far, we can't switch courses now", I think you've got to answer with "yes, I know, but the situation we're in right now is that it's going to take less time to ignore that work".

I will say that whatever you do, don't actually say "sunk cost fallacy" in the conversation unless you're in the (very rare in the business world) position of having to win an argument over a third party where you don't care about their feelings. It's also a basic aspect of human intellect that nobody likes to be told that they are wrong, and they especially don't like to be told that they are committing a fallacy. Even if they are. Especially when they are. There is an art to explaining stuff like this to people.

  • 1
    +1 for giving the advice "whatever you do, don't actually say "sunk cost fallacy" in the conversation" – Old_Lamplighter Mar 9 '16 at 16:48

If the boss doesn't understand the "sunken cost" fallacy at his age then you won't be able to explain it to him or her.

I'd suggest to check if you can keep the boss happy and your sanity intact by writing an A to B converter that actually works. (Based on the understanding that you have a working B to C converter, a broken converter translating A to B', and converting B' to B is close to impossible, but converting A to B should be fine).

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .