Live data from Hacker News

How should I behave as a developer in a project that's headed for failure?

programmers.stackexchange.com

131–140 of 163 posts

Re: How should I behave as a developer in a project that's headed for failure?

#131
post #48

Earlier quoted context omitted.

I've had employees try to the "build a better solution" approach behind my back. The big problem with it is that it assumes the person actually has the full picture. In a small project, that may be the case. But often it isn't. In the case I have in mind, said employee delivered a solution that did in fact do most of what our current solution did very well with little complexity. But it utterly failed to account for…

Why weren't you communicating the strategy and vision for the product? That's a failure of management. Each layer in the structure should be given and understand the vision and goals of the immedeiate layer above them so that they can creatively execute and improvise excellent solutions instead of being locked into a plan.

The overall strategy and vision, sure. But you can not spend tons of time making sure every team member understands every little detail of what implications it has on projects far outside of their remit.

At some point, especially when dealing with senior developers in a fast moving startup environment, you have to assume you're dealing with reasonably responsible engineers who understands that if something doesn't make sense to them immediately, their first instinct should not be "I can rewrite this component that isn't remotely part of my job in a few weeks, no need to ask anyone", but rather to ask "what am I missing? Please explain this to me".

I've personally come across many cases where something looked trivial to do better, and occasionally I'm right, but I'm also humble enough to go ask the questions before I put aside the work I've been asked to do and go off to rewrite something else.

Re: How should I behave as a developer in a project that's headed for failure?

#132
post #3

Choose from 2 extreme alternatives: a. Treat this project as if it were your sick child on life support. b. Treat this project as if it were a gazelle being ripped apart by a pride of lions. If you choose (a), do anything and everything you can to save it. Be open and sincere and stop at nothing. If you choose (b), prepare a resume and run the other way. No sense risking your own well-being on a lost cause. The worst…

You are in the pride of lions. You do not know it yet. What many coders don't realize is how much power they actually have.

You are the lion and the resources of the company are the gazelle. It's time to feast!

It's really a good time to:

1) ask for a raise for more "effort"

2) ask for more budget

3) that new computer they've been holding out on.

Ya, you can ditch that 17" laptop from 2006. ;) Just ask!

We know that throwing resources into the game this late doesn't work, but it's good to have that extra budget for later just in case you wildly do succeed.

Re: How should I behave as a developer in a project that's headed for failure?

#133
post #46

I've picked up so many of these types of projects, it's sort of become my specialty. The first thing to do is to ask oneself if it's worth completing the project at all. All stakeholders _will_ have to be ready to make some sacrifices; is it worth it? Also, like others have said, communication is key. If the team can't have open conversations up-front, it may be best to walk. But, if the team can communicate openly a…

I do a fair bit of failed-project-rescuing myself, and I concur with most of this. It's good advice.

The only thing I'd quibble with is this:

Don't think about the sunk costs.

... not because I think it's bad advice (it isn't), but because if you're a developer it doesn't really matter what you think about the sunk costs. What matters is what management thinks about them. And even though management are supposed to be the numbers people, it can be very, very hard to get them to understand the Econ 101 concept that holding on to bad stuff that's already paid for can cost them more in the long run.

This seems silly, but a lot of the time it just comes down to office politics: someone in management is/was a champion of the project, and a rival in management opposed it, and abandoning sunk costs will give political ammunition to the opponent (who can claim that the champion wasted company money). So the champion becomes irrationally unwilling to let go of parts of the project that clearly aren't working, just to avoid the appearance of "conceding defeat."

Re: How should I behave as a developer in a project that's headed for failure?

#134
post #30

Earlier quoted context omitted.

With this behaviour probably you will survive this project but in the long run, you will be wasting your life and maybe miserably unhappy in the end.

I'm not saying he needs to stick with the project. I'm saying that it's, on average, bad for your career to try to save a failing project. Better to move to one that will succeed, but you don't get mobility by offending everyone around you, which is often what happens when you try to "save" people in spite of themselves.

Or to learn how to differentiate projects that are within your power to save from those that are not.

If you're a developer, you often can help save projects that are failing because they were poorly outsourced, or handed to the wrong team, or technically flawed. You usually can't save projects that are failing because management never really believed in them, or that are caught in crossfire between conflicting factions on the corporate board, or that have never been funded/resourced at the levels required for success.

Re: How should I behave as a developer in a project that's headed for failure?

#135

Earlier quoted context omitted.

So do a death march or quit? Very extreme. Unless you're in a tiny company that will literally go out of business if the project isn't complete, there is a valid middle ground: cover your ass to avoid blame, pitch to the PM to get the schedule extended, salvage as much as you can, and move on and do better next time. In the meantime, take a better job if one turns up. But don't be lured into extreme action by magical…

Maybe it sounds extreme, but I agree with @edw519: you don't want to work at a place that lets a project fail as badly as the OP described it. I've been in situations like that too often and I've learned that particular lesson too well. Like @angdis said elsewhere in this discussion, projects "fail" all the time, but the OP is talking about a specific kind of failure. Notice how many commenters mention "finger-pointi…

I wonder if a company culture that is heavy on blame when things go poorly is conversely liberal with praise/rewards when things go well? Might not be that bad of a place to work if so.

Re: How should I behave as a developer in a project that's headed for failure?

#136
post #37

Communicate your concerns in the most concise and non-confrontational way possible up the management ladder. Summarize the risks, but do not try to impose your conclusion on them. Management must always have the choice of what to do, but it is your job to assess and communicate the situation. Use email, so as to leave a paper trail when things go south. I hope future historians will be astonished that all of us chose…

> There's nothing stopping this developer from taking the requirements of the project and developing a solution from the ground-up in their language of choice over the course of a couple weeks. I can practically guarantee (and the OP strongly implies it) that the problem with this project is not that it is hard to implement, but that its requirements are unspecified. Rewriting it in a fancy feel-good language changes…

The project is already sabotaged by bad management--a rewrite in a fun/easier language at least means the band will be playing when the ship goes down.

Re: How should I behave as a developer in a project that's headed for failure?

#137
post #68

Earlier quoted context omitted.

"Do as you're told" and "Don't talk back" are probably the worst "rules" I've been taught in US grade school. Following that mentality will net you exactly this: a miserable and close-minded life. DO voice your opinion and professional expertise. DO make recommendations as to how to salvage or improve a project. Not doing so will not get you anywhere.

That's not true. Being able to endure and suffer silently is a skill that is often the way to survive through struggles and win the game in the end. It is mostly the case for politicians and mafia members, but it is also useful for developers.

Sure, you can play the endure card and just do your job in the hope of one day pulling ahead of everyone. But what if that isn't the case? What if you silently work your ass off and then get laid off anyway? If there's one thing I've learned, it's that you earn what you put in. It's in your interest to push the product, create a drive in the company and basically make it the best environment for you and everyone else to work in. And if that is met with nay-sayers or incompetence, then you should be moving on anyway.

Re: How should I behave as a developer in a project that's headed for failure?

#138
post #33

Thing is... a lot of projects seem this way when you're in the thick of it, but towards the end the mess can untangle itself and provide a useful tool/product for someone. > Application is unstable and very difficult to use. Could be that there are a couple of "killer bugs", fix them and it might not seem so bad. Difficult to use is also subjective, people get use to stuff. > System is very convoluted, code very hard…

Interesting take, in fact recently I was working on a project that I was convinced was going to be a huge mess but in the end out clients seemed fairly happy with it, and understanding on inevitable roadbumps. > OK, this one I can't defend :-P I'm curious as to the why of this? Surely some applications just require a lot of tables as they deal with a lot of [different types of] data?

> I'm curious as to the why of this? Surely some applications just require a lot of tables as they deal with a lot of [different types of] data?

Maybe it's my lack of imagination, but I can't think how you'd create a design with hundreds of tables by hand - it would surely involve generating tables from some other source. For different types of data I'd lean more for a javascripty-style meta-table with key-values, since I bet all that different type of data wouldn't lend itself well to relations.

Re: How should I behave as a developer in a project that's headed for failure?

#140

You are pursuing the wrong profession if you think challenging problems and impossible deadlines are anything less than hackers ecstasy.

There's a difference between problems that are challenging because they're complex puzzles, and problems that are challenging because they're poorly defined or full of bullshit constraints.

Asking you to empty a dumptruck with a spoon in four minutes, by your reasoning, is hacker ecstasy (and no, you aren't allowed to threaten the operator with the spoon).

Post reply on HN