66

Having worked on a failed project is one of the few things that most programmers have in common, regardless of language used, industry or experience.

These projects can be great learning experiences, soul-crushing disasters (or both!), and can occur for a multitude of reasons:

  • upper management change of heart
  • under-skilled / under-resourced team
  • emergence of superior competitor during dev cycle
  • over/under management

Once you've worked on a couple of such projects, is it possible to recognise at an early stage exactly when a project is doomed to fail?

For me, a big sign is having a hard & fast external deadline combined with feature creep. I've seen projects which were well planned out and proceeding right on schedule go horribly off the rails once the late feature requests started to roll in and get added to the final "deliverable". The proposers of these requests earned the nickname of Columbo, due to rarely leaving the room without asking for "just one more thing".

What are the warning signs you look out for that set off the alarm bells of impending doom in your head?

ConroyP
  • 795
  • 8
  • 10
  • Robert Glass wrote "Universal Elixir and Other Computing Projects Which Failed". Published in 1977, the book was a collection of columns he'd written earlier, each one looking at a project that failed, looking for the reasons behind the failure. The book makes an EXCELLENT list of warning signs. – John R. Strohm Jan 20 '13 at 11:44
  • 1
    Two articles - [Project pathology](http://www.thomsettinternational.com/main/articles/path/pathology.htm) and (the over hyped) [Chaos Report](http://www.csus.edu/indiv/v/velianitis/161/ChaosReport.pdf). Give [Death March](http://www.amazon.com/Death-March-2nd-Edward-Yourdon/dp/013143635X) a good read if you are after a book. –  Jan 21 '13 at 03:12

38 Answers38

69

Heroic Coding

Coding late into the night, working long hours, and clocking lots of overtime are a sure sign that something went wrong. Further, my experience is that if you see someone working late at any point in the project, it only ever gets worse. He might be doing it just to get his one feature back on schedule, and he might succeed; however, cowboy coding like that is almost always the result of a planning failure that will inevitably cause more of it soon. So, the earlier in the project you see it, the worse it will eventually become.

Fishtoaster
  • 25,909
  • 15
  • 111
  • 154
  • 13
    The only excuse for pulling an all-nighter is to address a SPECIFIC issue for a SPECIFIC inflexible deadline. Maybe it's just me, but code I write at three in the morning when I'm grouchy and sleep-deprived tends to look bloody hideous viewed in the cruel light of day. – BlairHippo Sep 09 '10 at 14:08
  • 5
    Well, the other excuse it being a student. Poor project planning is par for the course then. :) – Fishtoaster Sep 09 '10 at 14:59
  • 20
    Oh, Christ. College. I remember sitting in front of my terminal as the sun rose, shoving `*`'s and `&`'s more or less at random in front of the variables in my C++ code in the hopes that the damn thing would start working. Not a part of college I miss. – BlairHippo Sep 09 '10 at 15:04
  • 2
    Earlier this year we had a project like that - one guy was regularly working until 2am and I was starting a 4am. We got the job done, though, despite the ridiculous time-scales imposed upon us (we'd been committed to being complete by a legislative deadline). We're still tidying up and refactoring now! – Chris Buckett Sep 21 '10 at 19:18
  • 2
    Good answer! I would say that heroic coding late into the night is not only a sure sign that something went wrong, but also a sure sign that a lot more things are going to go wrong in the very near future, when the bugs from the heroic code start bubbling to the surface. – Carson63000 Oct 07 '10 at 02:22
  • 2
    If its not late into the night... its being asked (expected) by management to work weekends. – quickly_now Feb 05 '11 at 10:36
  • 2
    @BlairHippo, so now you use a language with stronger static typing? –  Feb 05 '11 at 10:41
  • 2
    I do not concurr. I have saved projects by working overtime a lot, until late in the night, and even on weekends, and my "heroic code" is not worse than "unheroic" code (i.e. mostly bug free). – Falcon Jan 20 '13 at 11:53
  • 3
    I'm going to put my karma in danger here and point out that "heroic coding" is a late indicator. Projects get into trouble long before they get to the phase where "heroic coding" starts happening. There are usually lots of early trouble indicators, that pop up long before coding gets under way in earnest. They are, unfortunately, all too frequently ignored. Robert Glass has written extensively on this subject, in "The Universal Elixir", and in other books. Ignore him at your peril. – John R. Strohm Jan 20 '13 at 17:42
44

When the programmers start to win the argument "The code is horrible, we need to start over from scratch." on any mature application.

You may think you can build it better, or understand the problem more fully, but you really don't. Oh, and all those ugly patches? They are fixes to real-world issues that you are going to likely re-introduce in the rewrite.

Plus, one day you are going to have to explain to the project manager why after 6 months of work you are almost up to 85% of the capability and 150% of the bugs the application had when you started out.

JohnFx
  • 19,052
  • 8
  • 65
  • 112
  • 9
    Isn't this just a summary of the infamous Netscape rewrite? – Jasarien Dec 13 '10 at 11:32
  • 9
    http://www.joelonsoftware.com/articles/fog0000000069.html – Jeremy Dec 15 '10 at 03:39
  • 5
    I disagree. There are certain dangers to rewrites (e.g. the second system syndrome), but if you know about these, a rewrite isn't more dangerous than any other green-field project. – nikie Feb 05 '11 at 19:24
  • 4
    Sometimes you need to amputate and replace with something that will make the app stronger, better, smarter. But the key word there is amputate, not kill and resurrect. – Erik Reppen Jan 20 '13 at 16:40
  • @JohnFx: It can get even worse than what you describe. Year 1: "The code is horrible: let's make a framework to isolate the basic functionality on which our entire line of products will be based.". Year 2: "The code of the framework is horrible, let us rewrite the framework from scratch and get it right this time." Year 3: "How can framework version 2 be much slower than framework version 1 if we have redesigned it?". Year 4: Product, framework 1 and 2 are cancelled, team is assigned to customization of third-party product, no internal product development any more. – Giorgio Jan 20 '13 at 20:36
  • 3
    This may be largely true, but not strictly true. I underwent such a project about 9 months ago, and it was a success. Spent over half the time on it devising tests to prove it was correct and that old/new bugs weren't introduced to the new version, and found a bunch of new bugs in the existing one in the meantime. (Though, I suppose, this makes this answer true as a _warning sign_) – Izkata Jan 21 '13 at 04:22
40

To me the single biggest problem, and one you can spot immediately, is when business considers written requirements as a waste of time.

So basically; No Written Requirements

It's the kiss of death.

John MacIntyre
  • 5,748
  • 4
  • 33
  • 48
  • 3
    Or worse, written requirements that no one reads. In fact, I've been on projects where extensive requirements were written and never shown to the programmers. – JohnFx Sep 08 '10 at 22:23
  • Written requirements? Yes, I must say that all the projects with these that I've been on are always 100% on time and to budget....o_O I think what you mean is 'lack of *clear* requirements' and lack of 'definition of done' i.e. when requirement has been fulfilled. – adolf garlic Sep 09 '10 at 12:51
  • 1
    @Adolf Garlic - Written requirements won't ensure your on time or on budget, but you'll never meet expectations if expectations are not communicated, do not have all the gray areas nailed down, and are constantly changing (your mental ideas will change). – John MacIntyre Sep 09 '10 at 15:14
  • 5
    I once had a Business Analyst tell me requirements were not needed. Just what is the job of a business analyst again? Oh yeah to write requirements! We would get requirements like make this work like hkjk.com does. – HLGEM Sep 10 '10 at 14:54
  • 2
    If you're developing for a custom product for a single client, sure. But if you're writing the next version of Powerpoint or the next version of an in-house software system, I don't see the point. You will always learn more about the requirements during development (e.g. that some requirement isn't useful and another isn't feasible). I'd rather use that knowledge and change the requirements during development than releasing an inferior product. – nikie Feb 05 '11 at 19:17
  • 1
    @nikie - I'm not saying the requirements should be static, and never change. I'm saying you should write it down to prevent mis-communication and prevent ideas from changing in peoples head over time. If the requirements should change, then change them, but keep the current requirements written down. Does that make sense? – John MacIntyre Feb 06 '11 at 16:02
  • @John MacIntyre: I see what you mean now. Misunderstandings and feature creep are a "kiss of death" to a project. But I'm not sure if written requirements are the only solution to that problem. I've worked on projects where developers and users only had vague ideas of what was needed. So we built prototypes, discussed them with the users, watched the users use them, found out what was useful and what wasn't, and incrementally refined the product. We never actually wrote down requirements in the process, and I don't see what would have been the benefit. So that works too, for some projects. – nikie Feb 06 '11 at 16:19
  • 1
    Requirements are just a formal way of winning the argument with the user when you deliver exactly what they asked for, but not what they needed. A situation where everyone loses. – JohnFx Jan 20 '13 at 21:19
  • @JohnFx - I prefer the optimistic point of view where requirements clarify stakeholder needs before they invest their resources. ... so neither party wastes their time & money. But your comment suggests the client either didn't take the requirements seriously enough from the beginning or had a one way communication channel, in which case, yes, it can, _in_ _theory_, protect the dev from being the scapegoat in a doomed project. However _in_ _reality_, there's not much of an 'argument' to win, since we'll probably be blamed when we aren't in the room and never asked for input. – John MacIntyre Jan 21 '13 at 19:26
40

A new tool as a problem solver.

When people start planning to use unfamiliar tools, I don't mind, but I keep my eye on it. When they start planning all the advertised benefits of those tools into the schedule, I get worried. Fun examples:

  • We can shave a month of the schedule because we're going to try using an object oriented language (even though all we have are c developers).
  • We'll try out this new scrum thing- that'll fix all our process problems!
  • I know it's halfway through the project, but what if we changed ORMs to something new?

New technologies and practices are great, but you almost never get all the benefits out of the gate.

Fishtoaster
  • 25,909
  • 15
  • 111
  • 154
  • 3
    I was once on a project that had two forks due to two interfaces -- desktop and handheld gadget. Time estimates were based around the notion that we could use these shiny new "EJB" things to reuse model-layer code between the two. Unfortunately, the database was such a horrific rat's nest that all data plucked out of it had to come from specific carefully-constructed SQL queries; fully populating the beans would have been too brutal a performance hit. When it turned out that (surprise!) the desktop version needed more data than the handheld version, the timeline went STRAIGHT to hell. – BlairHippo Sep 09 '10 at 14:03
  • 2
    "Wonderful! Now that we've salvaged the unit testing framework, we can start cutting time from that overlong QA phase!" – Arkaaito Oct 13 '10 at 08:40
  • ha ha ha. Excellent. +1 for the new tool will solve all my problems. – quickly_now Feb 05 '11 at 10:38
32

Management Disconnect

When those responsible for deadlines, features, staffing, etc get disconnected from the people responsible for delivering the project. This can lead to:

  • Feature creep when the customer is talking with someone who doesn't understand feature cost
  • Man-month syndrome, where new developers are thrown into a project late enough to be more of a hinderance than a help
  • Unrealistic deadlines, created by people who have to deal with the business consequences of deadline decisions but not the implementation consequences.
  • Products that don't solve the problem, when customer-dev communication is hindered by management in the middle.
  • Poor risk management, where potential problems aren't communicated early enough between devs and management.

So, when it looks like management is uninterested in the project, is communicating poorly, isn't listening to the customers, or isn't listening to the dev team, run for the hills.

Fishtoaster
  • 25,909
  • 15
  • 111
  • 154
  • +1 for your first item. I've been a customer in the scenario you mention and it's bad for everyone (no-one wants an unexpected bill, and no-one want s argument over paying it). – fearoffours Sep 09 '10 at 08:56
  • +1 amen. Been there, done that, don't care to be in that position again. – Evan Plaice Sep 11 '10 at 10:49
  • +1 for the fact I'm living with all of these bullets (except maybe the 4th). – AShelly Sep 14 '10 at 06:00
  • Great answer. Even if you didn't bother to elaborate, and you simply put 'Management Disconnect', your answer would have been worth a +10. – Jim G. Nov 10 '10 at 23:44
25

The first time someone, usually management says "we don't have time to .."

Usually preceding something that we don't have time not to, like documentation or code reviews (which statistically find and correct more bugs that anything else, including all forms of testing)

24
  1. When key developers leave and management doesn't care

  2. When key developers leave and none of the other developers care

Number one is usually indicative of managers who are severely out-of-touch with the team dynamics (who is the "10x super star", who are the decent programmers, and how they interact with each other etc).

Number two usually indicates severe lack-of-interest on the part of the remaining developers.

MrDatabase
  • 532
  • 5
  • 12
22

The first bad sign I can think of is when management is not willing to pass bad news up the chain or to the client in the hopes that it will go away - i.e. management by wishful thinking. I can't think of how many times, developers have proven they can't meet the deadline weeks or even months ahead of it and yet no one wants to tell the client. I've rarely seen a client who wouldn't push a deadline when there is genuine reason to when the need is explained well in advance; I've often seen a pissed off client when told the day of the deadline that it wasn't going to be met and that it wouldn't be met the next day either but two months down the road. At this point they, rightly I might add, question your processes - how come you didn't know this earlier. (True answer but the one we never give - we did know but we were afraid to tell you.)

Another sure sign that failure is coming up is to assign new developers to the hardest most complicated, most critical part of the process rather than the people who understand the current system already. Then don't watch them carefully to see if they really are getting work completed properly or have questions (BIG BIG RED FLAG if there are no questions). New employees need to be monitored until you know they really have the skills they claimed to have. I can still remember spending one painful summer redoing the work (already past deadline when I got it) of a new employee who got a critical piece of a project and told everyone everything was fine for months and then quit without notice one week from the deadline and nothing he did was usable.

Another sure sign of failure is when developers are working on pieces that depend on other things being done first and those things are not done or even started. If management can't get the work assigned in the right order, you are going down the tubes.

Of course feature creep without pushing the deadline back every time is one of the most common signs things are going to go bad. You add 20 hours of work to my plate, the deadline gets moved by 20 hours. If it doesn't then the project will fail, guaranteed.

Glorfindel
  • 3,137
  • 6
  • 25
  • 33
HLGEM
  • 28,709
  • 4
  • 67
  • 116
21

When management is too weak to say "No" to the business.

It leads to deadlines that will never be met, which leads to a lack of confidence in the IT department which leads to developers creating hacks (i.e. access db running on someone's machine...somewhere) which leads to a nightmare for IT when the 'critical system' has to be migrated which leads to...

Jim G.
  • 8,006
  • 3
  • 35
  • 66
adolf garlic
  • 1,061
  • 7
  • 10
  • Nothing makes scope creep worse than 'concession features' because the PM screwed up when he setup the milestone dates. – Evan Plaice Sep 11 '10 at 10:48
21

Let the customer, marketing or management pick a date and then try to work backwards to an imaginary schedule

18

One sure sign that I've seen in my career is when management starts talking about bringing in more bodies to make up time in the schedule. I've never actually seen more bodies on a project help.

Walter
  • 16,158
  • 8
  • 58
  • 95
  • 6
    I once had a manager who wanted to bring in a front end web coder to a project (the right decision) but because someone else on the project had gone long term sick wanted hit written into the new guy's contract that he wasn't allowed to get ill. – Jon Hopkins Dec 10 '10 at 14:36
  • 1
    @Jon - That is sad... funny, but very sad! – Walter Dec 10 '10 at 15:00
17

When non-technical managers start insisting on making technical decisions that they are in no way qualified to make. Big, big red-flag!

GrandmasterB
  • 37,990
  • 7
  • 78
  • 131
15

The most obvious sign is a high staff turnover. When everybody is looking for a new job, you probably should, too.

The other highly obvious sign is lack of progress. If a year has passed, and it doesn't seem like you are any closer to the target, you're doomed. This happens especially when requirements change faster than you can implement them.

user281377
  • 28,352
  • 5
  • 75
  • 130
  • 1
    The highest turnover rates I saw were on two projects. One was a stable project that kept going, and one was a known doomed project at a bank. I've never been as happy to be unemployed as those two. – David Thornley Dec 10 '10 at 19:12
12

Bored team members.

Ashalynd
  • 264
  • 2
  • 6
11

You're "90% done", the delivery is next week, but it's ok because all you have left is "testing".

Scott Whitlock
  • 21,874
  • 5
  • 60
  • 88
9

If the project plan calls for a single iteration of design, development, testing and deployment - the classic waterfall - for a project longer than 1 month, I'd run a mile.

You don't need to be fully agile, but having short development cycles allows you to demonstrate progress to everyone (customer, management and developers themselves) and cope with changed requirements when the inevitable happens.

ChrisF
  • 38,878
  • 11
  • 125
  • 168
9

Cowboy coders, big egos, and management acceptance thereof

9
  • Everyone is physically and mentally exhausted
  • Customers / users are clearly unhappy either about timescales or what they're seeing
  • The originally beautiful design now feels compromised
  • You're resigned to shipping with some relatively significant bugs that you'd really rather fix but aren't going to be able to
  • You're remaining pride is in the act of shipping rather than what you're shipping - closer to a survivor mentality than professional pride
  • The team is scared that there are certain things that don't work and are ignoring those sections and hoping for the best because they're scared of what might be in there
  • Everyone is convinced that they've gone above and beyond (and they're right)
  • People are showing signs of burnout (general pessimism, disinterest, anger)

(Cribbed from Jim McCarthy's Dynamics of Software Development).

Jon Hopkins
  • 22,734
  • 11
  • 90
  • 137
  • +1 for "You're remaining pride is in the act of shipping rather than what you're shipping". That is so so true (although I only saw that in my managers. We developers knew what went out the door... feet first) –  Dec 10 '10 at 18:54
8

Developers Running Wild on the Range

This has happened when you realise that other developers (or, unfortunately, you) have developed a component that varies significantly from the design, and that this isn't picked up up until well into system/UAT testing. I'm not talking bugs; I'm talking about significant system components are missing features or have unasked for functionality and are never going to pass UAT without significant rework. This issue indicates that:

  • Your quality system is broken; why didn't the developer concerned pick up on the issue in the design/implementation phase. Wasn't the code per reviewed/inspected? Why did the unit and integration tests not pick up on this? If you don't have some sort of consistent unit/integration testing in place, you're screwed.
  • Your project manager/technical lead aren't in control of their development team. If they can't get the developers to deliver what is required, they will never be able to deliver a complete solution.
Tangiest
  • 157
  • 1
  • 6
8

My first sign on one was when they asked how many hours of overtime we each would commit to for the next ten weeks and offered salaried workers a bonus for working said overtime based on the success of the project and meeting deadlines.

Other major signs I've seen: Requirements defintion goes over schedule and the end date is not moved. We were behind before we can even start. They took the time away from design, so we started with no database design and no site design but expected to deliver on time by, among other things, doing imports to tables not designed and created yet.

When items on the critical path are being done simultaneously instead of in order. (If I'm required to use tool X and programmer A is just starting to build it, it is going to delay my task.)

When managers are committing code on Thanksgiving.

When you start getting emails that have a datetime stamp of later than 11 pm and earlier than 6 am.

When every question about how to handle some complexity is met with the same answer, "Don't worry about that yet."

When they are still making requirements changes the day betore you go to QA or go live.

When you start having daily meetings that take several hours to discuss your lack of progress. Oh that would be because I'm in meetings all day. Daily 5 minute meeting fine, daily meeting that goes over an hour, not fine.

When the database team and the aplication team don't talk to each other.

When the client can't provide the promised information on time. Especially when those are data import files and you need that data in the database to check to see how the code is working.

When you consider installing a stop light outside some manager's office to let you know if it is safe to approach him that day.

HLGEM
  • 28,709
  • 4
  • 67
  • 116
7

When a key developer on a project hasn't checked in any code for weeks and a serious milestone is coming up.

It was a contracting job and the more senior developer and PM on the job decided they wanted to team up to try to get a bigger cut so the other developer held 3 weeks of critical code hostage. In the end, we fired the incompetent PM (who had been spending 6 months putting the project on a course for ruin) and talked things out with the developer.

Suffice to say, the rest of the project was a masochistic death march, the spec freezing was delayed, the customer was given a bunch of concession features to make up for the terrible scheduling the PM left the project, and the quality of the project suffered all around because of it.

The PM even had the nerve to fly down for CDR (Critical Design Review) only to ditch the meeting with the client and throw a hissy fit. When he demanded that his travel expenses be paid for under the project he was politely told to go fornicate with himself.

I can easily identify with at least 5 of the other answers found here that affected that project. In short, I learned a lot of hard lessons on my first serious coding project.

Evan Plaice
  • 5,725
  • 2
  • 24
  • 34
6

I think it's generally easy to spot a failing project when the deadline is approaching. Like you said, feature creep combined with a set-in-stone deadline is a sure way of killing a project.

The key however is to spot a failing project way in advance. I think the only real 'sign of doom' in this case would be a complete lack of the definition of 'when are we finished'. Unless we know this at the offset we're doomed for failure IMO.

Jaco Pretorius
  • 4,057
  • 2
  • 27
  • 38
5

I've been in three death marches in the last five years. Here are a few things that contributed to my gut feel of impending doom.

  • The company decides to have junior developers design and develop new features, and assigns more expensive senior developers to fix their bugs.
  • The company outsources critical software components to third-world companies that don't have the required domain expertise.
  • The crunch-time cycles come so close together that peoples' health is breaking down.
  • The pills your team lead takes to drug himself to sleep every night quit working.
  • The client sends change orders faster than you can analyze them.
  • You're supposed to deliver several years' work in a few weeks, but management refuses to do a feature freeze.
  • Your hardware suppliers are clearly having trouble delivering a workable product on schedule, and the decision-makers in your company won't consider any alternatives.
  • The prototype devices developers need so they have a ghost of a chance of meeting the probably-unrealistic schedule are taken away and given to top execs to make them feel good.
  • Week one: "Oh, crap, the code is buggy. Everybody quit doing new features and fix bugs." Week two: "Oh, crap, we're not going to meet the feature schedule. Everybody quit fixing bugs and write new features." Repeat indefinitely.
  • The development is done in one country, and QA is all done in another country half-way around the world, so a round-trip communication about a bug always requires 24 hours, and at least one of the people involved is discussing complicated technical problems in a language they're not proficient in.
Bob Murphy
  • 16,028
  • 3
  • 51
  • 77
4

For me, it is when those that are responsible for the feature set (aka managers, product owners, customers...) stop caring or seem to have a hopeless air about their answers. Questions about features are meet with apathy and discouragement. It is clear that they have lost investment or confidence in the project.

This happened for me when a project I was on had the "upper management change of heart" hit it. I was asking questions about how it should work and all of a sudden no one had a real opinion.

A little while latter the project was canceled and all the beautiful code I had written was scrapped.

Vaccano
  • 4,028
  • 5
  • 31
  • 37
4

a couple of points from a dead project i was part of:

  • The management doubles the team to finish faster.
  • the developers start "burying" bugs to meet deadlines, and although its obvious, its being ignored during code review.
OKAN
  • 725
  • 1
  • 5
  • 8
4

Paul Vick wrote an excellent post several years ago about black hole projects. I think all of the advice is relevant. (I've edited the items and summaries for length.)

  • Absurdly grandiose goals. Like "fundamentally reimagine the way that people work with computers."
  • Completely unrealistic deadlines. Usually this is because they believe that they can rewrite the original codebase in much, much less time than it originally took.
  • Unrealistic beliefs about compatibility. Like believing you can rewrite and preserve all of the little quirks without any extra effort.
  • Always "six months" from from major deadline which never seems to arrive. Or, if it does arrive, another milestone is added on to the end of the project to compensate.
  • Must consume huge amounts of resources. Usually by sucking the lifeblood out of one or more established products.
  • Involve using brand-new technology that has not yet been proven. As such, they get to flush out all the scalability problems with the new technology.
Chris Smith
  • 5,218
  • 2
  • 26
  • 29
3

Statistically a software project starting is a fair sign that it'll fail, as an overwhelming majority of them do...

Nitsan Wakart
  • 206
  • 2
  • 2
  • 1
    I think that's a start-up statistic, not necessarily a general software project statistic. – Erik Reppen Jan 20 '13 at 16:45
  • 2
    Here's one [reference](http://www.bcs.org/content/ConWebDoc/19584) randomly Googled which seems to suggest it's not limited to start-ups. Also see Mr. McConnel's excellent [Rapid Development](http://www.amazon.co.uk/Rapid-Development-Taming-Software-Schedules/dp/1556159005/ref=la_B000APETRK_1_2?ie=UTF8&qid=1358778299&sr=1-2) for further gems on the topic. – Nitsan Wakart Jan 21 '13 at 14:25
3

When the management pulls the project into different directions simultaneously and the carriage remains still.

I was once involved in a project managed by two guys. Either they didn't talk to each other or each one has some ego to resolve, but they were commandeering our work into opposite direction about each week or so. Didn't take long to realize there's never going to be any result. Gladly my participation only lasted a few months.

  • LOL, I worked a manpower study like that although even worse as the two leads were both trying to have an affair with the same woman. If Bill said yes, then Bob said no and vice versa, worst project I ever worked on. I begged to get reassigned. – HLGEM Apr 09 '12 at 17:13
3

I mentally translate "Everything is fine. We have nothing to worry about." to "We're all screwed" every time I hear it management say it. You usually hear managers throw it in incidentally in unrelated meetings ("Oh and by the way, everything is going fine. There's no reason to worry!"), but it's an even bigger red flag to have a meeting specifically called to say that.

I have yet to hear a manager say something along these lines and have it not turn out to be a lie.

Jason Baker
  • 9,625
  • 8
  • 44
  • 67
2

Having worked on a failed project is one of the few things that most programmers have in common, regardless of language used, industry or experience.

Good, that's a relief!

I think not having daily, helpful management oversight is key to spotting creep. I believe that if you have the right information, if you get your devs to input the right information, then you can spot slippage quite quickly. What you do with it after that - well that's more politics and less dev...

Tom Morgan
  • 1,689
  • 9
  • 15
2

See this succinct article: When IT Projects Go Right.

An absence of any of the elements stated in the article should set alarm bells ringing:

So make sure your project has all of the following, if not then you should be concerned:

(to quote the above article:)

  1. "The first is that they are based on a clear vision of what is to be achieved."

  2. "The second characteristic concerns the support and commitment of the different parties involved across the business, especially senior management."

  3. "Third is an understanding of the problems to be tackled."

  4. "The final common characteristic is that sufficient resources and skills have been made available."

Josh K
  • 23,019
  • 10
  • 65
  • 100
therobyouknow
  • 923
  • 7
  • 16
1

There are loads of symptoms (burn out, overtime, frustration, silence ...) but ultimately you know this is happening when release dates are starting to slip and you are no longer able to deliver the product as often as you are supposed to.

Martin Wickman
  • 13,305
  • 3
  • 31
  • 66
  • In agile practices we try to focus on incremental development rather than on deadlines. How does an agile organization define "as often as you are supposed to"? – dblock Dec 10 '10 at 13:23
  • @dblock: One cornerstone of agile (Scrum and XP) is that you are supposed to be able to release at the end of each iteration. There is your "definition" for agile projects. – Martin Wickman Dec 10 '10 at 14:08
  • I thought agile scheduling meant every x weeks, like every 1 or 2 weeks--the stuff that didn't get done in 2 weeks just remains in the backlog. Non-agile scheduling means "I think this feature will be perfectly done after 3400 man hours, so we ship on April 1" – MatthewMartin Dec 10 '10 at 14:11
1

The last professional project I worked on failed. One of the reasons I think it failed is a combination of all the other answers(especially no written spec). But I think the primary cause is a lack of decision making.

I was a primary developer and I'd ask my manager how he wanted some feature to work. His answer being "we need to collect more information from potential customers". So I worked on a different area of the project. Eventually it got to where I was rewriting components to be more clean because every other area of the project relied on unmade decisions. Near the end I began to make decisions myself. I was layed off due to the project being trashed about a month after I started making decisions.

I'll summarize a few things to watch out for:

  1. No written specification
  2. No decisions being made, or if they were being made they were only phrased like "we'll do it this way and reimplement it later the correct way"
  3. Several missed deadlines
  4. Inexperienced or understaffed team (This project was the first time I used .Net, and yet I was a primary developer!)
  5. Having to work in areas already complete because other areas need decisions made before work can begin. (of course, I'm talking refactoring for weeks just to stay busy)
  6. The idea that some new tool will shave off months of development time
Earlz
  • 22,658
  • 7
  • 46
  • 60
0

Well, the best way to answer this is with an example:

Bob starts a project by coming up with a genius idea. He begins by creating a plan for the software project that begins with specific steps that need to be completed. However, the steps do not lead to the end-result, but only go a portion of the way there.

In the end, the project fails because the plans were incomplete. It's not so much lack of planning as it is insufficient planning.

Nathan Osman
  • 710
  • 6
  • 16
0

A project, and future projects are doomed when the company decides to write an in-house "framework" because all the available frameworks don't fit their need perfectly.

Jeremy
  • 4,791
  • 1
  • 25
  • 40
0

Projects that are kind of ready for production, but features keep being added.

Long development time without clear commitment for release.

dukeofgaming
  • 13,943
  • 6
  • 50
  • 77
0

When management has decided, and does not provide room for adjustment, in all of the following:

  • Deadline
  • Scope
  • Allocated resources
Pete
  • 8,916
  • 3
  • 41
  • 53
-2

Among another signals, there is one important warning for me (maybe I'm wrong, and it is not common): double-digits in the minor version like "superproject version 3.16"

duros
  • 2,464
  • 1
  • 21
  • 25
  • That depends on the rest of the story. If you have to move code through a change control committee, going from 3.0 to 4.0 means "challenge me on this release, it's a big change!", but 3.15 to 3.16 means "don't bother me, this change is small enough for you to ignore" And sometimes it's nice to be ignored by a change control committee. – MatthewMartin Dec 10 '10 at 14:08
  • That depends on your versioning procedure. We've got a version 4.0.11 and it's not an issue, it's just a reflection of multiple minor changes and bug fixes over time. We wouldn't move to 4.1.x until there was a significant new feature in that code. – Jon Hopkins Dec 10 '10 at 14:10
  • @Jon but if you have 3.1, 3.1.1, 3.2, 3.3, ... 3.16 it probably means that you have spent more than a year and haven't produced nothing major – duros Dec 10 '10 at 14:13
  • On that branch for that product for that client that's possible and not an issue. We have a lot of clients and many don't want major release more than every 12 - 18 months. – Jon Hopkins Dec 10 '10 at 14:17