In this dynamic world, the requirement for developing software keeps on fluctuating. To match with this changing nature we need to use an approach which allows accepting frequent changes that can be made any time during the software development, with little or no business loss.
To meet this, industry has now started using most evolved development approach called agile methodology.
The agile methodology in many ways equate with lean product development but in very superficial manner. For example, hypothesis in lean can be same as user stories in agile.
But the major difference is; Lean is used to help build and define a marketable product whereas agile is the means to achieve this in software development
Lean product development has 7 main principles given below:
- Eliminate waste: In software development, anything that is not adding value to software can be considered as waste. Writing codes which are not reusable can also be considered as waste. The delays occurring in approvals, review, requirement clarification also contributes to waste. From functional point , developing features which won’t be or will rarely be used by end users, is considered as waste
- Amplify learning: The development should be done by applying learning achieved in earlier similar project. Mistake done in development of software in one stage of SDLC shouldn’t be repeated in next subsequent stages. This requires an approach where a product cannot be built without constant dialogue with the end users
- Decide as late as possible: There are many decisions in software development which impacts the overall project health significantly. Lean suggests to take such decisions as late as possible thus ensuring the decision to be based on more of facts then of assumptions and predictions
- Deliver as fast as possible: This doesn’t mean to reduce the development duration and to deliver the low quality product. What lean says is that deliver the software in modular manner, thus reducing the time to market which further ensures the flexibility for accommodating the feedback received from end users in next release.
- Empower the team: Lean strongly recommend giving ownership to each team member to execute their roles and responsibilities. The manager’s job is more of listening to developers instead of giving orders.
- Build integrity in: To ensure integrity of a software, it is essential to obtain a wholesome understanding of all aspects – domain concepts, users behaviors, modules, features, geographical influences and likewise. Testability of every aspect must be understood and test scenarios defined to ensure the software delivers user needs and fulfils expectations.
- See the whole: At the end, lean says every small part of software is related to other and thus greater coordination is required where different teams are working on different modules of same software. The coordination should be strong enough to identify the common problems and implementing the solution at once.
We at e-Zest implement lean by following below activities:
Discovery phase: To eliminate the waste, this is very important since this helps to draft the basic requirements to be worked on. This cover studying the needs against perceived and conceptual integrity. The output of this phase is a minimal viable specs
Paper prototype/Clickable Prototype: We do prototyping to validate the idea thus implementing the concept of “Decide as late as possible”. In one of the project, we did clickable prototype of business idea, which the client then took to validate in market. On basis of feedback we designed sprints, thus ensuring the delivery of most crucial features as early as possible.
We know our developers: Ownership is in e-Zest value “OLIVZ”. What is required to follow lean is to hire competent resources with required skills to execute a task independently. At e-Zest, project manager devices the sprints/iterations based on developer’s skill set so that it can be deliver by single developer thus eliminating the inter-dependencies.
Implementing Devops: Devops focuses on improving the collaboration between developers and operations folks, thus matches to “see the whole” concept of lean product development. Tools such as Jenkins, Maven etc. helps for continuous integration.
Iterative approach: This approach helps to divide small chunks thus ensuring to meet several principles of lean. With this approach, learning out of the one iteration can be applied in the next iteration thus reducing waste.
The main aim to implement lean by leveraging our expertise in agile methodology is to achieve highest quality by using optimal resources, thus ensuring deliver of right solution to right users at right time.