How many of us have, or will, sacrifice ourselves on the altar of someone else’s software project? I know I have. I did it on purpose at the very beginning of my software career, and I viewed it as a trade-off: with no prior experience, I was given an opportunity at a small software company in a big mess, and I jumped at the chance for intense on-the-job training. I knew that throwing myself into 60, 70, and 80 hour work weeks for a short time (which turned out to be three years) would ensure that I would never have to go back to the retail business. God help me, I wanted out of the retail business more than anything else in the world, and this computer thing looked like just the ticket. I knew that even if the company went down in flames, I would come out a winner. So my sacrifice was for me, and my future—and it was worth it.
There are surely other valid reasons for throwing oneself into intense periods of work. Maybe you’re working hard for yourself, as your own boss in your own consulting company. Maybe, like my on-the-job training situation, you are trying to transition yourself from one technology set or career to another and are busting butt in the short term to get yourself through the transition. Maybe there’s the promise of a big bonus waiting for you at the end of the long tunnel of a death march project. Maybe you are like many of the "H1-B visa" developers here in the United States who work for unscrupulous companies and contracting agencies who hold their temporary immigration status over their heads, and who consequently feel powerless to say "No."
Or maybe you’re like Jim Kent, who sacrificed himself for what he believed was a greater good. Software Development Magazine recently ran a cover story on Jim Kent, who spent four 80 hour weeks cranking out a 10,000 line program that would ultimately produce the first draft of the human genome map that was so celebrated last year. As the article puts it, Kent and his colleagues "are motivated partially by fear: Some predict that if the international consortium he's helping doesn't speed its progress in charting the nucleotide structure of human DNA, the very material that defines us as a species could be locked up by commercial patents." Sounds like Jim Kent had some pretty good reasons for working so hard, and who’s to say he should have done anything different?
How many of us, though, look back on these experiences and regret them? How many of us, for reasons like these (or perhaps less easily justified ones), sacrifice ourselves on the altar of someone else’s software project, week after week, year after year, job after job? How many of us give up our nights, our weekends, our social lives, our family time and obligations? How many of us abuse our bodies, sucking down poisons like cola and coffee to keep ourselves awake, running our immune systems down from overwork and lack of sleep, ordering in greasy pizza and Chinese food because there’s no time to go out for a proper meal—all for some accounting system to run some department of some giant corporation that won’t hire enough developers; won’t hire any testers, business analysts, or technical writers; whose management won’t support a decent business requirements gathering process while it sets unreasonable deadlines based on faulty estimation techniques (or, more frequently, no estimation techniques at all)?
When it comes down to it, does that giant corporation give a damn about lowly developers like us anyway? Are we viewed as easily replaceable commodities? Would that giant corporation happily ship our jobs to exploitative third world sweat shops if they thought they could--just like they do with clothing, shoes, toys, and computer components? How many times have you, or someone you know, killed yourself on some project, trying your best to meet some seemingly arbitrary deadline, only to have the management decide to scrap the project; or to just sit on the finished product for weeks after the "deadline," doing nothing with it; or to totally change the requirements after the fact; or all-of-a-sudden decide that now it "needs to have a web interface"?
So why are we voluntarily sacrificing ourselves on someone else’s altar? Is it just because management wrote a memo calling for "mandatory overtime," and we didn’t know how to say "No"?
The answer to the question of "why" is, naturally, a complicated one, and one which I am not prepared to tackle fully here. Besides, author Edward Yourdon has already done an excellent job of this with his book Death March. I recommend this book to anyone who has further interest in this subject of software sacrifices, and especially to anyone who finds herself trapped in a "death march" project—or worse, trapped in an organization where death march projects are the norm. I would, however, like to offer the following list, from page 20 of Yourdon’s book. This list comes from his research into why people choose to sacrifice themselves for these types of projects:
- The risks are high, but so are the rewards
- The "Mt. Everest" syndrome
- The "buzz" of working intensely with other committed people
- The naiveté and optimism of youth
- The alternative is unemployment
- It’s required to be considered for future advancement
- The alternative is bankruptcy, or some other calamity
- It’s an opportunity to escape the "normal" bureaucracy
An interesting list, and one that could probably be expanded to include your own reasons for signing on for that last death march project.
There is, however, a more insidious form of self sacrifice that most of us are inflicting upon ourselves every day: ergonomic stress and repetitively inflicted bodily damage. This kind of sacrifice takes place everywhere in the development community, even with developers who work a normal 40-hour workweek for great companies and great managers who appreciate them (yes, such situations do exist), and even with developers who work for themselves, in home offices.
A few years ago, I was working for a large "Fortune 1000" corporation here in Atlanta, GA, USA. I was sitting at my desk every day, just writing code like everyone else on the team. Somewhere along the line, I started to experience pains in my left wrist, in my lower back, in my right thigh, and especially in the fingers of my right hand. These pains really began to bother me, and eventually I figured out what was going on: I was doing this to myself, with my daily work habits and workstation configuration. Humans, I realized, were not designed to be sitting in at desks in front of computer screens all day. After doing a little observation and research, I made the following corrections:
- I purchased a decent keyboard, throwing away the piece of junk that came with my computer. I got the split-down-the-middle kind, which only took me a few hours to get used to, and which immediately forced me to start typing correctly. The split keyboard also stopped me from having to bend my wrists inward while I typed. This keyboard is also so much better because the key action is smoother and more responsive. The keys have a really nice click, instead of the mushy feeling the old keyboard had. I also bought a wrist pad to rest my wrists on while I type.
- I purchased a new mouse, again, throwing away the piece of junk that came with my computer. This mouse is properly sized to fit my large hand, with a nice ergonomic curve that allows me to just rest my hand on top of it without having to grab it. I figured out immediately what was causing the pain in my fingers: my old mouse was too small for my hand, and it had an awful shape, which was forcing me to clench my hand into a claw in order to hold it. This new mouse also has a much more responsive and "tight" button click action, that allows me to click much faster, and a scrolling wheel in the middle of it, which keeps me from having to move my arm so much.
- I put an empty box under my monitor up so that the top of the monitor was even with my straight-ahead eye-line. This helped my neck since I did not have to look downward at my screen anymore.
- I adjusted my chair properly, so that it would not allow me to slouch so easily, and so that it was at the right height to keep my elbow and shoulder from being strained. I was lucky enough to have a nice chair that supported a full range of adjustments and locking positions. I also had to start making a point of paying attention to my posture, to catch myself slouching and leaning forward. To this day, I still have to pay close attention to my posture, and mentally correct myself throughout the day.
- I got rid of my fat wallet, full of cards and junk I never used, and got a small money clip/card carrier thing instead. I was keeping my wallet in my back pocket, and sitting on it all day long. With the small money clip thing, I could start carrying it in my front pocket. Sitting on my wallet all day was what was causing the pain in my leg.
Guess what? Within a few days, all of my pains disappeared, and have never returned. To accomplish all this, I had to go out and spend a few bucks of my own money. A realization, though, made this expenditure insignificant to me: this is how I make my living! If I let my health deteriorate in this way, if I can’t sit at a computer and type all day, then I can’t do what I love! Worse, I won’t be able to pay my bills. At the time, I was a contractor, so I did not bother going to the management of the company and asking them to spend money on a "special" keyboard, mouse, and wrist pad. To me, it was not worth the trouble, or the delay, to wait for someone else to solve my problem for me. Plus, since I bought the things I needed for myself, I have been able to take them with me from job to job ever since.
On the first day at my current position (again, contracting for a large multinational company in Atlanta), I arrived at my new desk, set up my keyboard, mouse, and wrist pad, got the monitor at the height I like, and sat down to try out my new workstation. I would be spending eight-plus hours every day in this position, writing code and documentation. Something was not right. It was the chair. It only took a minute to realize that this chair I had been given was a total piece of crap.
You could tell that whoever had bought the chair had thought they were buying something ergonomically designed, but they had been swindled. It was junk, and the one back-related adjustment it did have would not stay in place without sliding back to the default position as soon as you sat in the chair. I walked around and looked in every one else’s cubicle, and everyone had the same exact chair I had. This was no good. That day, on my first lunch hour, I went to the office supply store and bought myself a chair. Everyone may think I’m kooky, and the management may resent my disdain for the piece of crap chairs they bought, but I’ll be damned if I’m going to put my career longevity at risk.
Here’s another one: lately I’ve been experiencing some pain in my hip joints, where the femur bones join to the hip. I realized what was causing the problem: I have been tucking my legs in under my chair and crossing them at the ankles—a no-no they taught me to avoid way back in high school typing class. The problem, though, is that my chair has to be at a certain height to keep my elbows and shoulders comfortable, which makes it hard to keep my feet exactly flat on the floor in front of me. This past week, while my boss was on vacation, I borrowed his under-the-desk typing foot stool to see how I liked it. I liked it a lot, and now that he’s back from his vacation, I’m going to go out and buy one of my own.
At the risk of sounding like a hypochondriac, here’s yet another one: since I’ve started this column, and since I’ve taken on some other extracurricular projects, I’ve been spending more time in front of the computer. Lately I’ve been having trouble with my eyes drying out and being very red and tired by the end of the day. I did a little research on this, and realized what was going on: staring at the screen all day, I was not blinking near enough. This evidently, is quite common for people like me who stare at computer and television screens all day. So now I try to pay more attention to my eyes, to consciously make sure that I am blinking as I work. I do the same thing when I relax in front of the TV at the end of the day. It is helping, but I still keep catching myself going long periods of time not blinking.
I’ll stop the litany there. My message is this: take care of yourself. Take responsibility for your health, because no one else will—least of all your employer. Just ask the people who got cancer and brain damage making disk drives, or the coal miners featured in the movie "Harlan County War." If you are young, do not let your youth deceive you and lull you into a false sense of security. Health is fleeting, and must be attended to. If you choose to work extra hours on a death march project, as all of us probably will at one time or another, so be it. You are your own master, and I am not trying to sit in judgment of anybody. But make balance the norm, and take time to enjoy life. Go home at night, leave work at work, and get a good night’s sleep. Take the weekend off, and go do something fun.
A few years ago, a programmer friend of mine ran into a guy in line at a conference. The guy was telling my friend that he used to be a programmer, but could not write code anymore because he could no longer type. He had developed carpal tunnel syndrome, and it had gotten so bad he had to give up his favorite thing in the world: writing code. This story scared the hell out of me, and if you love this game called software engineering as much as I do, it should scare you too.
Edward Yourdon, Death March: The Complete Software Developer's Guide to Surviving 'Mission Impossible' Projects, (Prentice Hall PTR, 1999)