What cause failure in a project from my point of view are a couple of small basic Issues.

  1. Sufficient Information.
  2. Leadership
  3. Talent

I know it seems like I’m over simplifying things, but I’m about the general case why projects tend to fail. Not because the company got sold, or one day you your systems collapse the day before ship or anything short of divine intervention.

1. Sufficient Information:

Providing proper documentation about the project is essential to the success, a lot of people are of the notion that the developer doesn’t need to everything about a project. While they don’t need to know everything it would be nice to know most of it. This means that the Analyst or PM must provide all work flows of how a user’s will be accessing and using the application. so that there are know gotcha’s in the end. I do not place most the blame on the Analyst or PM because the user might not at the time tell them everything. But that is there job… to quote Billy Hollis ” this is where prototyping with a rapid feedback loops is essential.”

2. Leadership:

There needs a to be a person providing the direction technical or non-technical direction, but someone with a vision of some sort. This is so that the project feels more than just that, making the people involved as part of something greater; giving them a sense of ownership in what there doing.

3. Talent:

There needs to be a person that pushes the envelope and set the bar. There something to be said about people who truly love what there doing, if you project is full of people that just want to be there 8 to 5 and just get there task done…well you gonna put out something that reflect 8 to 5 and just works, and feels like any other application.

.

In my previous post i was talking about retro fitting extreme programming into agile programming… well guess what its been already defined… its called… SCRUM

So what is Scrum development?
It’s a team based, project segmentation development pattern. So whats so new about it nothing really its just a mash up of old and new practices. The project gets split into small segments( or feature for you agile guys) and each team (like in extreme programming) works on a segment.

Since this is basically building developing a project out of small components. The smaller the component the faster you can build the system.

the reason i like this idea is because its an extensible development process.

References:

  1. Control Chaos: http://www.controlchaos.com/about/]
  2. Wikipedia: http://en.wikipedia.org/wiki/Scrum_%28development%29


What do i mean by Retro Fitting Extreme Programming Into Agile development?!?!???

Agile Development also known as Feature Driven Development, this is where you build a list of features and the order that they are to be implemented. This responsibility can be placed on the Software Architect or Senior developer.

Extreme Programming also known as Test Driven Development is where you build your test before you code. This responsibility usually is place and should be placed on the Developer and programmers at a slightly Lower level.

I don’t see a reason why these two styles (or methodology) should conflict. You can simply write a set of tests for a feature in your feature list. This should give FDD a bigger success rate.