The Slashdot forum again has provided some excellent commentary on this situation (since many probably are themselves good to excellent programmers [note: Slashdot readers tend to be of a similar breed; this should be a standard]). I noticed things such as Man Mythical Month, hiring practices, office politics, etc. come up in the forums. But one thing that hit me which I can relate to right now is the whole notion of how to describe a good vs bad coder.
I have to revisit my earlier thoughts on how the IT industry needs to have something like a global union. They need to divide IT workers into various classifications, scale the pay accordingly, and tier it. So for instance, classifications would be web developer, software engineer, architect, production support, DBA, network engineer, system administrator. The pay needs to scale according to the demand and difficulty level of the position. So things architects are hard to come by, especially good ones. Thus the payrange would be quite high. However, a Windows administrator or support worker might make a significant amount less considering the difficulty and quantity available. The tiers would work according to experience and successfully executed projects. This methodology would provide for a balance of allowing older, wiser people to gain more pay yet force them to be competitive and competent, even after proving themselves.
Another key element as I mentioned in a previous article is that unions should require formal testing to progress through the tiers. In this manner, people won't be forced to graduate with a degree in computer science or information sciences (although it may help). However, it would induce all people to remain competitive on the market through constantly upgrading their skills. The unions could utilize their fees partly to help subsidize for some of this cost. But ultimately it would come down to the responsibility of the individual to maintain a standard of excellence for themselves if they wish to progress through the tiers.
One key advantage that these tests provide is standardizing ways to measure the competency of an employee. I've seen wide ranges of interviews (and given them myself) and there isn't a single one that truly gauges a person's ability (although another huge issue is the person's character, but that should be besides the point). One thing this can provide is a range of tests to assess the level of competency a person has in different fields. A Java developer might excel in areas like JSPs, JSTL, servlets, but might be somewhat weak in threads or Swing programming. He might also be tested for creative problem solving and communication ability.
Tests can be progressive. If a person feels that they've succeeded at a certain level, they can continue to aim at higher levels until they hit the top tier. Or they can try for other tests if they decide to follow a separate career path. Also, the tests must be translated in all languages to be fair.
Returning to the issue of standardizing salaries, one thing I felt was to make salaries relatively equal. Not between positions and levels, but between countries so that companies won't get a competitive edge by outsourcing. The only problem of course is where the cost of living is so low, those people would gain a huge advantage over their counterparts in the world. Alternatively, the union from one country would have to partly subsidize the loss of jobs in another country if wages are forced to be lower.
Trackbacks: (Trackback URL)
