Everyone tells you to build a calculator when you're learning to code. It's the project interviewers smirk at on your portfolio, the one that earns an eye-roll before they even open the repo. I built one anyway — and somewhere between division by zero and a user mashing the equals button, that little grid of buttons taught me to think like an engineer. Ten years and a career in cloud infrastructure later, I still lean on the lesson every single day.

The Project Nobody Respects

My first real project was a calculator. JavaScript for the logic. HTML for the button grid. CSS Grid for the layout — my first time ever using it. No frameworks. No libraries. No calculator API doing the hard part behind a fetch call. Just me, the DOM, and more console.log statements than I'd ever admit to in an interview.

I thought it would take a day. It took the entire week.

Where "Simple" Falls Apart

The math was the easy part. Add, subtract, multiply, divide — a few lines each. I got the happy path working in an afternoon and felt like a genius. Then I actually started using the thing.

I pressed equals twice and got a completely wrong answer. I chained three operations together and the display showed something that wasn't even a number. Someone typed two decimal points in a row and the whole thing froze. Division by zero did something I still don't want to talk about.

None of that was math. All of it was engineering.

State Management Before I Knew the Word

I didn't have the vocabulary yet. I'd never heard the phrase "state management." But that's exactly what I was drowning in. A calculator isn't a math problem — it's a tiny state machine. What number is currently on the display? What operation is pending? Did the last keypress end a calculation or continue one? Is the next digit starting a fresh number or appending to the old one?

Every bug was a question about state:

  • What happens when someone presses equals twice?
  • What about chaining operations with no equals in between?
  • What if they type a decimal point after they already typed one?
  • What's the dumbest possible thing a user could do — and does it still work?

That last question changed how I think. It stopped being "does this work?" and became "what's the worst input a human can throw at this, and does it survive?" The gaps between the happy paths — that's where the real engineering lives.

From a Calculator to Cloud Infrastructure

Here's the part I didn't see coming: every one of those skills followed me.

Event handling. State management. Edge-case thinking. The plain discipline of finishing something instead of abandoning it at 80%. I use all four every single day now, managing cloud infrastructure at a scale my beginner self couldn't have pictured — hundreds of VMs, Terraform, CI/CD pipelines, Azure.

The context changed. The instinct didn't. User input is unpredictable, whether it's a stray decimal point or a malformed API request. State matters even in small systems — especially in small systems, because that's where you convince yourself it doesn't. And edge cases aren't annoying exceptions to the "real" work. Edge cases are the real work.

When I review a Terraform module or design a pipeline today, my first thought is the same one that calculator drilled into me: what breaks this? Not "how do I make it work" — I can always make it work. How does it survive the person who presses equals seven times in a row?

The Simplest Project, the Deepest Lesson

Everyone wants to build the next big thing. Nobody dreams of building a calculator. But the ambition to build something impressive and the ability to build something correct are two different muscles, and the boring project is where you train the second one.

Making something work is easy. Making it survive a real user — that is engineering. A calculator that handles 0.1 + 0.2 correctly, that doesn't freeze on a double decimal, that gives the right answer when you hammer equals — that quietly proves you understand more than most.

So build the calculator. Build it with no libraries. Break it on purpose. The simplest project can teach the deepest lesson — if you let it.

What's the simplest thing you ever built that taught you the most?