I tend to let perfectionism get in the way of progress in my software development. This can happen on many levels:
- coding *too* carefully, not leaving any time to write tests or leave good notes
- delaying new code to overdo structure, even though refactoring is always inevitable (and usually fun!)
- overplanning an architecture, in ignorance of all the problems it will *actually* have to solve
- constantly trying to re-”decide” if a product is worthwhile, instead of seeing what users think
- worrying about mastery in a given domain, before even setting foot in it
This isn’t to say that I don’t try to do my best at all levels. It’s to say that time spent practicing — time spent making mistakes and learning from them — is rarely time wasted. Sometimes I catch myself spending as much time trying to make the best decision as it would take to actually try one good option or another. Other times I don’t catch myself!
Is perfect the enemy of better? Grace is someone willing to pay for my mistakes themselves. I see many of my weaknesses as a programmer and designer, I know there are more I don’t see, and I’m not proud of any of them. My pride ends up working against itself, though. There is just enough grace in the world for me to waste time not making mistakes when I should be making things better.