Thursday, November 17, 2011
Lean in Software Development
Lean, being primarily a manufacturing and production buzzword has seen its embracement in other industries as well like health care services, food chains etc. I have had a chance to implement and practice Lean in a software development life cycle while working at IBM and I would like to share my experience in this post.
When my team transitioned from a traditional iterative model of software development to Agile model, we decided to incorporate some Lean practices into our development process. The first and foremost challenge in front of our team was to deliver small chunks of code as early as possible to the stakeholders/customers and get an early feedback on the system. Such a change required reducing the development cycle from 6 months to 4 weeks (which was met with a lot of criticism at the onset). But the objective was that the sooner the end product is delivered without considerable defect, the sooner feedback can be received, and incorporated into the next iteration. The shorter the iterations, the better the learning and communication within the team. Speed assures the fulfilling of the customer's present needs and not what they required yesterday. This gives them the opportunity to delay making up their minds about what they really require until they gain better knowledge. Customers value rapid delivery of a quality product.
The Just-in-Time ideology was put into application here , which affected not just the development cycles but the QA cycles as well, the testers had to be ready with all guns blazing the moment a piece of code was available for testing so that defects can be raised at an early stage and fixed appropriately. A significant amount of planning was required at the end of every iteration by dividing the tasks for achieving the needed result.
The Lean paradigm in software development also facilitated the ideology of self-driven teams. A very effective tool that drives this ideology is a stand-up 15 minute meeting every day, better known as Scrum meeting.(the term Scrum is derived from Rugby).
Such a meeting involved a Scrum-master, who is a facilitator of the meeting and all the team members who were required to give answers to three questions in less than a minute
1) What did I do yesterday?
2) What am I going to do today?
3) What is it that blocks my progress?
The idea is to ensure that every team member knows what every other team member is doing so that they can help each other and achieve their targets. Such meetings facilitate transparency and improve communication between team members.
In terms of reducing wastage in the software development life cycle, Lean facilitates a prompt and responsive testing cycle that goes in hand with the development cycle, which does not allow accumulation of technical debt and aims at providing error-free code at the end of every iteration.
The embracement of Lean practices in the software world is still at an infant stage and needs to evolve as teams are become cross-geographic in nature which adds to the communication overhead between teams. Shorter iterations lead to a stressful time for developers and testers who need to put in and test a lot of features in a very short period of time. Also , getting a continuous constructive feedback from customers about the system is a big challenge , customers are generally not very responsive that too at such frequent intervals.
These are certain challenges faced by the software industry and how well the software industry embraces Lean in the future is something to look out for.