Working for Vacation
August 14, 2007 1:03 PM   Subscribe

How do software engineers cope with the enormous stress levels that come with the territory?

I have a job building web services for a company that is about as far from mission critical as you can get in the grand scheme of things. Two weeks ago, there was a crisis at a customer site that has involved me working while on vacation, sometimes until extremely late at night, directly with the customer's technical staff. These are problems with my code, so there is a huge ego hit combined with the suddenly long hours and pressure from superiors. I'm ready to crack. Coworkers are telling me that they've seen worse and that this isn't unusual. Please tell me there's another way.

Need more? jobkillsme@gmail.com
posted by anonymous to Work & Money (25 answers total) 9 users marked this as a favorite
 
Some people handle stress better than others. See this thread on air traffic control, for many instances of it.

As a personal anectode, my current long-term (programming + support) job has much less stress than my previous long-term (programming; negotiating project details with clients) job; I miss the old job. I'm not learning as much, and I don’t have as much opportunity for advancement. This is part of why I’m in the longwinded process of applying for a high-stress job in anther field that also happens to have an epistemology that agrees with me more.
posted by Aidan Kehoe at 1:14 PM on August 14, 2007


It'll happen in any job. Crunch times suck, especially when you're not expecting them. Push through this now, and afterwards, talk to your boss about how you can avoid this in the future. It may be you need a different process for your development, more testing, more client feedback during the process, etc. There are ways around it, to some extent. To another, that's the nature of working for clients.
posted by devilsbrigade at 1:16 PM on August 14, 2007


Working on vacation sucks and you should ask to be compensated for it, but having to fix your own code is hardly over the top. Everyone has problems at some point or another and you shouldn't be taking this as a "huge ego hit". It's very unlikely you're the first person in the company to have this happen to them, and also doubtful you'll be the last. A year from now you'll think "Oh, hah, I forgot to check for that edge case, silly me" and no one else will remember it even happened.

It sounds like you might be lacking some perspective - go watch some construction workers laying blacktop in the hot sun for a while, or talk to a doctor who's lost a patient due to missing something. If you really think that putting in some extra hours (with reasonable rarity) to fix actual problems presents "enormous" unhandlable stress, you may need to find a new job wherein nothing bad or difficult ever happens.
posted by 0xFCAF at 1:18 PM on August 14, 2007 [1 favorite]


Stress is caused not by challenges, but by being confronted with challenges for which you do not have appropriate resources.

Sounds like the project is poorly engineered and managed, and that is part of the company culture.

If your code is so fragile and obtuse as to be un-maintanable by someone else, I don't think it should be live. That it is live might mean you are in the wrong job, or it might mean the company has crappy practices.
posted by mzurer at 1:20 PM on August 14, 2007 [4 favorites]


In my experience this is common in software development, but at good companies there are a few things that make up for it:

0) The pride of creation in something of high quality - I know that what I've created is really good (flexible, powerful, well written) and I get daily pride from seeing it used by people all over the world. This is the trade-off - building a system that no one uses is zero stress, but zero reward. I'm going to work hard on the code either way but it means so much more to see it be used.

1) Not being in this state all the time. It's understood that not all problems are mission critical, some things can wait, and that periods of over-stress should be followed by a release of pressure or other recognition - even if it is small (comp time, bonus, leaving early for drinks on the company, etc).

As background I am the development lead on a very public financial markets system. Bugs in my code that lead to outages get reported on CNN, and bugs that lead to functional problems often require my company to cut a check to the customer.
posted by true at 1:29 PM on August 14, 2007


I leave the country on vacation, and give them no way to contact me.
posted by smackfu at 1:38 PM on August 14, 2007 [1 favorite]


Drink.

On a more serious note there are other things you can can do to make your software bombproof. How is QA in your company? QA can go a long way into preventing these crisis situations. Unit Tests, Daily builds, Stress testing etc. should all be done before it hits a client. bugs and problems are normal, but crises due to poor QA can definately be avoided.

How's the documentation in your project? good documentation means that someone else can step in and fix your problem when you are on vacation. Do you guys do architecture and code reviews? Reviews allow the whole team to go over the code so that problems and even potential problems can be caught early. It also means that more than one person has seen the code and knows what's going on.

This kind of preparation goes a long way in preemptively reducing stress. But what to do during a crisis? Exercise, eat properly, drink lots of water and get some sleep. If you are working long hours during a crunch take a break over meals. Your employer (if they know what's good for them) should arrange to have healthy food delivered to you. And when its over, take that vacation and get away from it all.

Best of Luck!
posted by captaincrouton at 1:50 PM on August 14, 2007


Some software engineering positions are more high-pressure than others. If you're in a position where you're responsible for critical like true mentioned above, you're going to have to devote a fair portion of your life. Otherwise, rely on a competent employer to cross-train employees, enforce documentation standards so someone else may maintain your code, and use a robust QA process.

It's not a huge ego hit. You'll be judged more on your professionalism and response to problems than the problems themselves. If it's a constant cycle of break and fix it will become an issue, otherwise you're just flexing your troubleshooting skills -- part of a good programmer's toolkit.

If your superiors are dicks, work elsewhere. Life is too short for that, unless you're being compensated for it above and beyond the market average.
posted by mikeh at 2:13 PM on August 14, 2007


The only way to not be "stressed out" is to accept the situation - don't look at it as something is going horribly wrong and ruining your vacation, look at it as code going haywire while you're on vacation as a "known element" of your job. You have a lot of responsibility, which you signed up for and accepted willingly.

Not to compare the jobs in any way, but... look at how military personnel handle stress - those that cope best usually have a grim sense of responsibility and accept the reality of the job. If you have to undergo these stressful events, the best defense is to anticipate them and accept them. Choose the job you have.
posted by lubujackson at 2:36 PM on August 14, 2007


Sounds like you need a serious post-mortem process once this dust settles.
posted by Cool Papa Bell at 2:39 PM on August 14, 2007


I think it has a lot to do with the the people you work with and the quality of the software development process in place at the job. Good people and good process help an incredible amount.

There will still be crunch times, late nights and all nighters. I've found them to be rare. There's always the embarrassment of finding problems in your code. If your workplace process is good, they're almost always caught in-house. Good co-workers won't make you feel bad about them.

Most of the unreasonable stress I've seen in software engineering came from bad managers or difficult co-workers.

As a disclaimer, I've heard of people working 80+ hour weeks, and undoubtedly that'd be stressful. Outside of maybe 3 or 4 crunch times over 20 years, I've never worked like that. I develop software for embedded systems, if that makes any difference.
posted by DarkForest at 2:49 PM on August 14, 2007 [1 favorite]


Most of the unreasonable stress I've seen in software engineering came from bad managers or difficult co-workers.

Whole-heartedly second this, adding to the list of culprits developers unwilling to learn lessons. Myself included. Any time you have a situation like this - team-wide or alone - you have to figure out how you got into the situation and what kinds of practices you can implement/change so that this does not occur again.

If you or your shop is constantly in turmoil as seems to be indicated by the tone of your post, you guys are doing something wrong. Something less than good. Stop patching the problems (well, don't stop- fix them!) but be willing to spend the time analyzing yourselves.
posted by xmutex at 3:18 PM on August 14, 2007


You're only human, so accept the fact that you'll make mistakes. Realize that while your code is broken, you're not completely at fault -- where's the QA in all of this?
posted by aeighty at 4:06 PM on August 14, 2007


When I was in the pressure cooker, I made it a priority to take classes that forced me to get away from the office and keyboard at least a little. No fair taking left brain classes that you can think your way out of. Programming and math classes do not count! Learn to sail, ski, play guitar, do figure drawings, cook, massage...

That doesn't solve the "I'm having to work during my vacation and I'm about to crack". But if I could maintain a classroom distraction as a prophylactic measure during the not so crazy times, it helped keep me in balance when crunch time inevitably arrived.
posted by browse at 4:24 PM on August 14, 2007


Fires are a good thing. Fires teach.

I remember a brilliant young programmer right out of school who I was mentoring was complaining that he didn't make nearly as much money as the people with more experience, even though he was a better programmer (he was)

I told him you don't get paid for what you do as much as for what you don't do. The first time a mistake of his caused a 48 hour scramble he said he understood.

Of course this is just the self-caused stress. The stress caused by management making unreasonable demands can still be a problem. Not much you can do about that except find a shop that knows what it's doing and has a supervisor that can shield you from management.

The most important advice I would give at this stage of your career is never try to cover up a mistake. Always own up and offer solutions. People trying to cover their ass always end up making the clean up last twice as long.
posted by Bonzai at 4:30 PM on August 14, 2007 [2 favorites]


so much depends upon context. this is your first job (i gather), so you have no idea what to expect, and you're probably also learning a huge amount (which typically involves making mistakes).

in general, a good boss should be protecting you from the client. and everyone makes mistakes. so on the face of it, what you describe sounds like you're in a pretty bad company. but a lot depends on you - if you're new and making mistakes, you're a lot more likely to be treated like a coding monkey. and in such a case it might be worth hanging on there because (1) you may impress by putting in the effort and (2) you're probably learning a lot.

but if i were you, i would be applying for other jobs - at best the place you are at now sounds average.

as for handling stress - when i screw up i find it's best to think "ok, so what can i learn from this?".

but really, consider another job.

true story: i changed jobs recently, and it's made a huge difference. at the last job i ended up working through an anger management course just to help keep control of the stress. now i actually enjoy thinking about work out of hours. sometimes you don't realise just how bad it is until you get out.
posted by andrew cooke at 4:31 PM on August 14, 2007


TAKE YOUR TIME.

I'll repeat it, because it bears repeating.

TAKE YOUR TIME.

Any time I've made a serious mistake, it was because I was working too quickly and carelessly, and not paying close enough attention to what I was doing. The only way to deal with situations like this is to not get into them in the first place.

They want you to work fast? Of course they want you to work fast. They always want you to work fast. But if something gets screwed up, it's your ass that takes the blame, not theirs. So when people pile on the pressure, tell them that you're working as hard as you can, and then take your time and get the job done right.

Right now, you're up to your ass in alligators, putting out fires and doing damage control. It sucks - believe me, I know. However, the important part is that you make a note of how much things suck right now, and then in the future, you'll think back to your experiences and won't make the same mistakes again.

Damage control sucks, but it sounds like the people around you are sympathetic. Everybody fucks up some time. The important part is that you learn from it.
posted by Afroblanco at 4:51 PM on August 14, 2007


I leave the country on vacation, and give them no way to contact me.

This.

you don't get paid for what you do as much as for what you don't do

And this. Basically, you need the sang-froid that comes with more experience. I am not a coder, but I am a sysadmin so in certain ways, my responsibilities reach further than the developers (in my environment).

Much work-related stress comes from within (hence the need to be tempered by experience), but the worst kind comes from incompetent superiors and incompetent project management, or bad processes. You have to figure out which type it is. If your boss is a jerk & no one in your organization knows what the fuck they are doing (see comments above on QA), then just get a new job. If you are just new to this level of responsibility, you probably just need more time.

Eventually you will know enough where it won't matter if they fire you; you can just find another job (likely immediately, likely for more pay and less stress). This is the "fuck you" point where you attain a zen-like state of sang-froid and never get stressed out again. My boss is at this level. Someday... someday, I will be too.
posted by synaesthetichaze at 4:53 PM on August 14, 2007


Also, Afroblanco has a good point. Speed kills.
posted by synaesthetichaze at 4:53 PM on August 14, 2007


Write some tests, man. Lots and lots of tests.
posted by ch1x0r at 5:49 PM on August 14, 2007


Obviously very dependent on the nature of the job, but in general testing costs the customer money, bugs cost you money. Point this out (if true) when rushed. If someone is seriously pushing even after being reminded of the economics of the situation get it in writing, but more importantly start looking for a better job.

Also remember, even if you're young and massively inexperienced, no job is worth your sanity.
posted by Skorgu at 5:50 PM on August 14, 2007


A couple of things for the future:
1. Read PeopleWare
2. Read Joel on Software
3. Learn how to estimate your work and use realistic estimates for everything and I mean everything.
4. Stick to your guns for your estimates - point to PeopleWare as backup and trot out the holy trinity of compromise: make management choose between lose a feature, take longer, lose quality - there is no other option.
5. Arrange your schedule to put most of your effort in the beginning, not the end - this is long-term sustainable
6. Learn to shrug
7. You're not given vacations, you take them. Take it.
8. Learn from your mistakes
9. Watch the people who don't appear stressed and talk to them about how they do it.
posted by plinth at 8:41 PM on August 14, 2007


1.5: Read The Mythical Man-Month. Most of what's written in more recent books was clearly explained decades earlier. Perspective is good, if occasionally depressing.

Other than that, what everyone else said. If you're an engineer (rather than a code-monkey) then part of your job is to give your boss a realistic estimate of the function/time/quality tradeoffs. Your job is also to keep your boss apprised of how things are going. If your boss chooses the low-quality route, then, well, the resulting clusterfucks are intentional; don't stress about them, pull the long hours if that's your job, then take a vacation. Even if you do everything right and write well-engineered code and test it well and don't release until it's ready, sometimes it will still blow up in the field. As long as people aren't dying or losing their life savings, just do your best and put it behind you. But realize that sometimes you are also at fault for not having raised the warning flags or spoken clearly enough when things first started to go sour. Learn from it and move on.

If your boss doesn't listen to you, you may wish to find a different boss. There are many to choose from.

That said, really understanding the tradeoff is one of the hardest bits of experience to acquire; I don't think one generally has a good feel for it until one has been working in the trenches for a decade or so.
posted by hattifattener at 11:01 PM on August 14, 2007


The only fix for the ego hit is to make sure that bugs don't get you twice. Everyone has bugs in their code, but there's a big difference between embarrassing stuff you should have caught, and interesting new bugs that actually take some problem solving skill to fix. If you fix something, make sure you add the assertion or exception or test case or whatever you use to make sure it doesn't happen again.

I hope that doesn't come across as preachy, I only give this advice because I've had my share of the embarrassing bugs. Interesting bugs give you a little energy boost when you fix them because it's like you solved a riddle. The other bugs just add to the stress.

I'll second the Peopleware recommendation as well. Long-hours to for a specific deadline are one thing (though it's awful that it coincided with your vacation). Long-hours that are ongoing and pervasive don't do anyone any good.
posted by Gary at 12:55 AM on August 15, 2007 [1 favorite]


Drugs. And Sex.
posted by Dataphage at 7:18 PM on August 15, 2007


« Older managing ideas   |   Help me attract birds to my balcony Newer »
This thread is closed to new comments.