I am a perfectionist. Or, at least, I like to think I am. Either way, I’m definitely somewhere close.
While that’s all well and good, what I have realised recently is 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 just 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 just building a little side project to reinforce my learning. In reality, no one will ever even see this project!
I’m not alone though. Even the most experienced developers will also experience a similar situation at some point. When they look back on code they wrote several years ago they will probably be horrified and 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 just that with experience, 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 really have a concept of what’s actually good and what’s bad.
My advice — when your learning, build something until it works correctly, 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. Just let it 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.