Back in the days when I was still a naive university student dreaming of someday being a project manager I remember being in a particular class discussing the idea of sunk costs in projects. For almost any project there are going to be costs for things that you won’t be able to recover such as time spent in research or marketing. Unfortunately for a lot of projects sunk costs will often lead projects to go long on after they were no longer viable, in a vain hope to recover some of the resources that were already sunk into the project. This is often referred to as the sunk cost fallacy and is aptly demonstrated by the dollar auction thought experiment. It is then a completely logical behaviour to see people act in this fashion, even when it seems to be irrational.
For an engineer like myself it’s usually pretty hard to give up on something once I’ve got it going. I’m a completionist at heart not wanting to leave a project unfinished lest it tug away at the corners of my mind for weeks on end. This kind of mentality has often lead me into sunk cost dilemmas where a project or task will take considerable time to finish but the opportunity cost of doing so far outweighs the benefits. I think that behaviour changed after my recent snap mindset change at the end of last year as after a recent talk with my current boss revealed there are some things I’ve just not followed through on, as I’ve come to realise how little benefit they actually provide.
Looking back over the previous six months I found that many of the times when I would get caught in a sunk cost dilemma would usually be when a core goal, say developing my new products, usually spawned several non-critical tasks that would be in some way beneficial. For the most part these would be quick win scenarios and for the most part they were done and out of the way in no time. Still there were several occasions when a simple problem, say getting movie information from IMDB¹, would consume an enormous amount of time whilst providing a very small amount of benefit. Realistically these kinds of things should have been left by the wayside until I had some spare bandwidth to use on them, but sometimes you don’t know how much time you’ve wasted until you’ve wasted it.
Unfortunately for me I had yet another one of those lightbulb moments when thinking about Geon and the direction its heading in. You see the initial idea I had almost a year ago (“What’s going on there.”) was taken over with the idea of getting as much information about the location as possible all stuffed into the one application. Whilst all this data is easily available and developing the components was a great introduction into the world of web programming at their heart they’re just not what Geon is about and realistically provide little value. After looking over many of the players who are in the location space I realised that most of the features I’ve included would more than likely detract from the actual purpose of my application, rather than help it.
So it’s with a painful glance towards my codebase that I realise I might need to drop a good chunk of my work before I get too caught up in chasing down yet another information feed to aggregate into it. It was a painful decision as the majority of the code is based around these ideas and I’m really quite proud of some of the tricks I implemented to get them to work. On the other hand I’ve started to get so many other ideas to improve the core functionality to make it more functional and most importantly more desirable for end users. It might pain me to take the axe to my last couple months of work but if I don’t do it now I could be chasing sunk costs for many more months to come, and that’s something I can’t really afford to do.
It feels like growing up all over again.
¹ I know right, there’s heaps of applications out there using IMDB data in their applications, so it should be really easy. What suprised me was that, although IMDB provides the vast majority of their data in flat text files, they have no API to speak of. Whilst their terms of service explicitly exclude any service from scraping their pages for information every single library or api out there does exactly that, meaning that they’re all a layout change away from being completely and utterly broken. I went through at least 5 different libraries all with varying results, and the text files seem to be missing a good chunk of information (where are the TV episode listings?).