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
- Stop working with bad programmers.
- 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
- 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.