Fog Creek Software
Discussion Board


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?

Tuesday, January 14, 2003

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.

(sometimes, i just don't have the energy for capital letters ;-)

Tuesday, January 14, 2003

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).

I tend to work towards perfection (not that I attain it, but I know when something is suboptimal and I work to remedy it).

As for moving on, my focus in my software is generally on the result. I try not to get hung up on some little detail, and leave things often less than perfect, but good enough, so that I may move on to finishing the task.

I may flatter myself by saying so, but I'd like to think that my picky "good enough" is better than the spot-fixing-just-make-it-work-now-kludger's "good enough".

Mike Swieton
Tuesday, January 14, 2003

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) 

Nick B.
Tuesday, January 14, 2003

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. 

Sebastian M.
Tuesday, January 14, 2003

my previous post:

s/bug perhaps/but perhaps/

jeeze - what a freudian slip! --so much for perfection.

Tuesday, January 14, 2003

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.

Tuesday, January 14, 2003

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.

Wednesday, January 15, 2003

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
Wednesday, January 15, 2003

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.

However, over time I've managed to hold off doing this, simply because it takes time to refactor code that's ugly but working, without providing any perceived benefit to the end user.

Still bugs the hell out of me about why the bozo didn't just write the best code in the first place...

Better than being unemployed...
Wednesday, January 15, 2003

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.
In a comercial project a piece of code is "perfect" when it has the proper quality, is delivered on time and it covers all specified functionality.

Wednesday, January 15, 2003

I agree with the above. You have to balance all of these, and there is no such thing as perfection anyway.
Software is something that can always be better, inside and out. As with everything else in life, you have to compromise.

Wednesday, January 15, 2003

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.

Eric Moore
Wednesday, January 15, 2003

I practice what I call "code Detente". If the code isn't bothering me, then I don't bother it.

By that I mean, if the code does what it's supposed to then I don't mess with it. If I need to do an enhancement or fix a bug, then I'll refactor like mad, but until that time it's live and let live.

Bruce Rennie
Wednesday, January 15, 2003

Define a simple but detailed test case. Write the minimum amount of code required to satisfy the test.


fool for python
Wednesday, January 15, 2003

Perfectionism is a form of procrastination.

What are you afraid of? That some future maintainer will think that you are an idiot? That it will need refactoring?

Discipline your self to write in a clean style. I always imagine that I will use my code as an example in my next code review/mentoring session.

Write the minimum required. Assume that any useful code will be refactored.

Anonymous Coward
Wednesday, January 15, 2003

If you are *refactoring* code -- definitively improving its readability, speed, robustness, etc. -- then I say, this is not a problem.  Refactor away.

If you are simply rewriting code because you want to rewrite code -- so that there's little definite difference between the rewritten code and the original code -- then this may be a problem.

Why do you want to rewrite your old code?

Brent P. Newhall
Wednesday, January 15, 2003


I'd rather have someone shoot for perfect and miss than shoot for "just good enough I guess" and miss.

Robert Moir
Wednesday, January 15, 2003

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.

Mike Swieton
Wednesday, January 15, 2003

A perfectionist would never say  'I am a perfectionist, I always need to improve and keep going over things'.

A perfectionist would say 'I am always compromising and leaving things half done! I never get it done right.  I wish that just once i had the chance to go over something and do it properly'.

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.

Anyone who moans on and on about how much of a perfectionist they are needs a smack. 

If you really want to get over re-working the same code then get more real users.  Get a tougher job.  Put yourself in the position where your services are in demand and you wont be allowed to overly 'perfect' anything. 

Your Bro Braid.

Thursday, January 16, 2003

"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."

So couldn't a competent perfectionist be well aware of their "perfectionism" failing? You can't have it both ways. Unless we're talking about incompetent perfectionists I suppose.

Robert Moir
Thursday, January 16, 2003

well said Braid.

This thing souds a lott like:

Interviewer: Now what would you say are your worst qualities?
Candidate: Well, I would have to say that my worst quality is that I am a perfectionist.


Just me (Sir to you)
Thursday, January 16, 2003

*  Recent Topics

*  Fog Creek Home