For efforts were I've seen Agile, a good close to true Agile Process in place, I've seen solid progress and generally good success.
Everything else has generally been a complete failure. Schedules aren't met, money objectives are screwed up, projections are lost, quality is crap, and the list goes on. When I say Agile I don't mean pair programming, or scrums, or reducing defects, or any of that. What I mean is a good solid mix of ALL those things. Without measurability, without continuous integration, without solid developers, without some pairing (i.e. at minimum regular communication), without daily stats/scrums/stand ups/or whatever one calls em, with defect reduction, there really is not progress.
For the life of me, I cannot figure out what the resistance is to Agile Methods. I understand there is this whole bandwagon issue, that people tend to shy away from bandwagons when the posers start pushing the ideas. But I must say, look past the hoopla and find out what Agile really is, read about what the processes were designed to combat. There is a reason they exist, there is a reason why these methods are better in almost every way than anything else that has come up in the industry.
If you can't join an Agile team, read about them. If you can't run an Agile team, read about running them. Eventually you'll find yourself in better shape to get into or run an Agile team. You'll also find yourself becoming more and more of an advocate for the specific processes, ideas, and the intentions behind what is outlined ever so simple and eloquently in the Agile Manifesto.
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
On that note, we developers have recently fallen down more over a few of the key elements here. Customer collaboration and responding to change have taken a back burner priority lately and that, simply put, sucks. We've slowed because of it, mind you, we had to back track on design and implementation for some major pieces of the application with refocused us on working software. The problem is, we inherently missed interactions and iterations because of it.
Basically we've slid right off of a solid path toward a good Agile effort. We're working to get it back in line and I need to tighten the belt and quit being a slop about it. The developers, including I are primarily responsible for making sure things go well and we need to get back to that. We need to make sure we get back on iterations, we need to make sure we have the collaborate and the good response to change.
Over the next few (that's 3) weeks we'll be getting things back on track. Just a minor derailment, no train wreck at all really. But here are some bullet point items that we're planning on doing to get moving faster once back on track.
- Brown Bag Lunch – Basically we're planning to cover topics to explain functional pieces of code that have been built but others might not be familiar with. i.e. If someone built some cool service factory tweaks, they would do a quick 10 minute description, we'd discuss, eat some good grub, and then commence to refactor were appropriate to properly utilize the service factory.
- Code Review – We started this somewhat, but we need to extend it to some honest to goodness pair programming code reviews. Doing on the spot fixs, refactors, etc to really get things understood and cleared up so no confusion occurs. This will also be a good time to get into practice for KISS, DRY, YAGNI, and other checks of that nature.
- Working to clean up and provide a well defined installation file for regular drops for customers/boss/users to play with, test, and provide accurate feedback with.
- Clarify the need, or lack of need at this time for separation of concerns (SOC) past were we have them separated currently. Along with that we'll be defining better our boundaries around coupling and our acceptance of were we'll be tightly and were we'll be loosely coupled.
…I'll have more on all this, some of the descriptions, conversation points, and other information in regards to the above Agile Manifesto and how it relates to project success. I also want to, along with another million topics, write up something in relation to coupling… hopefully I'll get to it all at some point.