In this blog I’ll be sharing my understanding of Lean and Agile Principles in Software development as well as the need for Scaled Agile Framework.
As we know, software development is about developing products and IT applications. The most common process traditionally followed is the waterfall model of Software Development Lifecycle (SDLC) to deliver the project. Project delivery is about performing sets of operations for various stake holders. Historically, the typical target project duration has been around 9 months. In my experience, I have not seen a single project executed successfully within this timframe. Invariably, there has to be change in the scope, cost, or quality in order to ensure the delivery schedule doesn’t change. The most common reasons I have seen for these changes, which actually represent failures, are
The standard set of project operations during project delivery are significant contributors towards project delivery lead time. The focus for lean principles is to eliminate the waste by removing some operational overheads and increasing process efficiency. In order to identify forms of waste one needs to come up with a value stream (eg: linear equation in mathematical modeling). The biggest problem for software development organizations is to create this value stream of digital and intangible outcomes.
I have a theory on the history of Agile: Agile has evolved as framework process principle by applying Lean on the standard ( inefficient ) waterfall development process.
Lean development can be summarized by seven principles which very close in concept to lean manufacturing principles:
All these principles are directly and indirectly implemented in Agile. As such, Agile principles basically “follow the waterfall process but in shorter cycles”.
There are multiple frameworks that are complaint to Agile principles, the most popular of which is the Scrum framework. Based on scrum, sprints are time bounded ( recommendation is 2-4 weeks). Product Owners, Scrum masters, and scrum teams work closely together to complete the sprint.
The Product Owner is the person who is responsible for consolidating requirements into a Product Backlog. The Scrum Master looks into the product backlog and decides on priorities, which are codified into a collection of stories that team will commit to implement (burn down) within the sprint duration. Teams have daily standups that cover what they did the day before and what are they planning to perform that day to ensure that the sprint is on track. At the end of the sprint, during retrospection meetings, teams check what improvements can be added in future sprints. As such, the release plan is similar to traditional project plan but without extensive efforts. It is a very high level plan with tentative dates. A release contains multiple sprints, and based on the progress of the sprints the release plan shall be updated. The focus should be more on sprint planning than release planning. The release plan is more to provide high level visibility to management and product owners.
Now that I have introduced Lean Principles and Agile terminology, some interesting artifacts of the evolution contained in my hypothesis become clear :
Success of the Agile implementation depends a lot on organization mindset, especially leadership maturity. Using tools is also necessary ( eg: JIRA Agile + Confluence ) which helps in recording the all artifacts. Continuous Integration, Continuous Delivery (eg: Stash + Bamboo) and Test Automation complement the value Agile creates. Effectively Agile Scrum framework would reduce the failures I have highlighted above to the maximum extent. However, there are still problems with an Agile Scrum framework:
Software development Enterprise needs are probably addressed by Scaled Agile Framework (http:scaledagileframework.com) and deeper looker is needed. In the next blog entry, I will elaborate on this. As lean emphasizes making improvements on existing processes to satisfy different challenges and refinements to existing or new frame works, it will keep evolving, and I’ll keep writing.