Principles of Lean Software Development

  • Reduced time-to-market
  • Eliminates any process/task/code that complicates the software
  • Reduces cost
  • Enables collect ownership
  1. Eliminate Waste
  • Code anti-patterns, i.e., unnecessary code blocks that do not affect software’s functionality and make the code complicated
  • Lack of or poor communication among the stakeholders and within the development team
  • Features that do not add value to the software, i.e., the “could-haves” or the “would-haves” ones
  • Unwanted dependencies among the teams
  • Boat anchors, i.e., software or hardware that is not useful for the software under development
  1. Create Knowledge
  • Conducting retrospectives, i.e., sessions that revisit old projects to understand what worked and what didn’t
  • Having predefined engineering standards in place
  • Conducting mob programming sessions
  • Regular developer training
  1. Respect People
  • Two-way communication within the development team
  • Proactively responding to concerns and queries
  • Appreciating the development team whenever they perform exceptionally
  • Balanced responsibilities within permissible work-in-progress limits (WIP)
  1. Build Quality Through Testing
  • Implement Agile testing strategies
  • Implement CI/CD pipeline for enabling automated integration and delivery
  • Implementing hotfixes wherever necessary, i.e., a code snippet that acts as a patch to fix the identified bug
  • Implement pair programming, i.e., two programmers sit at the same system to accomplish a task. Where one programmer writes the code, the other one reviews each line of code simultaneously.
  1. Decide as Late as Possible
  • Gather all the data and insights around the subject under consideration
  • Involve stakeholders, product owner, product manager, and the development team (designers, developers, testers, DevOps experts, business analysts) when making a critical decision
  • Specify a set timeline for making decisions before sharing it across
  • Ensure that the software aligns with the business requirements and everyone agrees to accommodate the emerging ones
  1. Deliver as Fast as Possible
  • Effective management of the product backlog
  • Maintaining an optimal Work in progress (WIP) limit
  • Analyzing and managing cost of delay
  • Effective product backlog refinement
  • Enabling collective ownership across the team
  • Promoting mob programming, i.e., where the entire team works on the same item and at the same time to solve a problem at hand
  • Maintaining an agreeable sustainable pace at which the team can work without resulting in a burnout
  1. Optimize the Whole
  • Focus on identifying bugs at the end of every time-boxed LEAN sprint.
  • Conduct regular software testing and reviews
  • Conduct daily standups that focus on what the team members did yesterday, what they plan to work on today, and what challenges are they facing
  • Daily refactoring should be a standardized practice.
  • Follow the 80–20 rule, i.e., the development team should use 80% of their time to write new code and the remaining 20% on refactoring the pre-written code

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
James Wilson

James Wilson

144 Followers

Hi, I am James Wilson, a renowned journalist and a pass out from London University. I love writing on various topics, be it a technical or non-technical.