I admit it. I am a perfectionist when it comes to programming. I am not satisfied with any code that I write. I find myself constantly going over old code and re-working it. I can hardly write new code without thinking "What is wrong with this code?" or "What is going to break this code?" or "There must be a better way to do this." I believe I might get more work done if I could simply control these "urges" of perfectionism. Does anyone else have this "problem"? If so, how do you tell yourself that it's time to move on?
may seem painfully obvious, bug perhaps having well-defined requirements might help. with good requirements and some clear priorities, you can allocate your time accordingly based on how your app meets (or not) the requirements at any point in the process.
Perfectionism is not a problem, in my book. And I would say that I would much rather work with someone who spends extra time making things too perfect than someone who pumps out many lines of sloppy code that gets the job done (or uses spot fixes if they don't).
Isn’t “gold-plating” the industry’s euphemism for this sort of behavior? (At least that’s the word I’ve heard certain managers use to describe it)
Yesterdays code always seems imperfect. My rule is, "If in doubt, rewrite.". Often the way we solved a problem is narrow-minded, or not precise enough. For this reason, if we don't strive for perfection, all we will have is a sad archive, in my opinion.
my previous post:
I have the opposite problem; if it works , I try not to look at the code ever again. Even if it doesn't work, I try to spend as little time as possible fixing it. Someone has to keep maintenance programmers employed. In regards to your condition, maybe you just need a hobby, or a girlfriend.
I read an interesting quote from an "ex-perfectionist" programmer. Instead of spending so much time writing Perfect Code, he decided to settle on finding the Perfect Compromise.
I have to confess that I too have this problem. Part of it has to do with certain perfectionistic tendencies in my personality and the rest is because I have done a lot of maintenance work over the years. Nowadays, thanks to Martin Fowler I can simply tell others that I am refactoring my code. :-)
one programmer's opinion
I frequently find myself wanting to rewrite old code now that I "know better", and wanting to rewrite code I've inherited because I know I can do better.
Better than being unemployed...
A successful commercial project must cover required functionality, quality and timeframe - constrained by availability of resources. Miss one required item and the project becomes a failure.
I agree with the above. You have to balance all of these, and there is no such thing as perfection anyway.
The problem with perfection is it implies time is free. I agree refactoring is a normal part of the development process but once you reach the point that you would feel good about a detailed code/design review, you're getting diminishing returns.
Define a simple but detailed test case. Write the minimum amount of code required to satisfy the test.
fool for python
Perfectionism is a form of procrastination.
If you are *refactoring* code -- definitively improving its readability, speed, robustness, etc. -- then I say, this is not a problem. Refactor away.
Brent P. Newhall
I am a bit of a perfectionist, but I generally don't go for rewrites. I try to spend some time thinking about what I'm doing ahead of time and getting the design right the first time. If it needs refactoring, fine, but I'd just as soon figure out a good design first, rather than refactor a crappy off the cuff design later.
A perfectionist would never say 'I am a perfectionist, I always need to improve and keep going over things'.
"This is like the idea that incompetants always rate themselves highly because they don't understand what it is to be competant and cannot judge their own preformace accurately. The highly competant understand the complexities and are well aware of their failings and so rat themselves poorly."
well said Braid.
Just me (Sir to you)
Fog Creek Home