views:

923

answers:

13

Like many nerds I'm not good at asserting myself.

When business people demand a feature in an unreasonable amount of time, I work around the clock to try to deliver that feature.

The problem is, this impacts my health, both physical and mental.

What tips have you learned for pushing back against unreasonable demands without offending?

A: 

Just tell them that it isn't possible, even if it is.

Alix Axel
I would say the problem with that is when someone else does it or just the attitude it portrays.
IPX Ares
-1 Lying is a good way to get caught and subsequently offend your superiors.
Imagist
Maybe I was misunderstood here! =) What I meant is that it isn't possible in the interest of his health, there is no big deal. If someone else can deliver the same result in the same time they are putting their health in risk and thus being stupid.
Alix Axel
+10  A: 

Don't be worried about offending them, as they clearly aren't worried about offending you by making you put in extra hours. If you don't have a formal process in place for change requests (doesn't sound like you do), each time they ask you to add something, provide an estimate as to how much extra work that will be. If they kinda look at you like "so?", then translate that into extra days within business hours.

For ex - Monday at 4 PM they ask you to change something - you tell them that that will take at least 4 hours. If they look at you like "so?", tell them "that means it won't be done until tomorrow afternoon."

bpapa
I like that suggestion. That seems reasonable. Thanks.
nexa
Good answer. Exactly what I was going to suggest.
David Stratton
Always remember to add "it will be done by tomorrow afternoon and the mission critical project I was going to deliver tomorrow now won't be done until the day after"
Patrick
+3  A: 

The truth is always best, so tell them the truth. Perhaps it would also help you if you came up with a different timeline and proposed it to them so they can see the progress towards the feature on a day by day basis.

Samuel
Something like a progress bar would work well. If I break down the task into sub-tasks at the start and then report on which sub-tasks have been completed it might take some of the heat off. Thanks. Great idea.
nexa
+4  A: 

Okay so one way is when they give the deadline and the requirements. Ask them to give you the priority as well if possible. This is how we got some of our projects under control at work.

While they were doing that, we would also come up with estimates. Then with the priority listing and the work estimates, we would show them what was in and out to make that deadline.

At this point we could make the business decide if they could live with that until the next release (repeat the process!) or extend the deadline.

There is probably no way to do it without causing some tension. But I found this method is very professional, you earn respect by showing you know what you are doing, and eventually (like at work now) the business even starts to follow the process on their own before they talk to you.

IPX Ares
This would be a dream come true. Maybe I could put together a little web app to get people to follow a process like this. Do you guys use an app of some kind to manage this process?
nexa
MS Project is about all that we use. I have seen some good custom apps at some places I worked at as a contractor.We have started in the past year to use this software: http://www.smasystems.com/products/heat.htmWe then added a custom ranking tool on top of it to give it a better interface (think Netflix), but this is nice to give users a way to start tracking enhancement and support requests and does have some built in priority items and places to add estimates.
IPX Ares
+3  A: 

I agree that this is a predicament that plagues many technologists. I've struggled with it myself. I recommend trying the following:

  1. Whenever you are asked for a time estimate, overestimate by 2x. Also, say your estimate with confidence. Q: "How long would it take you to write a simple crawler to pull down some documents from xyz.com?" A: "I should be able to finish an initial version in by the end of tomorrow."

  2. Deliver your results in small pieces, and always under sell what you deliver. "I want to show you a preliminary version so I can get your feedback. Please keep in mind that it's far from done and surely has things that you won't like. Still, I want to show you what I have done so far." The key is to say this even when you think you've hit a home run. Undersell.

  3. Try to avoid mentioning technical issues. Instead, if your boss seems disappointed with your time estimate, mention a business or scheduling experience that resonates with them. I like to say something like "I think I can get that done by the end of the day, but you know how that goes. Maybe I'll encounter some unexpected bump in the road and it'll set me back a day." This often evokes a "yeah..... I know how that is...." Avoid going into details about how you realized that you started off with an clumsy design or you struggled to install some new module.

Greg
Point #3 resonates with me. I was asked to explain recently why I had not finished a feature on time and I told a manager that I had had some problems figuring out how to do it. Instead of taking me at my word, he reported this to my boss as a sign that I'm not good at my job. So I have to come up with better ways of talking about "bumps in the road" without making myself a target.
nexa
I'd hesitate to ALWAYS overestimate by 2x. To me, there are 2 parts to an estimate: the time you think it will take, and the certainty of your initial estimate. If you think it will take 4 hours for a task, and you are 100% positive on your estimate (i.e. there are no unknowns, you're very familiar with the technology/code/architecture that it deals with, etc), then go ahead and give your honest estimate. If you're less than certain, then you can start to tack on hours based on your level of uncertainty. This is obviously subjective, and hopefully over time your estimates will get better.
Pwninstein
Re point #1. I always give estimates with "error bars"; e.g. 2 days if all goes well, but maybe 4 days if the problem turns out to be more complicated than I thought. But always give honest estimates based on your experience.
Stephen C
I would generally multiply by four so that if they pushed harder I could reduce it by some and still feel comfy that it is doable.The first thing I do though is write up a spreadsheet showing what tasks are involved and my estimate on each task. Then I can show it to my supervisor and give a reason for the time estimate. It generally works well.
James Black
+2  A: 

What I do is just say why I believe something is not reasonable, just give good reasons.

However, if its really affecting your health, to be honest I think you should look to make some changes, even if that means changing jobs IMHO no job is worth your health.

mauro.dec
Believe me, if the economy weren't so bad right now I would be out the door. As for explaining why I think something is unreasonable, I have actually tried that. Instead the people I was doing the work for took this as a sign that I was uncooperative and started calling my boss regularly and asking why I was late delivering the feature to avoid talking to me directly about it. It's a tough crowd. I've never worked in such an unforgiving environment.
nexa
+10  A: 

As a former software engineer who is now in management my advice is:

  • Be honest about the nature of the demand
  • Be clear on the impact to overall quality of the product
  • Provide clear estimates on how long it will take to complete (without sacrificing quality)
  • Don't ever sacrifice your health

If your superiors are doing even half of their job they will have a schedule. If the request is unreasonable it will show in the schedule.

If they don't listen, if they don't schedule, if they expect you to work around the clock, quit and find a new job. No manager should ask that of their employees except in the most extraordinary of circumstances.

dkackman
My superiors receive requests from their bosses and in order to please their superiors they insist that I complete my part as quickly as possible so that they look good to their superiors. I'm the last line of defense, the lowest rung on the ladder. I don't think there's any real scheduling going on. It's really just bullying as far as I can see.
nexa
Time for a new job because your bosses aren't doing their job. Sooner or later they will create a house of cards that will collapse. They are only hoping to get promoted before that happens.
dkackman
+1  A: 

Based on your comments, it looks like the work and the unreasonable demands aren't coming from your boss. In such situations, part of your boss' job is to stand up for you. The problem may be your boss, or it may simply be that your boss doesn't know that the demands are unreasonable. Talk it out with your boss.

Imagist
+1  A: 

We use an issue tracking system (Redmine, for the record), that we track Bug, Feature, and other types of issues relating to a particular project. With it, we add estimates to each issue and track progress daily (even several times a day). That way, management can always have a handle on how long something is going to take, as well as get real-time e-mail updates (if they subscribe to them).

If it's a matter of them being uncomfortable not knowing exactly how long a task or group of tasks will take, something like this will surely help them with that pretty quickly. A good project always has a schedule, and a well-managed project usually meets that schedule. A "do it as fast as you can" attitude for production code is never the right answer.

In a roundabout way, my answer is: push for some sort of project management software to be put in place (if there isn't already). It will hopefully get management and the developers on the same page, and ideally cut down on the stress for all parties. If cost is an issue, there are plenty that are free (like Redmine)

List of Project Management Software

Pwninstein
+1  A: 

I will try to list out all the breakdown of the task, using use cases. I will include all the sunny path & rainy path (when something goes wrong, what should we do)

Remember, listing down those alternate course (rainy path) is very important, because more than 50% of our time spent on it.

Most of the time, our superior only consider sunny path (take for example, login system, they will think they login system is basically user key in username & password, and they expect you to finish in 5 mins, but they never consider, what if user key in wrong, or do something funny). It our job to let them know the alternate course, and the time it takes.

Negotiation always need mutual understanding.

After giving the realistic estimation, you just try your best to achieve it. I won't suggest you work around the clock, just because you superior has a bad estimation. Just do it at your own pace, which won't affect your health.

Perhaps another alternative is, try advise him to drop certain features. This is one of the techniques used in Agile methodology. Focus on must-have feature first, and try to include the good-to-have features in the next edition.

Summary:

  1. show him the breakdown of the taskn and time estimation for each of the subtask. Don't simply tell him "I can't do" without anything back you up. It will makes you look bad.
  2. advise him to drop those good-to-have features.
janetsmith
+1  A: 

Be assertive, but polite. A smile always helps. Manage your managers.

Give them realistic time estimates and add a little bit of contingency for yourself because we all tend to underestimate things. The budget should then hopefully cover for a development time that is realistic. Don't cut corners on delivery time. If you deliver within your time estimate + contingency you will look good. They will deliver within their time and will also look good.

Your manager will probably add his/her own contingency on top of your estimates again.

Never sacrifice quality even if they demand it. Explain that it hurts everyones reputation when things go wrong. Instead, cut features. Something working well but with fewer features is much better than a fuller featured thing that keeps crashing or doing the wrong thing.

Matt H
+1  A: 

I think it often comes down to that management doesn't understand (or care about) the effort involved. If they don't ask for time estimates and just give you a deadline you should anyway insist on presenting time estimates for the individual features, preferably as granular as possible. Then use that as a fact sheet for your reasoning "you see, I will not be able to finish all of the features to that date, could you please decide which of the features you want to omit and which to add at a later date?" That way you are sharing the responsibility with them, asserting yourself in a discrete manner and they will also maybe feel more part of the process as well.

Anders K.
A: 

What tips have you learned for pushing back against unreasonable demands without offending?

During the interview I discuss their expectations (re. number of hours per week, who sets the schedule, etc.) before I accept the contract, and prefer to work with managers who don't find that offensive.

ChrisW