Celebrating the dead (projects)

Emre Baran
Qubit Engineering
Published in
3 min readFeb 11, 2016

Engineers are perfectionists by nature. Celebrating success is not something they are good at because of the nagging feeling that things could be improved further. As a result we have not celebrated all the successes that we should have. Recently, we have discovered and started celebrating a new type of event at Qubit Engineering: celebrating the dead products, features or code bases.

Historically, product and feature launches at Qubit have been very subdued affairs. This is partly due to what we felt were incomplete launches. We launch products early so we validate our ideas and learn about the market’s needs.

As Reid Hoffman put it: “If you are not embarrassed by the first version of your product, you’ve launched too late.”

When we launch early, in the back of our mind, we always know too that there are many more things to build and enhance before we can be really proud of a product. We are obsessed with making our products the best there is — not just in terms of features and great user experience but also in terms of the underlying engineering. As a result, there is always one more refactoring to be done or one more optimization to add. In moderation, this mindset is essential for good engineering. However, steps must be taken to prevent it from spiralling into a vortex of negativity.

Additionally, the continuous delivery concept is not contributing much to this cause either; major version releases are becoming obsolete.

While our approach has served Qubit well, there’s a problem. Engineers are not just emotionless robots. We are all a bit human too. Not celebrating success or major milestones eventually makes us feel unappreciated. After all we are a startup, and the golden days of dot-com startups were full of parties.

To address all of these issues, rather than celebrating launches, we now celebrate the retirement of old products, features and systems.

Completely shutting a system off means that we’ve either built a better product and migrated all of the users and data onto it or we got rid of unused features that required maintenance (good riddance).

Focusing only on celebrating the launches leads us to a position where we have to support many legacy versions and to accrue a lot of technical debt. Retiring products proves to be a productivity booster and enables us do things 10x better. Not having lots of technical debt on an old stack also is a great improvement in morale since no self-respecting engineer likes working on shitty old code/features.

On the horizon there are many depreciation parties I am looking forward to. I cannot wait to put the products ad systems in question to rest and have tombstones for each one of them on our walls so we can fondly remember our past and keep looking forward to the future; it’ll be our way of respectfully commemorating each milestone as we replace our existing products and technologies with the latest and greatest in order to keep up in the global technology race.

--

--