Live data from Hacker News

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

programmers.stackexchange.com

11–20 of 163 posts

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

#11
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…

+1. Communication and professionalism are your best bet, here. It's amazing how often engineers think the managers know all these things, as if they've mentioned it a million times, but no one is listening.

Sometimes the problem is that the issues are communicated, but not the severity. So, you might raise that the database is too complex with 100+ tables, but if the manager does not have an intuitive sense for the consequences of that problem, it might not register as a project-destroying issue. That becomes the disconnect later, and when things go pear-shaped, these disconnects become issues of contention.

The worst thing you can do is to raise these issues quietly and just keep trucking, as if you've done your job, and that's that. [wiping hands gesture] If management doesn't realize that the project is headed for disaster, that's on you (and the others on the team).

But, if you're able to convey the severity of these issues clearly and professionally, the conversation might turn to what can get done in the near term that would be valuable. Or, to the point of other commenters, there might be other factors at play, and the manager might want you to keep trucking anyway. In this case, provided you have been clear about the risks and threats, you really have done your job.

As a parting thought, you could also raise an issue around "what type of company" you want to work for. Perhaps if they need to rock out a rough proof of concept with no automated testing (or any testing!), that's one thing, but I wouldn't want to work at a company that doesn't take testing seriously. So perhaps if this is a manic sprint to prove something, we can all get on board with cowboy coding, but once the dust settles, it will take x amount of time to shore up the work with xyz types of tests. If they aren't on board with taking their medicine and putting the right tests in place, then that might be reason to depart even if the proof of concept succeeds.

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

#12
Honest, "be slightly evil" answer: say absolutely nothing. Just work. Get done what is asked of you. When you have free time (which you often will, due to the chaos as things start to shake) use it to build skills for your next gig.

People will probably lose jobs. Sometimes that will happen based on seniority and sometimes it's just random. Sometimes, that will happens to the PITAs who spoke up and happened to be right. You don't want to be a PITA. PITAs become blame dumpsters even when they were right, because enough people hate them and no one will defend them. You're not the only one who knows that the project is fucked. Just keep your mouth shut about the fact.

There's something I call the Welch Effect, which is that the people most likely to be laid off are junior/least-established members of macroscopically underperforming teams (who had nothing to do with its underperformance, because they had no power). Managers are sometimes sympathetic to the Welch Effect and will set a "no infanticide" rule, but not if you're a PITA.

Keep your head down, do good work when work is asked of you, and start planning for your next move. Start networking and searching and building skills now, not when you need to.

If you lose your job, don't take it personally. It's not your fault, and if you tell the story in the right way, no one will hold it against you. These things happen to good developers, especially early in the careers, all the time. Most projects fail. It's not like school where something has to be going wrong to fail a course, because only 5-10% get F's. It's probably 50-75% of software projects that fail.

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

#13
If you are the only one that is seeing the upcoming failure, this can mean 2 things:

1) You are wrong and paranoid. The project will be delivered with some hurdles but will not be catastrophic at all. Try to make sure that your concerns are clearly defined. Contrary to most people here advise: don't try to be the nice guy by being subtle. Be polite but be also confronting.

2) You are right and you will not be able to change the situation. In this case, I would choose the easy way and leave for another job. Watch out for the stockholm syndrome: there are other companies where you can enjoy your work. Don't feel to much sympathy for the current situation or be afraid of uncertainties that come with leaving.

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

#14
Sometimes it's hard communicating the situation to a manager as opening that pandoras box can end up meaning you spend more time giving status than doing the actual work.

But not communicating is not going to help anyone, unless you feel confident that you can get the project back into shape.

So the deadline is missed. It happens. The stakeholders need to be prepared and they need to have runway to take action. Finding out in the final week then being asked to train up 10 new contractors is not going to work. Managers know that it doesn't work, but more often than not they feel that is the easiest way to help.

You shouldn't give up your personal time unless you feel there is some reward, otherwise you will just feel bitter and leave the company in the next crisis. I gave up a lot of personal time to save a project. I did it for my own credibility and passion, but money, time off in lieu and promotion are the rewards that keep employees. I got one week off (after giving 5 weeks of personal time), and £250 of vouchers (but only if during this crisis, I worked a Saturday on someone elses project). I left that job within 12 months.

If anything else, you'll learn the experience of what works and does during crunch time.

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

#15
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 to accept such insanity without doing anything to change it.

Thought experiment: 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. The project has been in development for 1.5 months and has 1.5 months to go before the deadline. Their current solution apparently involves relying on a relational database as some kind of programming language or configuration system (100+ tables). There's a good chance that a developer with ambition and talent could singlehandedly deliver a superior solution within a short timeframe.

So what stops the developer from executing? Primarily his own (fully justified) fear of negative consequences. But the only reason his fears are justified are because of structural problems in how companies operate today: managers are expected to drive the direction of the project and are given the authority to do so, and the authority to fire anyone who won't go along with the manager's vision. That makes it impossible for a developer to make sweeping changes and be perceived as doing anything but challenging the manager's authority. But it's not about authority. It's about the customer. It's about making good products. Yet the environment is set up so that the developer concludes that it's entirely justified to be afraid; to sit quietly and do nothing. And it's precisely this collective fear that drives this sort of degeneration within companies.

There has to be something better. I want to try to build something better. Some new way of thinking about how to build a modern software business. Profit sharing, maybe. It might be possible to set up a company such that it could pay its employees a percentage of the profits. The first employee would get 15%. The next employee would get 7.5%, and the next 3.75%, and so on. Then as the company makes profit, that profit is continually paid out proportionally to each employee.

That system has all sorts of flaws, though. One example: an employee should only be getting a percentage of profits while they're at the company. They should be getting their full percentage on day one, and should give up their percentage on the day they leave the company. But I can't think of any mechanism which would actually let a corporation pay out like that. If you tried to pay out profit via dividends, then you'd have to allocate the percentages using stock, and employees don't typically get stock up front on day one -- it takes several years to vest -- and they don't lose it when they leave the company. So profit sharing via dividends wouldn't work.

The idea is to provide an incentive to employees for projects to be useful to customers. There's currently no incentive. Employees are generally expected to play the politics/career game in order to secure a safe future for themselves. I guarantee you that if the employees at OP's company had been given some percentage of future profits, then they would currently be revolting and calling out that manager's behavior and incompetence.

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

#16
In fact, we actually just inherited this project (along with the mess) around 1-2 month ago from another dev team under the same manager, who have worked on it for a few month.

That seems like a serious red flag to me. That manager's career is probably headed nowhere fast...

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

#17
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 realize it sometimes before the "innocent" (i.e., socially naive on organizational dynamics) system builder guy realizes it.

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

#18
I would recommend Yourdon's book, "Death March" as mentioned in one of the answers. Although it feels a little dated it is a well reasoned analysis that at worst can give you perspective on a bad situation. When I was in a true Death March project I was surprised that there are so few books on the same issue.

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

#19
I was recently hired to complete a specific task on a project that sounds similar to this one. On the 2nd day of my involvement and having read through the code a bit, I realized that the task I was hired to complete was the last thing they should be worried about given some of the existential issues in the code and architecture given the deadline.

I voiced some of my concerns to the manager of the project. He got upset and defensive. I quit on the spot.

I had never done anything like that before but I'm glad I did. It could have been rescued but that would have taken a huge personal effort on my part that I didn't foresee being appreciated.

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

#20
It sounds like this is a 'Kobiashi Maru' Test, which is a no win situation that Starfleet gives to it's cadets.

After this project you will have 5 developers, and several managers that will go on to other projects. I'd say half of those people know what you know, and no one knows how to fix it. If you just work hard on the project one of those developers or managers in years to come might come looking for you to join them on an endeavor. Other than school, I think this is how people develop trust in each other.

If you choose to stay or go, either way you'll build character. It's up to you to decide if you are the sort that digs in and runs to the fire, or the sort that flees to live another day. NOTE: not everyone succeeds that runs towards the fire, but some do, and some consider them heros. Other's consider them fools.

Post reply on HN