tags:

views:

514

answers:

11

We've all seen it.

The project's running late and a penalty clause is looming, so the management resort to aggression and scare tactics to get the project out the door (described well here BTW).

Examples of management behavior in this scenario:

  • they expect lots of unpaid overtime
  • they quietly schedule one developer to work late, expecting the others to follow suit
  • they bring you into an office to "have a chat" (often a passive aggressive ticking off)
  • they "expect" a feature to be complete by a given arbitrary date
  • thinly veiled "public shamings", where individuals are forced to recount day after day the features they have failed to complete
  • they start testing the system before it's sensible to do so, distracting you with "bugs" they've found

This isn't fair and is very tough on the developers who the company depends on.

What's the best way to deal with this type of situation? (Preferably other than quitting).

I'm interested in how prevalent this type of scenario is, so plus-ones welcome.

+26  A: 

I've experienced most of the things you mention to one degree or another at most of the places I've been. I try to keep in mind that s**t rolls downhill, and that the manager "flogging" you (to use your words) is probably being flogged from above, and so on, and so on...

The one place I've worked that didn't exhibit any of these behaviors was in the defense industry, with all their rigid processes and bureaucratic overhead. Estimates were spot on though, and you had to get permission to work more than 40 hours. Go figure.

I think the first thing you have to do is demonstrate to the manager that you're on their side. Show them in terms they understand (time, money) what problems you're having, or what benefit your idea has. Don't give them technobabble mumbo jumbo. Try to look at things from their perspective; everyone's under pressure in these situations.

The second is to realize that the business is more concerned with making money than quality, no matter what they say. Everyone talks a good game, but when push comes to shove and a deadline looms, quality goes out the door. Sad, but true. You have to learn how to compromise on quality in order to ship. Resist the temptation to "gold plate" code that's already working (or kind of working); if the business is happy shipping it, you should be happy shipping it. Choose your battles wisely.

Patrick Cuff
Patrick, a very pragmatic answer, I would second it.
AnthonyWJones
Patrick, Amen for that and absolutely well said.
whiz
+5  A: 

I have experienced this scenario in the past and ultimately took the option to find another job. With hindsight, I probably did not make that decision quick enough as working in that sort of environment can take an awful toll on your physical and mental health. Essentially, if this sort of behaviour is part of the corporate culture and you cannot influence management decisions then the only sensible option is to leave.

If you are interested in understanding how and why projects like this come about, then I would recommend Edward Yourdon's Death March.

John Channing
Leaving isn't always a sensible option. Consider the current economy and having a bad job can be immensely more important than having no job.
Jeff Yates
Most people who "can't" leave are being negligent in keeping their skills and network up to date. Good developers always have at least one other option, even in the current economy.
RoadWarrior
I think we'll have to agree to disagree. Times are about to get harder than this or the last generation has ever experienced. Your definition of "good" now will come to mean what we would currently refer to as "exceptional". And with house prices entering negative equity, people can't just move.
Jeff Yates
@ffpf There is a difference between taking another job (my advice) and leaving with nothing else to go to.
John Channing
No doubt. But finding that other job is going to be a b*tch.
Jeff Yates
+3  A: 
  1. Ask the reason to your manager, why he is doing what he is doing.

  2. Don't take it personally.(unless it is apart to you that this flogging is personal vilification without any reason given). At same time be firm and bold to reason out with your manager to draw boundaries.

  3. Tell the manager that you are with him in this situation, and not on the opposite side.(if there is any!)

  4. If it's business specific (situation where customer is unhappy, might cancel product order,etc), be empathetic. Company is not running for charity. They want to make money. a.) Give all possible solutions to the problem (even if it means you need to compromise some of your work habits, or working style, or your ideas about product nature, quality etc. b.) Give him the tradeoffs of each such possible solution.

-AD

goldenmean
+4  A: 

Perhaps the myth is perpetuated by the sorts of movies which have geeks doing things with guns to their heads. You need to make it clear that excess pressure is highly counter-productive.

The best you can do is to communicate well. Explain that there is a limit to how quickly things can get done, explain that to reach deadlines you need to sacrifice features or quality. Make a list of areas where such sacrifices could be made, and discuss this with your superiors, coming to an agreement on what to sacrifice. This makes it clear that you're not just being lazy or incompetent.

Accept the fact that you may have to roll out code you're not satisfied with - if you just keep pushing against management, management will keep pushing against you.

But remind management of the real costs of rolling out bad-quality code (in terms of support, updates, lost customers). And remind them of Hofstadter's Law ("It always takes longer than you expect, even when you take Hofstadter's Law into account").

Artelius
+3  A: 

As mentioned above, keep your head down, cobble together whatever you can as fast as you can, recognizing that there will be enormous technical debt as a result. Also recognize that nothing you do will "fix" or "change" or "improve" the situation, because after this project the next one will be managed the same way only with a team that is increasingly demoralized, indifferent and burned out. Spend your off hrs polishing your resume and scheduling interviews, when you get a good offer jump ship.

I once worked as a contractor for a Corp where after 5 months I had seniority over all but one full time IT employee (out of 73) - thankfully they were paying me by the hr. The employees were all working 100+ hr weeks and getting paid for 40. The only fix that worked was to "change management" - a new CIO was hired and all the intervening management were fired.

kloucks
+1  A: 

In a situation like that I would first remind you to not take anything said personal. It's just stress talking and fighting back while a tempting option doesn't solve anything merely adds to the confusion of the issue.

With objectivity at the forefront of your mind, get tactical and agile as possible! To make things easier I would meet with whom ever is on board with the project and walk through a listing of all known issues, number them then systematically plan attack scenarios with nothing held back. Limit the time of a meeting like this to 2 to 3 hours. Then schedule 4-6 hours of work after that a regroup and report. All on the same day. Rinse and repeat until all issues are resolved. Be sure to look for ways to prevent the prevailing problem from happening in the future and be sure to implement any solution that passes the sniff test of the group.

Use modeling too to clarify what's needed it doesn't have to be anything fancy just box and arrow it till the solutions are clear.

Hang in there. It sucks but this is why work can be a four letter word. Get good sleep! Stay hydrated and exercise daily to help work all the stress out. Lay off some of the coffee and take measured breaks.

Quiting or finding another job is not hacking. It's quitting. Hacking is running into a hard ass problem and hammering on it in an intelligent way until its a workable solution with an eye to the futre.

icode.cs
Remember: Screw the pebble! Move the mountain!
icode.cs
Quiting or finding another job could a) save your marriage and/or other relationships, b) preserve your physical health, c) preserve your mental health and d) allow you to enjoy a career rather than invoulentary servitude.
kloucks
+3  A: 

<mode value="cynic">
Look on the bright side - when you jump ship, you really leave the manager in a hole of his or her own making. Leave now, before the project is complete. It gives the maximum impact. And in the exit interview, you can explain why you are leaving.
</mode>

You seem to have some reasons for staying, so the place of work can't be all bad all the time. But if it gets to be remotely a habit, look at your options. What you describe is extreme. Public shaming is not the way to do things and retain a happy staff. However, pressure in the face of deadlines is an apparently unavoidable part of life in the software industry, so you won't often find somewhere to work without deadlines (I haven't heard of one yet, and you can bet the people working there aren't looking to move)>

Jonathan Leffler
i actually considered doing this once, but think of the reference you'd get!
Ben Aston
Just beware, when you jump, you'll become the corporate scapegoat and they'll blame you for all their failings without evidence.
Kent Fredric
@Sassertyl; a point. It depends on how long you've been there and whether you could avoid using them as a reference, and whether you could present to your prospective new employers that the management misbehaviour was simply grotesquely out of order - as it was.
Jonathan Leffler
@Kent Fredric: that too is a probability; if you are out the door, you may not care any more.
Jonathan Leffler
I agree with the idea of leaving a bad situation, but don't bother explaining/complaining in the exit interview. Just tell them "looking for better opportunities". There's no benefit to you in listing grievances, and it can only hurt you later if you want to come back.
Clayton
@Clayton: fair comment.
Jonathan Leffler
+4  A: 

Life's too short - look for another job.

Unless the company is so great that it's worth trying to turn it around, in which case you may have to completely change the management culture. If that's what you want to spend effort on, fine.

Oh, and unpaid overtime is illegal in the US. (There is no concept of overtime for exempt employees - and if they classify you as such, they better be able to back it up). A good way to fight back is to use this against them. Salaried employees cannot be docked for time missed during any week in which they perform work. Find your other job and just take a day off here and there (a well day) - go on some interviews. If they attempt to dock your pay, pull out the labor law and let them know you're interviewing because the environment's too poisonous.

Cade Roux
+2  A: 

There are things in your life you can change, things you can't. Some things you can change, but it will come at prohibitive cost. Trying to change management or change yourself to be accepting the idiotic management fits exactly in latter category. When management is incompetent, you are pretty much guaranteed that you will have to work like crazy and never get a good $$$, because they are simply not able to make money.

Getting a better job is a lot easier imho, and you have much higher chance to get into a company that respects you. And if you don't, at a minimum you will sharpen your interviewing skills

galets
+2  A: 

If this has been an ongoing pattern and reflects the corporate culture, then definitely start planning your exit. Just try to get out without burning your bridges. If the company does get their act together in the future you might want to come back, and you wouldn't want a "do not re-hire" notice in your HR file.

If this is a one-time problem or an issue with one manager, there may be a way to get through it.

The one thing I wouldn't do is cave in to unreasonable demands or unprofessional behavior (100 hour weeks, public humiliation). That only rewards bad behavior by management, and will guarantee that this becomes the norm if it's not already.

That doesn't mean you shouldn't try to get as much of the work done on time as possible. Others have suggested ways to trim requirements or make other compromises, and I agree with those ideas. Make a good faith effort to get it done, but don't take on the weight of the world.

If you survive this project, try to do a "postmortem" after it's done. The idea would be to try to figure out how things got so messed up in the first place, and to identify ways to help make suer it won't happen again. For example, was the schedule overly aggressive from the beginning? Were requirements poorly understood? Did scope change mid-stream with no changes to the schedule? Just don't make this a blamestorming session. Make it about lessons learned by everyone involved, managers and developers alike.

Clayton
+1  A: 

Leave. Otherwise you'll turn into the kind of person who fills all Joel-related Internet discussion fora with whining about employment conditions. And my guess is that being that kind of person would be even worse than working under such crappy conditions.

Will Dean