Do you find yourself spending a lot of your time staring blankly at your screen thinking up ways to accomplish a task in a way that results in perfectly formatted, efficient and beautiful code? I know your pain.

Sometimes I find myself spending a lot more time making simple design decisions than I should. Usually in cases where it would actually have no or very little impact on the game itself. I ask myself which way is the "correct" way to do it, often until giving it a break and finally deciding on something that I believe will just be temporary.

The entire game has probably been rewritten more than three times since I started.

We wants it, we needs it. Must have the precious code.

As a perfectionist you'll spend a lot of time working on your precious code, but even on more planning it. And a lot of time by CTRL+F find and replacing and renaming. All to make your code more logical and easier to look at. Ideally, a brief glimpse should tell you everything you need to know about the code you're looking at. Of course, that is not always so easily maintained, and that's when the perfectionist will spend a lot of his time to create a true masterpiece of components and sub-components in a object-oriented fashion. Perhaps even ending up with a more complex solution that will be even harder to modify if need be, and thus eventually scrapping it.

Is it worth it?

In the end, will it really matter? No, not as long as the outcome is the same to the user. In reality, what really matters is what you give to the user. The user will most likely never even see your code, and if he did, would he really care about how perfect it was? Again, most likely not.

This is the sad truth for the perfectionist programmer. Often the reason for our doing is that the better we make the code now, the easier it will be to handle it in the future. This is true, no one likes to dig into a disjointed hell of messy code, but at some point it really has to stop. In the end it soaks up so much of your time, hell I think I'd almost had this game completed if it wasn't for all the times I've decided to remake something in a better fashion. Slight exaggeration, but you get the idea!

Forcing oneself to be lazy

Sometimes you'll just have to bring that lazy programmer-mind of yours to finish off the job. In the end I found that some solutions that I believed only to be temporary actually last forever, without problems.

On reasonable occasions..

Of course, optimization is one thing and design another, a user will notice if the game doesn't run well and it's your responsibility as a developer to make sure the game runs well for all of your users. However, there is a limit to optimization too - if I can make a process run 5% faster and it's gonna take me two days to accomplish that, I should probably spend that time working on something more essential.