Done Is Better Than Perfect

This project is going to be perfect. You're not going to cut corners. You're going to finally do things the right way™ even if that means working way harder or taking way longer.

But how do you know what "perfect" is? If your feature isn't released yet, you don't really know how users are going to use it. You'll never know less about what your project needs than right now, so how can you know everything you need to do to make it perfect.

Get it done. Then improve it. And improve it again. Ship something small first. See how it holds up to real-world use. See what makes it hard to work on. See what tools/tests/metrics you wish you had.

Before you can optimize you have to know what matters and it's hard to know what matters until your code touches the real world.