Our team is running a little bit Agile in a company that likes requirements up front. We are also doing this as a bottom up shift in thinking.
As previously stated most of the software on our team is in maintenance mode. We are still running our last re-write as a project. It could easily be considered in maintenance, but that has not changed how we work it. Our newest re-write is just getting into full swing. That one is where we are trying hard to run it as an Agile project instead of the mostly stage-gated waterfall that we did before. It remains to be seen how well this works for us. It can be said now that we are using Agile practices on both of these projects.
The project manager and I do have a goal to be as Agile as possible. We aren’t doing this just to make ourselves feel good. We want to deliver the best value to our users that we can as quickly as we can. We are trying to learn from our previous project, which has had some pretty decent re-work, and apply that to this next one. Our conclusion has been to try and run Agile.
Projects have a start and finish. For most software projects the project is considered finished either right before or right after it enters maintenance mode. Most of our applications are running in a maintenance mode and have been for a long time. Requirements for these are generally done as feature requests or bug reports. Running maintenance mode in an Agile manner is going to look different from running an actual Agile project.
If we were running the support desk in addition to being the development team I would have us model our maintenance projects after Kanban. The layout would consist of the developers pulling items in from a story collection. This collection would be ordered by the product owner much as the backlog currently is. Hot ticket items from the floor would be dropped into the top of the list.
The changes to our estimation process have been a huge hit. The project manager has been nothing but pleased with the new methods. She used to fear estimation meetings and no longer does. The team all has an idea what is happening now when previously they did not. The business feels they have a better handle on what we can get done in any given amount of time. It has been a good fit all around. With this initial success it was time to look at what else in our process could be improved within the limitations we have to endure.
As a by-product of a failed Scrum implementation a few years ago we work in two-week sprints and have daily status meetings. We had a lot of other meetings though. There was a planning meeting that was attended by one developer, one person from SQA, and both business analysts. (In fairness, one of them is the project manager as well.) These meetings were long and painful for everyone involved. They went through the requested work trying to define what exactly it was. They picked what would be done next. They broke it down to tasks and times after which they assigned it to a person. After these meetings would be another meeting we called a kickoff in which the whole team was invited.
These have been the three most underutilized and ignored fields in our TFS template for over two years. We did an entire application re-write with three major release milestones, multiple integration points, and multiple small maintenance releases hardly acknowledging these fields. What little estimation data the project manager received was from one person on the team. Actual information was never fed back in. Estimations were broken. It was increasingly difficult for the project manager to reliably communicate with the business what the team could accomplish at what time. This was the biggest pain point we could identify.
Our bottom up approach to Agile implementation started here. As long as upper management received time based estimates on features for Enterprise planning purposes they were not especially concerned with where they came from. They cared only for how accurate we felt they were and how accurate they ended up being. That mindset allows us to change our estimation methods with little fear of interference. This is likely a common state for a project team to be in.
I have to start by admitting that I purchased this in the Kindle edition. This was very convenient when I was initially reading it. However, now that I have completed the book I wish I had the physical copy for quick reference.
I would buy this book again, and suggest it to others. Mr. Cohn describes it as a book about planning which includes the background in estimation as planning without estimation is impossible. He also points out that the title was very intentional. To have a successful Agile project your planning and estimation must also be Agile. My focus for this book was on the estimation front. I also used it as a reference for my PMI-ACP certification. It is nowhere near a complete reference for the certification, but was never intended to be. In the realm of moving our estimations forward it was a great help. Most of what we currently do for estimation can be traced back to what I learned from this book. If you are interested in knowing simply what each section of the book is about the Introduction is very well written and will tell you exactly what you want to know. In light of this I will be covering what I took away from it in a little more general sense, showing where I found value.