Live data from Hacker News

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

programmers.stackexchange.com

31–40 of 163 posts

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

#31
Plan for the failure. What will things be like when the project fails? How can you best position yourself in the wake of the failure?

Take the steps required to see to your own future.

Do not get caught up in owing anything to your manager or your employer. Your manager transferred a failing project to your group. He is more responsible for you having this failure hang over your head than you are.

To your employer you are simply a resource, not a person. Do not give them the loyalty you would give a deserving person. It will not be reciprocated. In a world where all employees are basically extended freelancers, you need to put yourself first.

Failing to plan is planning to fail.

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

#32
I found it interesting that his list of reasons why the project might fail sounds like pretty much every project I ever saw in the 1990s and early 2000s. Although some of them are definitely bad signs, some are just par for the course in organisations that arent big on software development. I wouldn't say its a guaranteed failure. He might just be unfamiliar with what real-world projects are like in an enterprisey environment.

- deadline approaching many of the must-have features are not finished.

- Application is unstable and very difficult to use.

- System is very convoluted, code very hard to understand, very difficult to change.

- complex relational database (100+ tables).

- Unclear leadership, the manager responds to every new information with significant change in plans.

- Almost no automated tests or unit test.

- Heavily depends on other systems, but no integration tests yet.

Perhaps upper management will fudge and extend the deadline (rather than be embarrassed) and the project will limp towards some sort of closure that everyone can just about accept.

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

#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 to understand, very difficult to change.

This could be "I don't understand the code, or know how to change it".

> Datamodel is too driven by a complex relational database (100+ tables).

OK, this one I can't defend :-P

> Unclear leadership, the manager responds to every new information with significant change in plans.

Well, if the plans are adding new features, these should go to the "nice to have" list. If it's "we need to rewrite this" then that's not good.

> Almost no automated tests or unit test.

No autowhatnow? :-D I don't think a project is necessarily "headed for failure" just because there are no automated/unit tests.

> Heavily depends on other systems, but no integration tests yet.

Yet! That's good, there's still time to test this before shipping.

> 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.

Aha! The root of the problem "I don't feel comfortable with other people's code"?

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

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

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.

> 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 certainly useful in many situations short of criminal prosecution.

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

#36
post #8

Earlier quoted context omitted.

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

Seconded. I don't think the accepted answer is strong enough nor a very sound advise.

It's deliberately dramatized but I don't really see it as wrong. Here's how I would (less dramatically--and less interestingly)phrase the choices.

a.) If you're sure there's a path to success and you're invested in getting there, do whatever you can to achieve that goal--understanding that one of the possible outcomes is to be told to pack your things and leave. Now. The likelihood of this outcome obviously depends on the exact situation.

b.) Accept that things are not going to end well. Do your job, keep your head down, and start seeking alternatives ex post haste. In some situations, seeking alternatives ex post haste may, in fact, involve fleeing (especially in a short time horizon such as this one) but I've certainly been in situations where the writing was more or less on the wall but more in the vein of a long ponderous collapse.

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

#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 exactly nothing and should be treated as an act of sabotage, because it is exactly that.

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

#39
To come at this from a different angle, throw in some random thoughts, play devils advocate and all that....

What is the definition of "fail"? Maybe, given that the project is a hand me down, just barely working is good enough to the client. Maybe there is accepted scope for an over run.

How do you know it will fail? Given my questioning of what a fail is, clearly knowing it will fail is up for grabs.

Will the OP's negativity cause it to fail? This bothers me. An employee who is dooming a project is in danger of dragging the whole thing down.

Perhaps the OP is prejudging things too much?

If the OP "knows" it will fail, the likely hood is that so does every one else.

What seems odd to me is the OP's seemingly isolated position, where it looks like he doesn't get to talk to his co-workers or management. If he knows it will fail, then surely so do his co-workers. Management must also know its not progressing. But, he seems unable to discuss this with any of them, even casually. If this is the case, then my concern would be for the future of the whole company.

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

#40

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. "

When I was younger, I would've actually done this. As I got older i learned some things, and one of those things is that 20% of the work will take about 80% of the time. I'm sure he could take a week or two, develop a kick ass demo that demonstrates a working concept... but it won't make the project finish sooner. Rewriting existing code that's hard to work with is essentially defaulting on technical debt. If he skips essential things like writing a proper design doc (documents are a really good way i've learned to communicate with your team, don't skip them!) if he doesn't have good code coverage, then he's simply taking out a new loan.

Post reply on HN