Fog Creek Software
Discussion Board




Perfectionism and Teamwork

Do you think being a perfectionist gets in the way of being able to work effectively as part of a team?

I consider myself a perfectionist and get frustrated when I see others not taking as much care over their code as I do, although I do acknowledge that sometimes I spend too much time on things.

Frustrated Teamworker
Monday, July 21, 2003

The right attitude is not to "major on the minors" (to use a cliche)

A lot of people consider it extremely rude to be corrected. You have to consider if it's worth offending someone for something  not that important.

Matthew Lock
Monday, July 21, 2003

>A lot of people consider it extremely rude
>to be corrected. You have to consider if
>it's worth offending someone for something 
>not that important.

Absolutely.

Also, you have to realize that in CS, there may be more than one right answer - especially if you have different values.

So, if you want to "correct" somone, first be thier friend and understand where they are coming from.  Then give advice that actually solves their problem, instead of just forcing them to do additional work with no apparent benefit.

If you get a reputation for being helpful, people will -come- to you for advice.

The alternative, where you have to get louder and louder yet get diminishing results out of other people, is rather ... sad.

regards,

Matt H.
Monday, July 21, 2003


Finally, I'd say that software is definitely a field in which the rule of diminishing returns applies. Exerting a lot of effort to get that last 1% efficiency may not be worth it.

I would also observe that perfect code "does not (necessarily) good software make". If the business can succeed with a 50% effort, then investing more than that may not be the correct decision.

DingBat
Monday, July 21, 2003

"If the business can succeed with a 50% effort, then investing more than that may not be the correct decision."

I hate this attitude.  It absolutely disgusts me.  Imagine  the kind of crap you're selling your customers when you give 50% of the effort.  Then in order to sell the shit you just made you lie to the customers and cheat them out of their money just so you can be lazy and lounge around without expending "too much effort".  I wouldn't hire you in a million years Dingbat.

anon
Monday, July 21, 2003

But if that 50% allows you to meet the customer's requirements,  doing work that's "good enough" rather than perfect enables you to get more features out the door, at less cost. You're doing your customers a huge favor.

I am a bit of a perfectionist too -- even in the piddly stuff like variable names that are close-but-not-completely-accurate. The program works fine with EmployerName as the variable name but I want to change it to PrimaryEmployerName. I've slowly weaned myself from the temptation to make these changes to the code that others have written, and that allows me to devote time to activities that customers actually care about. What's not to like about that attitude?

Zahid
Monday, July 21, 2003


"What's not to like about that attitude?"

When someone has to maintain your code. That's cost too.

Li-fan Chen
Monday, July 21, 2003

"I've slowly weaned myself from the temptation to make these changes to the code that others have written, and that allows me to devote time to activities that customers actually care about."

Trees, meet the forest.

You have to balance today vs. the future. You cannot possibly underestimate the future value of clear code. It's only now clear to you that the variable should've been renamed. It won't be clear to the next guy maintaining your code, who spends needless time figuring it out -- much more time than it would've taken you to fix it.

If you are 110% focused on the now, you'll find that 9 months later you have a heap of unmaintainable crap. How is _that_ better for the customer?

Brad Wilson (dotnetguy.techieswithcats.com)
Monday, July 21, 2003

>I hate this attitude. 
>It absolutely disgusts me. 
>Imagine  the kind of crap you're
>selling your customers when
>you give 50% of the effort

"Do the simplest thing that could possibly work" is one of the tenents of extreme programming.

I'd REALLLY suggest you do some deep reading on XP before you criticise such practices.

On The Other Hand, there's a huge difference between "simplest thing that could possibly work" and a half-arsed job.  On that, I'd agree with you.  If that's -all- you were trying to say, I'd agree 100%.

regards,

Matt H.
Monday, July 21, 2003

Be careful with the words "perfectionist" and "perfectionism." These words have very specific meanings in indutrial psychology that may not reflect your intentions.

Are you:

Thorough?
Detail-oriented?
Committed to writing solid, bug-free code?

These qualities do not make you a perfectionist.

Perfectionists make unreasonable demands of themselves and their environment. The 'super high standards' of the perfectionist give them an excuse not to fail: since they will never succeed by their own standards, they can never fail.

Perfectionists obsess over trivial details as a way of avoiding new challenges. A classic perfectionist behaviour is to spend time meticulously commenting working code instead of moving on to implement something new. The key here is not whether comments are good, but rather *why* the perfectionist is spending so much time on them.

Another perfectionist behaviour is called "blame and shame": they can't reach their own high standards because of the shoddy work and bad attitudes of their colleagues.

Again, the root motivation is avoiding failure: the perfectionist could write great code, if only her teammates would get their act together. But since her teammates are such shmucks, she spends all her time fixing their code or agitating for new methodologies instead of firing up Emacs and writing code.

This link discusses perfectionism amongst students. You might find it illuminating:

http://www.kidsource.com/kidsource/content2/perfectionist.k12.4.html

--
http://www.braithwaite-lee.com/

Reginald Braithwaite-Lee
Monday, July 21, 2003

[I hate this attitude.  It absolutely disgusts me.  Imagine  the kind of crap you're selling your customers when you give 50% of the effort.]

I'll take a chance that you're just knee-jerking here and not an outright troll.

Who said that "50%" effort is crap? You jumped to a conclusion here, didn't you (though I don't expect you to admit it)?
The average ball point pen you use is a product of 50% effort. It probably won't write correctly underwater, or in extreme cold, or heat. It possibly wouldn't work in total vacuum. I could create a ball point that would work in all those conditions, but it might cost $10k. I'm sure the customers would thank me, too.

Programmers are very prone to writing that $10,000 ball point pen.

Given your carefully considered response, I'd take your unwillingness to hire me as a compliment. Thanks.

DingBat
Monday, July 21, 2003

You cannot possibly underestimate the future value of clear code. It's only now clear to you that the variable should've been renamed. It won't be clear to the next guy maintaining your code, who spends needless time figuring it out -- much more time than it would've taken you to fix it .... How is _that_ better for the customer? - Brad Wilson

An excellent point. I didn't mean to imply that I no longer care for coding standards or legibility. I merely meant that one should heed the old adage, "Good enough is good enough, and perfect often isn't worth it."

Or, as a well-known programmer once wrote:
        The search for perfection is all very well
        But to search for heaven is to live here in hell.

Zahid
Monday, July 21, 2003

Producing something close to perfection (in some local area) makes the author feel deeply emotionally satisfied. This is a great reward, and probably the largest source of job satisfaction.

Business needs, non-caring coworkers steal this joy from somebody who cares. Sure, things written at 50% effort can work and fulfill user needs, but there will not be any fun for the programmer who does 50% effort things.

It probably makes sense to go this extra mile for yourself, and the hell with non-caring coworkers!

Mr Curiousity
Monday, July 21, 2003

As a pointy haired development manager, I hate the idea of perfection. I want software that I can ship on time. Not something perfect two years late. Our customers are engineers and understand "good enough". They don't understand why one programming approach that is more elegant or has multuple layers of abstraction is better.

The head of sales told me once that it didn't matter how good the software was, they had such good sales people that they would sell it anyway. (Obviously this isn't something to tell the R&D dudes in shorts and birkenstocks!!)

I know this is strickly BS from my interaction with customers, as selling and supporting quality stuff is much easier than with stuff of low quality. However, quality = functionality to the users, not perfection.

pdq
Monday, July 21, 2003


There is a disconnect between most programmers and the products they work on. Specifically, programmers equate personal success with the success of their project. Many programmers can have a perfectly wonderful time on a project that would be considered a business failure.

It's a pity that programmer's "perfectionism" is usually only focused on technical matters. If it were focused more on the overall project then we might very well be able to deliver products that satisfy the majority of customers and which are shipped on time.

anon.
Monday, July 21, 2003


Um, that should have read:

Many programmers do NOT equate success with the success of their projects.

anon.
Monday, July 21, 2003

"It's a pity that programmer's "perfectionism" is usually only focused on technical matters. If it were focused more on the overall project then we might very well be able to deliver products that satisfy the majority of customers and which are shipped on time. "

Why should they? If it is work for hire without any extra incentives why should programmers care about business success as opposed to having fun while they program something? In their eyes their self-worth is tied up to accomplishing something neat, they don't really care if the company makes 1x or 2x the amount of money they planned to make ...

Mr Curiousity
Tuesday, July 22, 2003

[ they don't really care if the company makes 1x or 2x the amount of money they planned to make ...]

I don't either.

I guess I just believe that any monkey can craft a chunk of code. The really worthwhile developers are the ones that can guide a project to an on time release while satisfying all the requirements.

Money just falls out of that naturally.

anon.
Tuesday, July 22, 2003

*  Recent Topics

*  Fog Creek Home