I am a perfectionist. Or, at least, I like to think I am. Either way, I’m definitely somewhere close.
That’s all well and good. Yet, I have recently realized that this was actually stopping me from becoming a better developer. At the very least, it was slowing down my progress and inhibiting my learning.
Like a lot of junior developers, and developers in general, I have a habit of not finishing side projects. Not because i’m lazy or don’t have time, but for one reason or another, I just never seem to get things finished.
Then it hit me.
When working on a project, I am striving for perfection.
That is the problem.
How do I define perfect? What does perfection mean? Is perfection really an attainable goal?
For me, I want to deliver something awesome. I want to produce something to the best of my ability.
That’s great, but as a junior developer, the dilemma I face it that I have ever increasing ability. I’m learning every day.
Considering this, how can I ever finish a project to the best of my ability?!
This is the key factor that has been slowing down my progress as a developer. I don’t know where to draw the line. I find it hard to say enough is enough and move on.
Sometimes it even gets silly…
6 months ago, I wrote a simple URL shortener to get familiar with the Symfony framework. I spent a few evenings on it and had a basic working product and a great introduction to the framework. Happy days? Well, not exactly.
Believe it or not, 3 months later I was still tinkering with this tiny project. Fiddling with the styling, improving the form submission with Ajax. I even considered implementing Vue or React.
As my ability and knowledge increased, I just couldn’t move on. I kept seeing better and better ways to improve things.
This is great in a commercial environment. It’s awesome to be driving improvement and iterating on a product or project.
As a little learning project, though, I was over engineering and trying to solve a problem that didn’t exist. This wasn’t me starting out trying to build a competitor to Bitly. I was building a little side project to reinforce my learning. In reality, no one will ever even see this project!
I’m not alone either. Even the most experienced developers will experience a similar situation at some point. When they look back on the code they wrote several years ago they will probably hang their head in shame. They might even be appalled by the code that they wrote several months ago.
As a developer, no matter what level you are at, you are constantly learning. Its the nature of the beast. Its only with experience that you learn to let go and move on.
Easier said than done. As a junior or aspiring developer its much harder to ‘just’ move on. In reality, unless your code is being reviewed, you don’t have a concept of what’s actually good and what’s bad.
My advice is that when you’re learning, build something until it works correctly and looks decent, and then forget it and move on. Don’t look for perfection. There are bigger and better things for you to be learning and working on than tweaking the padding on your tribute page. Take it from someone who’s been there!
I finally understand the phrase “done is better than perfect.” The 80/20 rule.
When you are learning, all your projects don’t need to be perfect. They are exactly that — projects for learning. Just let them go.
It’s not an efficient use of your limited time, to be fiddling and tinkering and trying to squeeze out that last 10% .
In web development, perfect doesn’t exist.
Unless maybe… done === perfect.
Time to move on to bigger and better things.
If you enjoyed this post and are interested in similar stuff, check out my next post: Getting comfortable being uncomfortable!.
Want this and other exclusive content delivered straight to your inbox? Sign up for my newsletter 📰.