Why Developers Build Unfinished Calculators

It's the only way to learn
Fund this Blog

If you are a developer, you probably experienced this. Right in the middle of traffic, you are driving and suddenly you are struck by a life-changing idea. It's not the first one this week. Maybe your 14th, but who is counting. Anyway, at the next red light, you pick up your phone and start recording an audio while driving, avoiding eye contact with what clearly looks like a cop's car.

At 2 AM, you wake abruptly remembering the recording. Now you're setting up repositories, debating frameworks, and buying AWS servers in the middle of the night. You are motivated. You are inspired. This time, you have convinced yourself that you will take this idea to the finish line.

Unfortunately, you won't. And that's fine.

Programmers don't use calculators. Why? Because they thought of a feature that doesn't exist on your typical calculator. So they start building their calculator. Three quarters in, they abandon it. Not because they can't do it, but because while editing the README, they found a flaw in the markdown parser. And the solution they thought of is brilliant. Maybe even the next great idea.

It might sound like I'm describing a person with the attention span of a small bird, but I don't think this behavior is a flaw. It's the fuel you need to become a great developer. That energy and enthusiasm lets you ignore all the boring bits of building, things like user auth, error handling, documentation. Instead, it allows you to dive headfirst into the fun part. Prototyping untested features, inventing an ORM, or coming up with an custom HTML tag that will change front end development forever.

Yes, the enthusiasm fades really fast, but along the way, you learn things you wouldn't have learned intentionally. You accidentally learn to optimize queries, you figure out why shadow DOM exists, you learn how to make the most of that free-tier on AWS.

As the complexity of your app grows, reality hits. You are spending all your time doing CRUD and data validation. You are starting to procrastinate by rewriting config files or alphabetizing your npm dependencies. You realize that there is more to bringing the full idea to life. Every abandoned project is a lesson in scope creep. Adding that one feature in the calculator wouldn't make sense unless it can also solves quantum physics. And you need an efficient CI/CD pipeline and don't want to reuse the crappy tools you use at work.


Kids don't climb monkey bars to build upper body strength. They do it because it's fun. And developers don't build half-finished tools to pad their résumés. We do it because playing with code is fun. And just like kids, we walk away stronger. That abandoned Twitter-for-Cats app taught you websockets. The ultra-efficient ORM taught you query optimization. With the calculator left at 75% completed, you've mastered state management and humility.

Your GitHub is a museum of projects that are almost ready, but you won't get to them, and you will remember them fondly. "If only I could have time to spend on these apps." But you won't. Every skeleton in your code closet taught you something that you are probably using today without credit.

Instagram started as a check-in app. Slack was a gaming company's side hustle. Your Blockchain-Based Pet Rock project that was supposed to change the world doesn't ever need to see the daylight. Yet, you've benefitted from the lessons.

The next time you hear that voice that reminds you "you need to finish that million dollar idea," you can laugh in its face. "You've got the wrong fellow, dude!" You were not failing, just iterating.

Today, more than ever, the world needs developers who've climbed the mountain of useless projects, survived the valleys of tech debt, and lived to code another day. So go ahead and build that calculator. Abandon it at 75%. Then use what you learned to accidentally create something actually world-changing.

The only thing better than a finished project, is a dozen unfinished ones that turned you into a better developer.


Comments(2)

Tom :

Or the simpler answer: nobody has built a great one yet. I have a million calculators on my computer and I think only one of them isn’t completely awful.

This happens in all categories of product. When nobody’s hit on the ideal recipe, everybody tries something new to see what sticks. Eventually someone figures it out, and then either everybody copies that design, or the one product becomes dominant itself.

Ibrahim author :

@Tom my point is, when you end up creating that ideal recipe, it's thanks to the lessons you learned from the previous projects.

Let's hear your thoughts

For my eyes only