Live data from Hacker News

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

programmers.stackexchange.com

51–60 of 163 posts

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

#51

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" These are famous last words. So often I see people go off on the weekend to code a replacement for a legacy system, come back with a good demo, but not realize that they did 2.5% of the work that was responsible for 25% of t…

Yeah, the 100 table thing threw me as I regularly work in business software with over 1000 tables. The count of tables is less important than organization of them. If you have a clear structure and set of relationships, it is not too difficult to chunk their concerns.

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

#52
post #8

Earlier quoted context omitted.

I think you should post that comment as an answer, it is very graphical but helpful!

It's graphical, but not very helpful. How would the employee go about saving the project? The manager has authority over him/her, so their only choice would be to convince the manager that a drastic change is needed. Yet no manager is going to be receptive to the truth that they've personally failed over the past 1.5 months to such an extent that the next 1.5 months are impossible to salvage without throwing away mos…

> It may be graphical, but it's not very helpful. What is OP supposed to do to "save" the project?

I would disagree there.

A good manager might take the situation well - they may have been misinformed by others and think things are far better than they are.

If that isn't the case there may be the option of going above the managers head, though this has to be considered very carefully. In may case once it went rather well: the person above me had grossly misreported things above him. We are still dealing with some of the legacy of that period, but getting through it (and that person is no longer here). Of course depending on local politics this could go very badly, so I'll repeat: consider this sort of action very very carefully before taking the step.

In my case saying "things have been X bad for a while, if things don't change either we are going to fail badly very soon or I'm going to burn out inside a couple of months" got the message across (it turns out an honest assessment was appreciated and that not losing some of us through walk out or burn out was important enough to warrant rearranging some plans and expectations). Of course I'm lucky: the Powers That Be here are sensible and I've been here over a decade & proven myself a good few times over so my word carries some weight - a relative new-starter under a less receptive hierarchy would not fair so well.

If there really are no options for plan A for whatever reason, no end of time/overtime will fix the problem and there is no way the management can be made to appreciate the scale of the problem, that leaves plan B: get ready to jump ship.

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

#53
post #35

Earlier quoted context omitted.

> nobody will care about it. I disagree. If the company in question is large enough having documentation that you were actively trying to avoid disaster, were competent enough to raise concerns and suggest solutions, etc. can be helpful when people come trying to assign blame after the fact. If the company as a whole will survive the impending train wreck then having evidence of competence, however meager, is certain…

I'd like to hear from anyone who kept a paper trail which was, in fact, used as so intended. I'd also like a show of hands where it was kept to no avail. I've been on a lot of projects. Where a paper trail seemed warranted, those who came to assign blame had already chosen their targets without consulting with them first.

Having conversations documented in emails really saved my keister on multiple occasions.

Admittedly on one of those occasions, the effect wasn't immediate -- the manager in question basically rage-quit the conversation. But she put a lot more thought into getting confrontational in future disputes.

(Although I have to clarify that this was a fairly dysfunctional environment (and had been for a while), due to which I figured getting things in writing was the safest choice. In future more cohesive settings, I didn't bother with this as much, as the teams tended to have more integrity.)

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

#54
post #43

Earlier quoted context omitted.

make sure there is a paper trail Unless the situation results in criminal prosecution, when the time comes to use that paper trail nobody will care about it.

> Unless the situation results in criminal prosecution, when the time comes to use that paper trail nobody will care about it. That's true. Pointing to your paper trail when the shit hits the fan might actually label you as being uncooperative during a critical project; most likely, the manager doing any personnel "cleanup" will be the same that was responsible during the project (line manager vs. project manager). B…

If the person doing the cleanup is the same as the person who was directly in charge of running the project, then you have different problems.

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

#55
post #22

I was fortunate enough to experience this exact kind of death march over a period of around 18 months. Unless you have the authority to guide the project back on track, there are only so many options available to you: 1: Document your concerns and any problems you've identified. Be objective wherever possible (i.e don't bitch about your co-workers even if the reason the project is failing is because they're fucking i…

You beat me to it ;) This is my list: I'm in a similar situation and the pressure is mostly caused by a lack of management. I've been appointed project leader halfway the project and I did my homework by reading the Software Project Survival Guide. We are also supposed to work in a scrum system, but on going business causes scrum to be just an extensive time management tool. We're nearing the deadline and a few thing…

> 5) Make it very clear to the business owner, all changes cause a delay. And whatever you do, do not let the business owner decide how long a change will take.

This, unfortunately, seems to be a rather large factor when it comes to figuring out why a project failed. Unrealistic expectations are absolute killers.

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

#56

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.

Yes there is: if you can't get it done in 1.5 months having already spent 1.5 months working on it, you're not going to get >3 months of start-over work done in a couple weeks. Never mind the boss freaking out at the thought of you abandoning 1.5 months of work, knowing the remaining time isn't enough left to complete it (yes, he knows) much less start over from scratch using completely different tools.

If you had that kind of alleged ambition and talent you wouldn't be in this mess to start with.

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

#57

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" These are famous last words. So often I see people go off on the weekend to code a replacement for a legacy system, come back with a good demo, but not realize that they did 2.5% of the work that was responsible for 25% of t…

These are famous last words. So often I see people go off on the weekend to code a replacement for a legacy system, come back with a good demo, but not realize that they did 2.5% of the work that was responsible for 25% of the functionality.

Well, I've done it. I've developed complete solutions to business problems that the company was trying to solve. I did it without waiting for permission or for my design to be approved, and I did it only after I fully researched and understood the problem space and the future goals of the company. Then I made sure the design took into account all of those future contingencies without being rigorously bound by them, i.e. flexible and not a hindrance when the business goals change in the future -- which they always do. At the most recent company I worked for (a massive corporation) the system is expected to be in production for the next 3 years at a minimum. I did the first 90% of the work in two months, then the other 90% of the work in another month or so. The fourth month was spent primarily on training, documentation, and meetings.

Competence exists. The managers are simply given the authority to squander it or to perceive it as a threat and fire them. I was lucky enough to have a manager who was receptive to me overstepping my bounds as a contractor. I made decisions (such as making Redis a core requirement of my design) before asking permission or waiting for approval. I presented a demo of an early version of it to my manager at the end of my first week, and thankfully he was both surprised and happy about it. (40x improvements to the existing infrastructure tend to elicit that reaction.) But most large corporations, and even many small ones, aren't like that at all. You'd be fired for overstepping your boundaries, whether or not you were capable of making a difference to the bottom line. It's up to the manager, and that is a wholly backwards way of running a modern software corporation.

For software companies, there has got to be a better way than the existing approach. At the very least, the concept of a "manager" should be divided into two people: a manager and a producer. The producer's role is to drive their project's goals. The manager's role is to ensure that the employees are happy and to deal with roadblocks (such as if an employee needs to purchase a third-party tool). The manager has the authority to fire people; the producer does not. The manager's goal is to look after the team, not the project. And neither of them can tell an employee what to do. The employees are given tasks to complete, not steps to complete, and then trusted to complete that task. The employee is trusted not to accept tasks which he/she feels are too ambitious for the producer's timeline. So the producer can only barter with the employees, not demand from them.

I know of a massive videogame company (not Valve) which operates that way, and it's the reason they're currently the industry leader in their genre even though they've grown exponentially as a company over the past four years, both in employee count and customer count. So it absolutely worked for them, and I'm willing to bet that it would work in a lot of software companies. I want to prove that it works.

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

#58
post #2

Be professional. State your concerns to your manager, and probably a level up as well. Make it clear that you don't have any confidence in the project as planned and you think that the cause is a hopeless one. Then (assuming you want to keep working there, as the author seems to) make it clear that if they still want to go ahead then you are fully committed to helping them to the best of your abilities. But a project…

The downside to such a strategy might be that the reason for the impending failure is the manager, and/or the level up as well. Most organizations operate (and should operate) according to what the top-level decides should happen. If the top-level defaults on that responsibility, then chaos will ensue. In those cases a value judgment of the process is a value judgment of the organization, and most astute managers rea…

Well yeah, the reason I mentioned the level up is that sometimes your manager is the problem, and sometimes your manager isn't telling the business about the problem.

If both of those are part of the problem (don't worry! All is well!), rather than realistic (we know there are serious problems here but we think there's a chance/we'd like to try anyway), then it's time to think about the systemic problems and consider finding yourself a new job (IMHO).

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

#59
They are paying you to do a full-time job, so do a full-time job. No less, no more, and record your time carefully. Remind people, if necessary, that retaliatory termination of someone who is fulfilling their employment contract is illegal. Do what you can to keep that kind of talk from going up the chain any further than necessary - ideally only to your immediate and somewhat sympathetic superior.

In "extra" time, start Plan B. Find the parts of the code that might be usable for another project (possibly this one's successor). Make sure their interfaces and dependencies make that easier - which is good software engineering anyway, and can be justified as such if you don't want to explain the real reason. That way you and your employer will both be able to extract maximum benefit from the project when it does fail, helping you both to survive the aftermath.

You will be criticized for not committing enough to the project. You might even be blamed for its failure. It's very unlikely that you'll ever get any credit for helping the phoenix rise from the ashes. That sucks, but it's a bad situation all around and you have a duty to try if that's what you think is best for the company in the long term.

(P.S. To be perfectly honest, I'd already be out of there if I felt that way about a project, but that's the sort of advice the OP was explicitly not seeking.)

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

#60
Been in one too many of these, it often makes you question wether it's your fault, and that is very devastating. Though unknown to most people as soon a project is treated as a project and not your own product, its faith is decided by someone else.

You have no input on the stories, estimation and design decision. It's faith is no longer in your hands. They pull the wires, they decide. Hopefully their decision will be good and you'll do fine.

Post reply on HN