This post is also over on my personal blog.
Let's face it: nothing you make will ever be absolutely perfect. Some people may not like the final product. Maybe you could remove a paragraph or two from your blog post or reword a few sentences. Your code could probably be refactored in a few different places. That drawing might look cleaner if you erase a couple of smudges.
We all know what happens to projects once we start falling down these rabbit holes. "I'll just spend a couple of minutes fixing this little thing," can turn into a few hours or longer if you're not careful. In my experience with code, it could take even longer because you might accidentally break something totally different while trying to clean up a few functions.
Obviously, there's a time and a place for everything. Projects put you through various phases of pressure. Sometimes, you don't have the chance to make the code as beautiful as you want. Functionality is almost always more important because your client probably won't ever see your code. All they care about is that their product works well. So, when it comes time to punch, try not to worry too much about making the code perfect.
Rather, make some quick notes about where the code needs some help and what you might to do make it better. Hopefully, you can go back later and make the improvements, but if that isn't the case, you can either pass those notes along to the next person or use them to explain what you learned about the project experience. People expect you to learn more than anything. They will value the experience you have to share.
Did you know I have a newsletter? π¬
If you want to get notified when I publish new blog posts or make major project announcements, head over to https://ashleemboyer.com/newsletter.
Top comments (24)
I totally agree!
Putting this words in practice can be very hard for 'perfectionist'. I wrote from a book about Pomodoro technique that "perfectionism is [a sort of] proscratination".
Thanks for this useful article!
So happy you enjoyed!
I'm definitely a perfectionist. It can be both a strength and a weakness! Letting go of things I can't perfect is sometimes painful, but I'm working on it. There is hope. π
I remember reading an interesting take on perfectionism as a form of procrastination... if you have any links about it, would love to read more!
Great article. I really enjoyed it β especially the pragmatism of βa time and a place.β By the way, I also struggle with perfectionism as procrastination. I have an article coming up in my queue about it.
Hereβs a sampling:
βEvery one of us has the tendency to run. We have run all of our lives, and we continue to run into the future where we think that some happiness may be waiting.β
~ Thich Nhat Hanh
Awesome! I'm following you now so I can be sure to see it. Now I really need to find the post I've read about perfectionism/procrastination. It's a fascinating concept.
Yes, Iβd love to read that article if you can find it. I have a couple of references in my article because I always like having citations. But yea, perfectionism is probably pretty common in our industry since weβre asked to βmake it always work.β Thatβs why Iβm so fascinated by trying to fail as a way of learning. :) βFailing fastβ is basically the core of mindfulness and engineering (as far as I can tell). I see youβre a lover of learning too! So Iβm excited to follow back and to read your future writings. :)
I want to read more about this "failing fast" thing! My life changed when my therapist told me about mindfulness about 3 years ago, so I'm especially interested now.
Here's a link. It's not exactly what I saw before, but I think it does a pretty good job of explaining the concepts. What I saw before must have been a tumblr screenshot or somthing.
I don't have the link. The book's title is Pomodoro Techniques Illustrated
I thought I was the only one.
Sometimes I spent weeks analyzing "the best way" to do something and ended up doing nothing in time.
But yes, I learned a lot, I took great care of the code and avoided many errors and future mistakes.
You're definitely not the only one! I think it's an industry-wide thing. Many people are afraid to make mistakes for fear of looking unintelligent. Learning is what's important.
I tell myself: work a lot now to save time later. This expression means: dedicate enough time to study and understand the problem/task you are facing now to avoid going blindly.
Most of the time, we waste time because we don't spend enough time thinking and we jump in with the first
shittyidea that cross our minds ππ.I like to pay attention to little details. Perfeccionist? Sure! But I agree! We need balance and know when some work it's good to go.
Great post! Cheers.
"Work a lot now to save time later." What a great thing to keep in mind. Nobody wants to do work over and over again. Let's get it right the first time!
I can't tell you how many times I've jumped too quickly on new project ideas. I probably have 3 dead Github repos right now. π
Great post!
I used to have a ton of trouble knowing when I was done with a project. I could work on something forever, improving it and tweaking it. I've learned to define what Done looks like when I start, so I know when to stop.
Nothing is ever perfect, you have to learn to what Good Enough is.
Totally agree. That's something I struggle with sometimes, probably because I'm still fairly new to web dev. I know that with practice and experience, it'll become easier to invision the final product of ideas and their feasibility.
In my opinion, perfectionism sometimes stems from your ambition as a dev to know exactly how something works.
For example, these days Iβve had a task to build a website for a small company and I was the only one on the team who wanted to avoid using Bootstrap & jQuery.
We did it my way, because I was the most experienced among the team members. This entailed the fact that I spent a lot of time converting their work(which was built with bs &jq) into vanilla css & js.
But, at the end of the project, I can say that Iβm glad things went this way. The code is clean and readable. I wanted to improve my css skills and I did it.
Despite this, Iβll never do this to my team again. I shouldβve respected their decision, but I want to improve myself at the same time.
Iβm sorry if I digressed a little bit. This was an important lesson to me.
Thanks for the post!
I agree with you, and this sounds like it was a great learning experience for you in multiple ways! You got to polish your skills and a few takeways from the team experience.
I agree with everything you said, we all have this idea of how 'this time it will be perfect and clean' and then the bugs and the patching start.
One thing I try to do is keep comments in the code in areas that I suspect someone will have to return to one day and to keep commit messages as useful as possible when patching.
I guess that saying is true, the perfect code and the perfect app is one you don't write a line of code for.
Yes! Let's get more people to write meaningful commit messages. Re: code comments, those dudes should be using sparingly in my opinion. Sometimes code is pretty crazy, so I get using comments in instances like that.
Those are great points, I totally agree. Just today I was thinking about how much we overthink and overengineer things that could be done in a simpler way, and made better afterwards. I think it comes from our fear of "being wrong", and fear from being corrected by others. And getting bad feedback or empty / toxic criticism definitely intensifies the problem.
Yes! I think we're slowly changing the culture of the industry (at least I'm hoping so) and making it less competitive. Too often, people want to beat each other down so they can "win". Let's promote an environment of meaningful feedback!
Thanks for sharing, Ashlee.
Absolutely!
The simpler, the better.
Agree. :) Add flair when and if there's time!