Sunday, February 11, 2024

How do some (software) projects become vaporware?

"Vaporware" is a term generally used for a project that's announced by a company, which then takes an inordinate amount of time to complete, and might in fact never be completed even though years and years, sometimes decades, are spent on developing it. Sometimes the project does eventually end up being released; however, most often than not it turns out to be less than stellar, sub-par to various degrees, and gets critically panned and disliked. Very often this is because, probably due to its extremely long development time, its technology is antiquated by the time it gets published and may still contain a lot of missing or buggy features (no doubt having not been completely finished for the exact same reasons it was so immensely delayed in the first place.)

Hidden behind the layer of publicly announced "vaporware" is, however, an immensely bigger layer of what could be called "eternal projects". These are projects that have gone over any reasonable timelines by an order of magnitude, but which have never been announced publicly by the company (most likely because the company only wants to announce finished products, not future projects.) These are, essentially, "company-internal vaporware", normal vaporware, just not announced in advance to the public.

Projects (software and otherwise) that go nowhere are extremely commonplace in all kinds of technology companies. Someone presents an idea, development is started, but it turns out that for one reason or another the idea is actually infeasible, or would take way too much time and resources, or in practice isn't as good as it sounded on paper, so it's abandoned. Usually in the timespan of a few months, a year at most.

However, these "eternal projects", "company-internal vaporware" projects, may be developed for years and years and years, sometimes even for over a decade, with no end in sight, even though it never seems to be even close to be finished, nor usable in practice, or something that actually feels like a good full video game (if the project is one). Rather than being cancelled after a few months, they are just stubbornly continued for many years, even though it never seems to get even close to finished.

But why? And how does a project become this kind of "eternal project" (either publicly announced or unannounced)? Why don't companies just cancel such projects when it has become clear that they aren't really going anywhere?

Having had some personal experience with these things, I can speculate from my perspective about some of the reasons.

One of the major, perhaps most obvious, reasons is the sunk cost fallacy: People managing and running the project (and, in my experience, it most usually tends to be them, rather than the developers and engineers themselves) get into the strong mentality that the project actually is going somewhere, that a finished product is just around the corner, it just needs a little bit more of work, and it will finally be finished, the final breakthrough in the project will be achieved, and the finishing touches will be routine and smooth sailing from that point forward. And, of course, where the "sunk cost fallacy" kicks in is that they have this strong feeling that because so many years and so much money have already been spent on the project, it would be a huge loss and an enormous waste to just stop and cancel the project. The team has spent all this time, all this effort, all this work, and there is years and years worth of material that has been produced by the team, and they are so close to finally get a working result, that it would be unthinkable to throw all that work, effort and money to the trashcan.

These managers, however, often get blindsided and can't see that the project actually isn't going anywhere, and the existing work is just outright bad, and that the project should have been cancelled literally years prior and all the developers and engineers moved to some other more productive projects. The developers themselves can often see this, but they either don't really want to say anything, or of they do, their objections are dismissed.

But how does a project, like a software project, end up in this state? A state of being, effectively, eternally "stuck" in a state where it's seemingly being constantly developed but it's getting nowhere, it's not actually advancing towards a final product?

There may be many reasons for this, but one common one is a lack of a plan, a very exact vision of what the final product must be like, planned before development even started. In other words, the project started as a more generic idea and took the approach of "let's plan the details as we go". For example if the project is a video game, the plan might have been to create a game of a particular genre, with certain features... but that's it. All the actual concrete details are made up during development, "as we go." There is no precise and exact final picture of the end goal.

This usually ends up in a form of development where the development itself is used as a testing bed for ideas and features. The person or people running the project may come up with new features to try, new ideas, new mechanics, to be tested on the project currently in development, to see if they work. These new ideas might literally come on an almost daily basis. "Let's try this. Let's try that. Let's change this into that. Let's add this to that. Let's remove this. Let's re-add this previous removed feature." An endless stream of new features and changes to the existing project, which just accumulate and accumulate over the years, but without any concrete vision nor plan of the final product.

One reason why a project manager may engage in this is that he completely misunderstood what the "agile development" paradigm actually means and entails. (Yes, actual case from personal experience.)

Such a project manager might get completely blindsided and, ironically, completely unable to see the bigger picture. The fact that the project isn't actually going anywhere, and is nowhere even near to be finished, and that the current project is in complete shambles, a complete mess, when it comes to an actual good design, and for example if it's a video game, it's not anything that anybody would play or enjoy.

Bosses, CEO's and other higher-ups might also be blindsided by the project. Perhaps they are presented previews of the product, which present a picture of it that looks way better than what it actually is. Company-internal deceptive marketing of sorts. The higher-ups might seriously get the wrong impression that the product is better and more finished than it really is, and thus not stop it.

Or, in many cases, it's precisely the bosses and CEO's who are the ones engaging in the endless cycle of trying new features without a clear plan nor goal of the end product, unable to see that the project is a complete disaster and should have been cancelled years prior.