I was really annoyed today by a seemingly harmless line in an email: Given the compressed timeline, we adopted an agile approach to the build.
I love it when a firm starts on a project with a crazy immovable deadline that they can't make if they have to waste time planning it and so they decide to use an "agile" development "process". The trouble of course is that they really mean they don't want to do any planning at all - not even a crappy waterfall process. Instead they spray tasks at developers and pray that they there are no scary things that are going to come and bite them in the eleventh hour. A project descending into chaos is usually a sign of a project that is about to fail as panic sets in. Setting out chaotic from the very start sounds like a project I do not want to be on.
Agile development does not mean throwing out all planning, it means forcing the client to choose what is really important to them. I have been on an agile project that basically built an entire website from the graphic artists design document. Then people wonder why no one knows what a particular button is for, and why it's not in everyone's copy of the jpg. Agile development also means making sure that each component is complete before moving on to the next task. I find that developers will sometimes not implement a feature such as sorting a list with the hope that it will be caught in QA and then they will essentially be able to extend your development time into the QA period. You sneaky little developer, you'd be cute if it wasn't for the fact that you are freaking out because you haven't slept in weeks and your family is starting to take the guy that mows your lawn out to do family things because you are never around.
Another key to the agile process is that the team remain flexible to client changes. Pushing code early and often is definitely the cornerstone of this process but if the client comes back after a code push with a whole mess of changes, where exactly is this time going to come from? Sadly it's another reason why you are not going to get to spend the weekend relaxing or bringing in the patio furniture before it snows ... ummm, be right back, I just remembered something I forgot to do. If you aren't the master of time and space then there is simply no way to do more work in the same amount of time which means you need to take weekends and evenings away from developers. This leads to burnout which hurts your team's productivity for the remainder of this project and most likely the next project they are on.
Then people wonder why the agile development process hurts so much. It's simple really, you've never used it before.