Programming feature
hed: Tales from the dark side
dek: programming part V: idiotic managers, long hours, and Oreos for dinner.
by Nelson King
In this installment of a series written for the new and wanna-be programmers, I'm going to open a fold or two of the kimono and talk about aspects of programming that aren't always pleasant--or are just plain absurd. Discussing this not only provides relief from the pragmatic and cerebral nature of describing the profession, but also warns prospective programmers about some of the contradictions and absurdities that abound in it.
Development teams
I'm not sure where the impression originated, but a lot of people think programmers are loners. It's true that many programmers inhabit 5-by-6 cubicles and appear to work alone. However, software development is almost always a collaborative effort. The dynamics of work are built around not only doing well yourself but also by cooperating with numerous other people.
While programmers are not usually loners, they are often individualistic. This can make working with several of them in a software development team an interesting experience. Just as working for idiots (covered shortly) is part of the programming profession, working with personalities is necessary. Social skills are rarely mentioned as part of the job qualifications, and employers are often able to ignore warning signs; but you as a potential programmer and employee should be ruthlessly honest about your own tolerance and ability with regard to working under pressure with quirky people.
The boy's club
Programming is not for everyone, of course, but there's nothing about it that is inherently gender-based. Unfortunately, most programmers are male--to the point of seeming exclusionary. This is bad news for the industry because it needs programmers and it needs the differences that women can bring to the profession. The problem is obvious, what to do about it is not.
The studies I've read suggest that (among other things) the cubicles, long hours, bad habits, and repetitive nature of programming turn women off. If true, this shows good sense. However, I suspect that turning away from programming and perhaps the computer industry as a whole starts long before young people have much knowledge about working conditions. It probably starts in junior and senior high school, where computing is associated with nerds and geeks (mostly boys, of course) and with yucky subjects like math. The same thing turns off a lot of guys, too.
The problem for the industry is how to deal with these images. There's enough truth to the image that simply denying it won't work. Yet the image is a major distortion of the real picture, because the opportunities for both men and women are diverse and can fit a wide range of personalities. For the most part, the industry won't address the problem; it has no consolidated agency, no budget, and no agreement on which to mount a campaign. So for the foreseeable future, programming will remain overpopulated with males.
Productivity metrics
Good job! It's nice to hear these two words (especially if there's money riding with them); but how does a company know when a programmer has done good? There have been many attempts to measure programmer productivity, which reminds me of some doggerel: "In days of old when programmers were bold and not so damn particular, they measured work by a peculiar quirk with lines of code verticular."
Then there are deadlines and milestones and other shackles associated with project management. Many programmers are measured by their ability to hit budgets, schedules, and task completions. Never mind that in the collaborative environment a missed schedule may well be the fault of a manager who's been sick for a week, or that a task might not completed because the current version of a software development product has a bug.
Ask for justice in your evaluation, but don't expect it. In the end, your managers have no more idea about how to evaluate you fairly than you do. They'll do it with their gut and probably call it something else.
Working for idiots
All programmers will, at some time or another in their careers work for idiots. Most programmers think they already are working for idiots. The disjoint between management and programmers is one of the major contributors to the dismal record of software projects. I can say this without a single survey or white paper to back me up, merely because it follows human nature. Programmers do very complex and arcane work. Perhaps one manager in a thousand has a clue as to what software developers do. Programmers commonly have only a dim idea of what the company (or client) is trying to do. The consequence is one form of ignorance magnifying the other, with bad communication as the hallmark. The consequences are often idiotic decisions compounded by idiotic responses. Am I exaggerating? Read "Dilbert."
Losing your job
When I started this series about six months ago, a prospective programmer could almost bank on a job, even with minimal qualifications. Now we are in what has been characterized as a "dot coma," the growth of the industry--and with it programming jobs of all descriptions--is stunted by a downturn in the economy. There are no guarantees of employment anymore; and even if you have a job, you could lose it. I suppose the lack of security should encourage a healthy sense of realism but it's more likely to make programming seem less appealing. The fact is, however, that tens of thousands of programming jobs still go begging and if you have the right combination of skills (covered in previous articles) you should have no trouble finding employment, although a change in location might be necessary.
Have we got issues
Do you like to argue? Many programmers do, although passive-aggressive behavior is more the norm. Many--if not most--major debates in the computer industry involve software. Java, the programming language, has probably been the subject of the longest and loudest ongoing debate for programmers, but it is now being overshadowed by the open-source debate. And so forth. Software issues seem to crystallize much of the dynamics and tension within the industry. More often than not, there are companies represented. More often than not, Microsoft is the antagonist or protagonist. Whether you hate or love Microsoft (is there anything in between?), you're fully qualified to join other programmers in argument.
Open-source headaches
I just mentioned open source. This is a good issue in the sense that you can easily get an argument from programmers about it. The basic concept is easy to explain: One or more programmers create a piece of software and then make the source code (the original programming) available to anyone and everyone for free. Fixes and enhancements to the program are made by anyone willing to do the work (for free) and submit it as part of the open-source code.
This approach has a long history mostly associated with software developed at universities; lately, it has become part of the commercial software industry, which has given it a much sharper edge. Some important software, especially the Linux operating system, is open source but is also being sold or used in commercial software arrangements. Major companies such as IBM and Sun actively embrace this approach, which is why you may actually get a job someday where you work on code that is open-source. This is a radical concept: Get paid for writing software that is given to the world. Some say this is the future of software development, others say it won't last because companies will ultimately want to protect what they create.
Conventions, seminars and other vacations
Along with the trade press and arguing with other programmers, a major source of information about the business of programming comes from attending conventions and seminars. Some of your programming colleagues make the bulk of their living from presentations at conventions and seminars. It's no accident that most trade events are held in places like Las Vegas, San Diego, and Florida. If you don't want to network with your fellow programmers for a while, there's always a stroll on the beach or a handy slot machine. Who said programmers don't know how to have fun? (The casinos in Vegas say so, computer conventions are considered as deadbeat as physicians' conventions.)
Hacking, cracking, and other high jinx
Programming is not the only profession in the world that has adjunct activity that is illegal. It's not even unique in that this activity--some forms of hacking (or cracking)--is sometimes considered beneficial or even heroic. Come the revolution, the hacker will be in the forefront of defeating the monolithic corporations, etc. It is relatively unusual that the most proficiently illegal programmers--some even convicted--can find employment protecting these same corporations from other hackers.
This is the world of computer security (and the lack of it). Since this is a massive growth industry on both sides of the law, any prospective programmer will probably consider the attractions. Both sides get to play a game of wits. There is money available to those who wish to subvert computer systems, and there is money available to stop them. Generally, you get to work at home. You're inventing a whole new field of illicit activity, cybercrime, where the laws may take decades to catch up with the crime. Of course, you may have to risk something--personal security.
The deadly diet
Programmers are not risk-averse. I have a very good friend, a veteran of the industry at some 20 years of service, who suffered through triple-bypass heart surgery at the age of 38. He had been working for years on a diet of burgers, Dr. Pepper, and Oreo cookies. Like almost all programmers, he subscribed to the Phyllis Diller school of exercise: "There's nothing better than a good hard sit." At one time he'd been a state tennis champion, but 20 years in the computer industry had taken his edge and replaced it with fatty tissue.
A near heart attack and the subsequent surgery was, of course, a wake-up call that spurred him on to regular exercise and a cholesterol-free diet. Unfortunately, what it didn't change was the stress of repeated deadlines and the irregular hours of sleep. Six years later he was back in the hospital for another triple-bypass.
Of course, his case is not statistically significant, except to him--or you if you find yourself working under similar conditions. Programming is not a healthy job. You sit for hours, indoors, under stress, doing mental but no physical gymnastics, and the work is just seductive enough to make you obsessive.
In love with a mixed bag
So programming is a mixed bag. Is this different than any other profession? The point is, you need to learn how you do or do not tolerate the various aspects of being a programmer. In the long run, it's better if you can accept or avoid those parts of programming you don't like and find satisfaction in the parts you do like. That makes it no different than any other profession, but the computer industry and software development in particular changes more rapidly than almost any other field in history--really. It leads to radical preference realignment. That's one of the things you gotta love about programming.