There is always a ton of discussion about the business of programming by programmers and project managers alike. Of course, there are always (at least) two sides of this coin: the programmer and the client. For employed developers (such as myself), the client is typically also the employer, and this creates a situation that is extremely treacherous. A similar situation exists for system administrators—I know, I’ve been in that situation, too.
It’s frustrating that people’s lack of understanding about the various computer industries leads to situations that affect so many innocent bystanders. The fact that computer programmers and sysadmins (in the US) are currently considered ineligible for overtime pay because “all they do is implement someone else’s desires”, even though every computer professional knows how much independent thought and judgement is required in their everyday jobs to produce a quality result, is a classic example of this. (How sad is it that we actually have a “classic” example, by the way?)
In a recent post by Greg Jorgensen over at the Typical Programmer blog, Greg cites Joel Spolsky (programmer extraordinaire), as saying that working ’til midnight is a sure-fire way to get software projects to fail. However, while this is certainly sound reasoning as far as I can tell, what’s even more frustrating to me than being made to work long hours is having my desires for learning and skill development brushed off and made less important than the project deadlines.
Joel says that the first thing you can do to destroy the hope of a successful software project is to hire mediocre programmers, instead of the best ones. Greg makes the good point that we were all mediocre programmers once. How did we get better? Greg says,
The best way to use the people on the team and to help them gain experience is to have them work together as much as possible. Even without keyboard sharing it’s better to have programmers mentor and learn from each other than to let each carve out a domain no one else understands.
And indeed, search the job listings on any career search board and you’ll see companies trying to sell themselves to you in exactly that fashion. But once you’re hired, it’s often a very, very different tune. Suddenly your interests in skill development take a back seat to project deadlines, tight schedules, and more work. This is all, of course, understandable to some degree, but as an all-encompassing truism that provides no wiggle room, I can’t tolerate it.
What irritates me even further is that companies and recruiters only seem to seek the already-skilled. I may be fortunate to be on this list for some skills and so am thankfully not living on the street, but I know better than most that I am not a world-class programmer or an exceptional system administrator. Frankly, I think I am a mile wide and an inch deep in most of the things that I know. Thus, it is irritating that this isn’t seen as a skill when, in fact, it is the one thing that has given me the most success: my speciality is being a generalist, and my ability to learn new technologies’s baseline quickly is what’s enabled me to hold so many different kinds of tech jobs.
And why have I held so many different kinds of tech jobs? Because not a single job I’ve ever held has actually encouraged me (except on my own time, as opposed to on the company’s dime) to broaden my skill set. Frankly, broadening my skill set is why I like to work. And having employees who like to work seems like it would be good for business.
So why is skills development only paid lip service by every company I’ve ever worked for?