If I was as much of a perfectionist as some here would have me be, I would never get out the door in the morning, I'd be so busy scrubbing the floors of my apartment until they sparkle and shaving every ten minutes and removing lint from my clothing with masking tape, and by the time I finished that I'd have to shave again and take out the trash because there was masking tape in the trash and re-scrub the floor because when I took the trash out I might have tracked in dust. And then I'd have to shave again.
I could go insane with the web page behind the discussion board. First I could make it 110% xhtml 1.1 + CSS. Heck, why not xhtml 2.0 just to be extra addictive-personality-disordered. Then I could neatly format all the html code so it's perfectly indented. But the html is generated by a script, and the script has to be indented correctly so that it's perfect too, and a correctly indented ASP script does not, by defintion, produce correctly indented HTML. So I could write a filter that takes the output of the ASP script and reindents it so that if anybody does a View Source they would see neatly indented HTML and think I have great attention to detail. Then I would start to obsess about all the wasted bandwidth caused by meaningless whitespace in the HTML file, and I'd go back and forth in circles between compressed HTML and nicely laid out HTML, pausing only to shave.
I could spend the rest of my life perfecting the HTML behind every page on all of our sites, or I could do something that might actually benefit someone.
Perfectionism is a very dangerous quality in business and in life, because by being perfectionist about one thing you are, by definition, neglecting another. The three days I spent insuring that all icons in CityDesk 3.0 are displayed with perfect alpha-blended effects came at the price of having a web site where the descender of the "g" is not a hyperlink. And both are at the price of working on my next book, or writing another article for Joel on Software, or making CityDesk publish really big sites faster.
If you're noticing a recurring theme, it's that I never like to talk about whether or not to do X. The question should never be "X, yes or no?" As long as you have limited time and resources, you always have to look at the cost and the benefit of X. Questions should be "Is X worth the time" or "Will X or Y have a greater return on investment?"
Great Minds Think Alike
or, you can take the boy out of Microsoft but you can't take Microsoft out of the boy
Raymond Chen: “In other words, in an error-code model, it is obvious when somebody failed to handle an error: They didn't check the error code. But in an exception-throwing model, it is not obvious from looking at the code whether somebody handled the error, since the error is not explicit.” (c.f. Joel on Exceptions)
Larry Osterman: “I’m not saying that metrics are bad. They’re not. But basing people’s annual performance reviews on those metrics is a recipe for disaster.” (c.f. Joel on Measurement, Joel on Incentive Pay, Why FogBugz isn't a crutch for HR, etc.)
By the way, have you noticed how everyone at Microsoft is a blogger now? Dave Winer has managed to successfully and almost single-handedly pull off the most incredible Fire and Motion coup in the history of the software industry. His endless evangelism of blogging now has every Microsoft employee spending more time working on their blogs than working on software development or even picking out polo shirts. Brilliant! And that fifth column thing with Scoble -- there are no words! Bravo!
The Best Thing on Television, Ever
We just finished watching Season 1 of the BBC television series The Office on DVD during our lunchbreaks at Fog Creek. WOW! Incredibly funny, incredibly touching, and supernaturally realistic. But now I'm paranoid when nobody in the office laughs at my jokes. I'm an entertainer, first, really, then a boss. Also I'll have to cut down on the army stories.
Hint to Americans: turn on the English subtitles and you'll catch twice as many jokes.
You’re reading Joel on Software, stuffed with years and years of completely raving mad articles about software development, managing software teams, designing user interfaces, running successful software companies, and rubber duckies.
I’m Joel Spolsky, co-founder of Fog Creek Software, a New York company that proves that you can treat programmers well and still be highly profitable. Programmers get private offices, free lunch, and work 40 hours a week. Customers only pay for software if they’re delighted. We make Trello, easy web-based collaboration software, FogBugz, an enlightened bug tracking and software development tool, and Kiln, a distributed source control system that will blow your socks off. I’m also the co-founder and CEO of Stack Exchange. More about me.