The modern-day world of custom software development is rather confusing. Just think about it - a new technology, language or framework shows up to dominate a certain niche on a regular basis. What makes the things even more boggling are the project management methodologies everybody kinda heard about but few truly understand. And yet, if they are what the cool kids are using, so should we - too many business owners believe.
Ok, here is the thing: the cool kids know the difference between lean, agile, scrum and TDD and they don’t use a certain one because it sounds cool. A hard path of trial and error has led towards accepting a certain methodology that fits best with the team and the corporate culture of the cool kid company. Sure what works for them may also work for you. But it may also misfire painfully, so why shoot yourself in the leg?
Before we can dive heads deep into the iterations of modern software development methodologies we must make a step back and look at what was before - the Waterfall methodology. It worked pretty well until the 90es. What changed?
Waterfall works great in a non-tech world but, with the overall spread of technology, consumer awareness and dependencies we have on software it proved to be unsustainable. The better safe than sorry approach fails to meet market demand, and hence new trends were developed agile being the most famous.
In simpler words, the world of software development has adapted to the realities of the world we live in through facing and solving a common series of challenges. Given the challenges are the same, the solutions also seem alike bringing forward the misconception that every new development trend roots or is a part of the agile software development lifecycle.
But, in reality, they are not. Each process has a unique set of nuances that can make or break an entire team of developers, managers, and stakeholders. The devil, as we well know, is always in the details.
Lean software development is a methodology similar to agile development as it emphasizes fast delivery, a clear vision of the whole process and the importance of a well-structured, ever-learning team. Lean development different from agile in as many ways given how the first puts simplicity and elimination of waste in the dead of the table, while the latter is all about delivering a finished product after every sprint.
Both methodologies have Kanban boards that are designed to limit the work in progress. But when agile is about using a specific timeframe for every interaction lean limits the number of tasks. The agile board is started from scratch after the sprint is done and the lean board is an ongoing process with a distinct flow.
Prioritization is key in lean software development as there is a list of tasks in progress and a list of tasks that still require development. Those lists are separate and a work on the task from a second list can only begin once work on a task from the first list is 100% finished.
This matters a lot because the lean approach towards software development allows for better waste management and accurate lead-time calculations. Additionally, with a lean software development cycle one may freely map out the entire flow of the project with as little as a pencil and a sheet of paper. How’s that for well planned?
Core goals and principles of lean software development are designed with the following ideas in mind:
Through a tough road of trial and error, we at PerceptionBox have realized that lean software development works best for our company, corporate culture, and clients. That, however, does not mean that lean will do the same magic for you but, at least now you know what it is and what lean stands for.