The weight of starting

There’s something uniquely exhausting about starting a new project. Not the kind of exhaustion that comes from hard work, but the kind that comes from realizing you’ve gotta do all the setup work again. The nameservers need changing, the registrar needs updating, you need a new Terraform skeleton, a fresh Packer template, and somewhere in there you remember you should probably set up monitoring before you need it, not after everything’s on fire.

The funny thing is how quickly you forget these details between projects. You finish one thing, you move on, and by the time you’re ready to start the next one, your brain’s helpfully deleted all the “oh right, I need to do that too” moments from memory. So you sit down with your grand idea, ready to build something cool, and immediately hit a wall of infrastructure chores that make you question whether this whole thing is worth it.

It’s tempting to just skip the boring parts. Set up the bare minimum, get something working, and deal with the rest later. I’ve done this more times than I care to admit, and every single time I’ve regretted it. The tech debt compounds faster than you think, and before you know it, you’re spending more time working around your shortcuts than you would’ve spent just doing it right the first time.

What I’ve learned, slowly and painfully, is that the right mentality at the start saves you so much pain later. Not perfectionism, not overengineering, just taking the time to set up the foundation properly. Change those nameservers now, not when you’re trying to debug why DNS is broken at three in the morning. Set up the Terraform structure correctly from the beginning, not when you realize you need to refactor everything because you started with a single file and now have fifty resources. Build the Packer template with the right base image and configuration, not when you’re trying to figure out why your deployments keep failing.

The mental shift is subtle but important. Instead of thinking “I’ll do this later,” you think “I’ll do this now so I don’t have to think about it later.” It sounds obvious when you say it out loud, but in practice, when you’re excited about a new project and just want to start building, it’s incredibly easy to skip ahead to the fun parts.

The irony is that these setup tasks aren’t even that hard. They’re just tedious. Changing nameservers takes five minutes. Setting up a proper Terraform structure takes maybe an hour. But in the moment, when you’re full of ideas and ready to code, those tasks feel like they’re standing between you and progress. So you skip them, and you pay for it later.

If you’re starting something new right now, I’m not gonna tell you to do everything perfectly. That’s a recipe for never starting anything. But I will tell you to do the infrastructure work first, before you get too deep into the actual project. Set up your foundation, configure your tools, and then build on top of it. Future you’ll thank present you, and present you’ll thank past you for not leaving a mess to clean up.

The beginning’s the hardest part, but it’s also the most important. Get it right, and everything else gets easier. Get it wrong, and you spend the rest of the project working around your own shortcuts. I know which one I prefer, even if I don’t always remember to do it.