Another developer insisted that he was making steady progress and that his Microsoft Windows code was finished; meanwhile he spent two months exploring the new Apple Newton. When the time came to integrate his code with the rest of the team’s work, none of it was done. He had created some rough prototypes, but nothing was tested, debugged, reviewed, or even remotely ready to be released. What are the real-world implications of working with programmers who can’t complete their work? On a real project, "not finishing at all" usually isn’t an option, and so those programmers who didn’t finish during the Coding War games or during Curtis’s debugging test would require either huge amounts of time to complete their work or someone else would have to complete their work for them.
They can’t estimate their work reliably because they don’t know for sure whether they will even finish. Considering the absence of direct contributions to the project and the extra work created for the rest of the team, it’s no exaggeration to classify these programmers as "negative productivity programmers." The study data suggests that about 10 percent of professional programmers might fall into this category. A team of seven randomly selected programmers therefore has about a 50/50 chance of including at least one negative productivity programmer.
1. Unless you truly enjoy programming you should seek another profession. Be realistic: are you programming to collect a paycheck, or are you programming because you are driven to? I know this sounds harsh, but it's an economic reality-- in an enviroment of global offshoring, the world simply can't support any more highly paid mediocre coders. There are a hundred thousand well educated Indian developers who will do what you do at a fraction of the price, and thousands more coming of age in other third world countries. Blame the Internet if you want, but just being "good with computers" is no longer a free ticket to a high paying tech job.
2. If you're reading this blog (and by this blog, I mean any programming blog at all), the above almost certainly does not apply to you. You're already spending your own personal time on professional development. I'm not saying you should spend every waking moment in front of a computer like I do-- it's unhealthy-- but the only way to keep our jobs is to actively keep improving. Treat your job like what it is: a highly skilled engineering profession that takes ongoing study.