2. Make it Work, Then Make it Work Well

This essay is part of my 42 Deep Thoughts project.

I came up with this formulation — make it work, then make it work well — when I was getting into web development, and it’s something I’ve been preaching to every team I’ve had the privilege to work with.

Perhaps it’s my ADHD, perhaps everyone has this issue, as I was working to build things early on I would tend to get distracted by better ways of getting them done, and I wouldn’t ever finish the project because I kept starting over.

This pitfall is different from the technique of finishing something, deleting it, and rebuilding it again and again. Notice the finishing part there, that’s crucial. That technique is a great way to learn, and build, mastery.

There’s a sense that you want your finished product to be perfect. Eventually, perhaps, it will be. But it’s more important to get something done and out there, then to make it perfect the first time.

Analysis paralysis sets in. Whether the project is software, art, or even cleaning your house, it’s easy to focus on making it perfect and never actually finishing what you’re doing.

There are several issues with striving to get things perfect the first time.

First of all, especially when learning something new, it can be discouraging to never finish anything. The sense of accomplishment, fulfillment, that you get from creating something powers the learning process.

There will be things you’ll learn along the way about how the finished product should look. Each new discovery will change the way you see the whole solution. Until you have a finished working prototype, you’ll never be able to see what the best solution really should be. There will be things you’ll only discover once you see everything working.

Another serious problem with making the first version of your project perfect is that you won’t know how well it accomplishes what you’re trying to accomplish, until it’s done and other people use it.

They say that if your product is perfect when you launch it, you’ve waited too long to launch.

Especially if you’re building something for other people to use, the chances of getting it right the first time are next to nothing.

The tight feedback loop you get from getting something workable out there and used, then perfecting it quickly based on real-time usage feedback, is magical.

This concept is deeply rooted in agile, and lean methodologies.

So when you’re working on something and find yourself distracted by a shinier way of getting it done, don’t stop. Make a note of the alternative path, and push on.

The caveat to this is that once you’ve completed a LOT of projects you will be able to perform at a much faster pace, and sometimes it is prudent to stop mid-project and start again along another path; or to clean up as you go. But that level of performance only comes with mastery.

Once you’re done, once you’re finished with the project, then you can go back and make it work well.

About the image: Creation by Alessandro Dari Gioielli, alchemist.