views:

299

answers:

12

We recently passed on a project that had a number of red flags attached to it - the lack of a clear plan, no success metrics, an obscure legacy system to integrate with, the absence of a resident expert for it, not enough budget, and a very tight deadline.

That got me thinking, and I am going to turn the question around. In your experience, was there one factor that successful projects had in common? Or up to three, if you can't identify one? What is the most important success factor that must be in place, or you won't touch a project?

+7  A: 

In order:

  1. Communication
  2. Communication
  3. Communication
Joel Coehoorn
I'd put them in a different order. :-)
Paul Tomblin
Are you sure about #3?
S.Lott
I like it, but ... how you identify projects that lack communication beforehand? When communication breaks down, it does that because of other factors, usually.
cdonner
@cdonner: you totally know communications are amiss from the very beginning. You can see the confusion, contradictions, gaps, overlaps a mile away.
S.Lott
Communication is nice and all, but too much of a good thing is often really destructive. I was working on a software project and a committee broke out once; doom followed quickly :-)
Paul W Homer
Committee is a common leading indicator of bad communication. Rather than talk, they assign people to talk.
S.Lott
+2  A: 

In order:

  1. Coffee...
  2. Coffee...
  3. Coffee...
+1 because I'm so wired from all the caffeine that I hit the button accidentally.
Steve B.
Probably should add tea, mountain dew, or simply re-identify as caffeine...
RSolberg
A: 

Clear focus - which translates to discipline at all stages, being strict about bug bars and not getting attached to pet features.

Mohit Chakraborty
A: 
  1. Know what you're going to develop.
  2. Know the technology you're going to use.
  3. Know that its feasible with the time and resource you've got.
Jon Mitchell
A: 

The skill of the most senior person on the team.

Steve B.
+2  A: 

Realistic Expectations for time and effort required to learn the application domain and/or technology and get something to work.

Learning takes time. Software is knowledge capture, which means it is a lot of learning. A realistic expectation includes the time as well as the results of learning. You may learn that the users or the component vendor lied.

Applications must involve unknowns. If everything was known, it would be an open source product and you'd just download it. Realistic expectations include explicitly acknowledging that one or more things are truly unknown at the outset and will be learned, and the learning will change the plans.

S.Lott
+2  A: 

In Order...

  1. Solid, Stable, and COMPLETE Requirements
  2. Highly Skilled Project Team
  3. Well Versed Product Owners
  4. Limited Multi-Tasking
  5. Consistent & Timely Communication
RSolberg
A: 

For software S to be predicted successful, there must exist some person P such that for any concept C, P is able to say "Yes, C is a part of S", "No, C is not a part of S", or "I will tell you whether C is a part of S at T time".

chaos
And now derive the Godel Incompleteness Theorem.
Paul Tomblin
Leadership?! :-)
Paul W Homer
Our boy Brooks liked to call it conceptual integrity.
chaos
Sure, but he also liked Aristotle's definition of the word accidental... :-)
Paul W Homer
A: 
  1. Don't live with broken windows
  2. Communication
  3. Debugging skills
neoneye
A: 

Top three:

  1. Lots of time
  2. A strong leader (and a domain expert)
  3. A real problem to solve

I've done the startup thing where we had no idea what we were building until it was built. It's fun, and possible, but only if you've got time.

Nothing screws a project like rushing around, cutting corners. You build up massive technical debt, and it never goes away.

Lack of direction, or ping-ponging are probably the next worse problems. If the ship keeps changing course it makes it very hard to get anywhere (and then time runs out).

And last, but not least, how many huge systems have been built that are really nice and all, but don't really solve any problems? If users don't want to use it, it just ain't useful.

Paul.

Paul W Homer
A: 

Modularization is always a key factor in regards to success. If you can modularize your applications, they become easier to maintain, change and develop.

We've used this technique for millenniums in other industries, starting back with (probably) the building of the pyramids. But somehow Software has not taken this concept with the amount of seriousness it deserves... :(

(or haven't been able to create an easy to understand process or methodology)

Thomas Hansen
A: 
  1. Communication with the business owners that want the software.
  2. A methodology with structure to ensure that things do get done and expectations can be managed.
  3. Sufficient resources to meet the project's objectives.

Without the first one, there is the problem that was is built is nearly useless if the requirements aren't well-known which is often the case from my view. The others are what has to go along with getting the requirements to finish the job.

JB King