Search This Blog


Tuesday, January 6, 2009

Why Net Negative Producing Programmers are Here to Stay

Jay Fields , in his most recent blog post, The Cost of Net Negative Programmers bemoaned the fact that bad programmers are polluting the software development field as a whole. According to him, bad programmers are raising the cost of software development, reducing the quality of the applications and code base, screwing up things and dragging everyone down. How true. He then suggested that as  measures to fix this problem and stop this trend, good programmers should  

  1. Stop working with bad programmers.
  2. Get managers to realize the that bad programmers are refusing the improve and compensate programmers based on the project's success.
While Jay realized the negative impact of the bad programmers, I don't think that his solutions are realistic. Instead, I think that the net negative producing programmers(NNPP ) are here to stay.

First, reasons on why his suggestions won't work. Jay suggested that one should boycott the bad programmers by moving away from them. He proposed two measures, move to another company or make that a goal of the company organization. But how can you be sure that when you move to another company all the programmers are good ones? Granted, there are only two classes of programmers, the good ones and the bad ones. The bad news is good ones is only 20% and the rest are bad ones. Given this ratio, it's every easy to bump into bad programmers. The chances of you landed into a company of geeks don't seem very bright. Yes, of course you can target those companies that are geeky and cool, but I am sure those companies won't have enough space for all the good developers. 

What about fighting to get the managers realize the detriment of NNPP? There are a few difficulties in this. First, you will need to prepare for a political fight. I understand that political skill isn't the main forte of the programmers, especially for good programmers who have to divide their time between coding, spare projects, families, reading blogs, writing blogs, meeting and what-have-you. It's not so easy to advocate changes in an environment dominated by bureaucracy, especially when you are not even half as politically savvy as other people. 

Second, proposing changes that affect your colleagues could have seriously damaged your relationship with them. In a corporate place where you outshine the rest, you got to be extra sensitive to other's feeling ,lest they think that you are a bully and resist your attempt to reform. Guess which party would your manager side with when conflict broke out? Definitely not you!

Why Net Negative Producing Programmers are here to stay? Simply because it could be hard to tell good developers apart from the bad ones , unless, of course, you have worked with them for a sufficiently long period of time and you yourself are also a good developer. As mentioned here , good developers contribute extra values to their companies not by writing more code, but by writing good quality code, less-buggy code and taking code ownership. This adds to the difficulties of separating good and bad apples apart and allow bad apples to thrive ( or rotten).

Not only that, good programmers often demand exorbitant price. If you think that average programmers are already fairly expensive, the good ones ask for even more. But the bosses... well, they want cheap stuffs, don't they? In the end it's the economics that trumps everything. So unless you, the Positive Producing Programmers are willing to lower your salary, your bad counterparts will have a room to prosper.

Finally, the hiring process, as employed by most IT companies, are not exactly encouraging programmers to self-improve . A typical advertisement will look like this

  • XXX years of experience in Java
  • YYY years of experience in HTML, CSS
  • ZZZ years of experience in MySQL, Apache
  • Netbeans 
  • Worked on Large enterprise projects before
  • Blah blah
In essence what IT companies are looking for are specific skills or experience that can be picked up easily. The IT companies are not looking for something which is more fundamental, such as logical thinking skills, or software design methodologies, unit testing, Agile programming etc. Programmers are good at gaming the metrics you throw at them . So why should they invest their time to dig deeper just as when there is no reward for that?

Unless and until someone can demonstrate conclusively how NNPP is killing projects and companies can provide incentives for programmers to improve, the NNPP will be here to stay. 


Jay Fields said...

Hello Soon Hui,
The 'things we can do' section was actually a last minute addition suggested by my good friend Philippe.

Looking back, I should have written, "I'm not sure what we can do, here are a few ideas". It's definitely not as easy as my summary makes it sound, but doesn't seem worthy of an update.

I'd classify the ideas as possible, but not probable.

Good follow up.

Cheers, Jay

I. Vlad said...

If it is difficult to tell good programmers from bad ones, then labor market for programmers is a "market for lemons" (details at ). So it really does not pay to be a good programmer working for someone else. The only solution for good programmers to be compensated proportionately to their abilities is to start their own companies and to be paid for their product, not their work. As managers, good programmers will tend to be good at recognizing other good programmers, so in the beginning such startups should be phenomenally productive (barring other issues than HR). When the company grows enough that founders no longer manage it directly, it enters the labor market for lemons again, and bad programmers start driving out the good ones. Management of such a growing company should make a conscious decision either to not grow above threshold, or to plan for the corresponding drop in quality and productivity.

Anonymous said...

Part of the problem with the NNPP's, assuming your ratio of 1/5 good to bad ratio is correct is that only 20% of programmers know who is good and who is bad.

The rest of the people in the world aren't even programmers, so how are they supposed to filter out the good from the bad?

Scotty Delicious said...

How about a good FizzBuzz test as part of the hiring process?

Soon Hui said...

Hi, I.Vlad, I agree with you. In fact you reinforced my point and further explaining why NNPPs are not going anyway.

Anonymous, you are right in saying that the rest 80% of the programmers can't even tell the good from the bad. Imagine what will happen when the even more clueless HR enters into the equation by selecting candidates based on keywords. No wonder things are really hopeless.

Scotty Delicious, FizzBuzz test is good, but it doesn't test the learning ability of a programmer, which is the most important trait of all.

leo said...

there are all good programmers in company,I think this is bad things.

Khalid Abuhakmeh said...

anonymous makes a good point. The employers usually have limited development knowledge. Also, rocking the boat is a big no-no in office politics, so how do you make yourself more visible.

I feel every developer has hopes of being better, but sometimes they just need a nudge out of their rut.

I take the approach of mentoring other developers, but there are the ones who see that as condescending (Why? cause I'm trying to help stimulate conversation and improvement?). Those who turn mean I usually choose to ignore except when work calls for interaction. It sucks, but some people just don't want change. Change is scary.

The OberGruppenFuhrer said...

The answer is good development management. Performance and attitude must be measured and 'consequenced.' Not everyone can be a star, and the organisation needs a maintenance team. The maintenance team is not paid as much as the big-new-projects development team. At the moment there is so much new technology coming out, it is pretty easy to 'stretch the herd out' into quick-onto-it and not-interested-laggards. I admit to being just as dismayed as you at some of the plonkers that have found their way into the industry. Supply and demand, I'm afraid. As a manager you are sort of lumbered, <sigh> quality is job number one!

tea42 said...

The whole argument is flawed. There are many levels of programmer. And various programmers have their own strengths and weaknesses. The best thing you can do is ascertain their respective talents and put them to work at what they do best. If we followed the advice of Mr. Fields we'd end up with only one programmer. That one super genius programmer that can school everyone all by his lonesome. I don't care how good he might be, there are not enough hours in the day for that one guy to do it all.

Anonymous said...

Wow, this is exactly how I feel right now. Surrounded by by bad programmers, clueless management, and just bad corporate environment. None of my buddies are geeks or with a hacker attidute - you could say they are commercial types or enterprisey junkies, you know what I mean...
Each and every day I have to dumb myself down just to keep my cover safe. Sometimes I just want to let it go in a frenzy rant. Not easy at all, especially for my mental health...
I'm struggling to find a way out, and I was thinking about those 2 "solutions" you posted. I agree they aren't going to work.
1) - quit - well, what if one's financial status ain't good ? They pay well for what I do...
2) - convince management - ha, ha, -- right... This could take YEARS, provided you don't step too hard on any one's tail, and get fired in the process. Besides, why do you think those bad programmers are still there ? Precisely because they are good at politics, maneuvered themselves out of many troubles, and kicked out a lot of "competition" - that is all other good programmers that were perceived enemies. And the fact that they are camped in the company for many years speaks for himself.

Simply put - no easy way out.

I'm thinking of quitting, propping up my CV with a MS in computer science, then VERY CAREFULLY choosing my next company.
This looks like the most promising choice.