Lessons from ACP

Since more than a decade, I have managed software development projects. My first projects were based on the waterfall model. After the contract has been signed, we start the project. We approach customers to get their requirements and create a big-bang plan that will cover the entire project. It can take anywhere from 6-18 months. Next, we will do technical design, coding and integration testing. Finally, we will deliver the product to our customers. Our contact with customers during the project is limited to sharing weekly progress reports and performance reviews; sometimes we share technical documents for their approval. Initial team would work casually. However, towards the end of the project we faced major challenges in big-bang Integration and many defects in system testing. We became accustomed to this routine and didn’t think about changing. Like many others, I was excited by agile, the new method for software development. I was able to see many certifications in agile so I decided to get the global ACP (Agile Certified practitioner) certification. This certification is only for agile project managers. After gaining experience with agile projects and passing ACP, I want to share the main lessons learned from agile over waterfall. You must be open to change as change is inevitable. Waterfall is known for being resistant to change, while agile embraces changes in requirements, even late in development. Agile processes harness the power of change to enhance customer competitive advantage. The customer owns the product backlog (aka product specifications), which is arranged by value so that team can implement iterations. The customer has the ability to change the requirements until they are implemented. Waterfall delivers the product at the finish, usually in 6-18 months. Agile produces small iterations, typically every 2 weeks. The customer releases the product to market once it has minimal marketable features. This reduces time to market (TTM), yielding a higher return on investment (ROI). In waterfall, the Project Manager creates the entire plan and the team does the rest. Agile is self-managing. This means that the team estimates, customers commit, plans, schedules, allocates resources, executes, monitors, controls, and manages customers. The role of project manager is to provide infrastructure, manage external stakeholders, and remove team impediments. We have empowered and motivated our team. We spent a lot of time and effort in waterfall to create design, requirement, and test documents. Most of these documents were outdated. Agile believes that Just Barely Good Enough (JBGE), documents are just enough. This means that the one-line user story is the requirement and the code is the living design document. Agile focuses on software engineering practices such as pair programming, test driven and automated development, continuous integration, collective code ownership, informal communications, customer collaboration, and continuous customer collaboration. Agile is a happy model for all stakeholders. Customers and end users love agile’s change-friendly development model.
Businesses are happy to see faster TTM and better ROI.
The team is happy when they can self-drive and can focus on engineering practices.
The project manager is happy because his burden has been greatly reduced

Why not go agile? References: 1. Agile Manifesto: http://agilemanifesto.org