In the first part of our series we’ve introduced the concept of lean software development, discussed its benefits, in general, and its first three principles. Today, you’ll read about the remaining four and our concluding notes.
It happens or rather used to happen often in traditional project management, that your application, though meeting the spec precisely, turned out completely unfit for the market by the date of release. Too many changes had emerged since your requests – in the business environment, in technologies your competitors use and in market’s course overall; changes that had not been addressed over the course of development.
Lean software development recognizes this threat. It always leaves room for improvement by postponing irreversible decisions until all the needed experimentation is done and as much info as possible is gathered; until you’ve checked and examined your requirements comprehensively and there are no doubts as to their relevance.
The methodology strives always to construct software to be flexible, so that when new knowledge is made available, engineers can act upon it without wrecking completely what’s been done earlier. As all new projects, nowadays, are bound to face uncertainty, so the importance of this is hard to overestimate.
Historically, meticulous and long-term planning used to be the key to success in business. Only when each aspect of your strategy had been worked out thoroughly, agreed upon, strict milestones and pace of development had been established, you were considered ready to enter the software market.
As practice showed, however, such approach often led to a catastrophe. It made engineers spend too much time on building complex, monolithic systems packed with unneeded features. It restrained them from adapting the software to the ever-changing environment and client requirements.
As a result, lean engineers came up with the concept of MVP (minimum viable product) and overall opposite philosophy: build quickly, include little functionality and launch a product to the market as fast as possible. Then, study the reaction.
Such approach allows to enhance a piece of software incrementally, based on the feedback collected from real customers, and ditch everything that is of no value.
Lean software development is a system aimed at empowering team members, rather than controlling them. It goes beyond establishing basic human courtesy; it instills trust within each project. Engineers are granted freedom to make important development decisions, based on knowledge they receive whilst writing code and their own judgment. Providing, of course, that they’re experienced enough to do so.
Such approach contributes a lot to a faster application of changes to software that are needed to reflect the changes in the environment, and it keeps your developers motivated.
And what’s more important than team’s motivation?
Setting up a collaborative atmosphere, however, and keeping the perfect balance of control within the project is hard. Developers should be let to do their thing, implement changes that they feel are necessary, but they’re also ought to report on their decisions; to explain the approach, they intend to take to managers and, more importantly, to you – the client. In the end, it’s you who are in charge of the overall course.
According to Mary and Tom Poppedniecks, sub-optimizing is one of those unfortunate tendencies that, though being unproductive, still occurs often in traditional IT departments. Managers choose to break each issue into multiple constituent parts, which they then have their teams fix separately, without optimizing entire systems. Lean software development opposes that and stands for focusing on value stream as a whole.
At Perfectial, for instance, we find people that are best suitable for each specific project and organize them into complete, standalone teams. That way, there aren’t delays, disruptions, and miscommunications that would happen, surely, if project members were scattered across various departments.
Lean principles allow to optimise team’s workflow, create unity among everyone involved in the project, inspire a sense of shared responsibility and shared objectives, which translates into higher performance.
Although lean methodology introduces a customer oriented, flexible system to software development, it’s people who actually make it work. Therefore, look for expertise when hiring a team to build your application; professionals, who are committed to a continuous improvement, and qualified enough to embody the core values of Lean methodology – delivering as much value, in the shortest amount of time and in a most efficient way possible.
Want to learn more about lean software development and how your company can benefit from it?