Two popular approaches to build secure software: Lean and Agile
Lean and Agile are extremely popular approaches to build software. However, they’re sometimes used interchangeably with little to no regard for the differing origins and features of the methodologies.
While the two are similar, and many software developers will conflate the two even in the professional field, knowing the differences between the two methodologies can be beneficial when deciding how you want to organize the actual processes that drive software development.
Once you know what Lean and Agile are all about, you can decide which one comes out on top in a classic Agile vs. Lean matchup.
Lean originates from ‘Lean Manufacturing’, an engineering scheme born out of Japan in the 1930s and credited to Toyota. Several principles guide this engineering philosophy, seven to be exact:
- Eliminate waste.
- Build quality in.
- Create knowledge.
- Defer commitment.
- Deliver fast.
- Respect people.
- Optimize the whole.
In essence, Lean strives to eliminate aspects of engineering or development that are not necessary and focus on the value as a whole.
Along the way, the methodology endeavors to prioritize genuinely human values as well such as learning and people in and of themselves.
Perhaps one of the most shocking elements of the lean methodology is that production is based on demand rather than supply. Lean asserts that creating products per request is more productive than amassing products in expectation of a request.
Kaizen is another important characteristic of Lean. Kaizen translates to ‘change for the better’. In Lean, this signifies that task completion should not rely on the same methods over and over and the process should always be optimized wherever possible.
The methodology also specifies that workers should be responsible for defining their method of work. Managers should trust that those who do the job know how to do it best.
Agile’s origins start with the Agile manifesto. Formally called the Manifesto for Agile Software Development, this manifesto gives a short overview of best practices for software development as derived from other software development frameworks like Scrum and Kanban.
Agile has four defining guidelines, listed below:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
In addition, the manifesto holds 12 principles which can be surmised as the following priorities:
- customer satisfaction
- welcoming changing requirements
- frequent delivery
- project collaboration amongst business people and developers
- having motivated individuals and a matching environment
- effective face-to-face conversation
- working software as a measure of progress
- sustainable development
- continuous attention to technical excellence
- simplicity
- self-organization
- regular reflection and adaptation
Notice that Agile pays particular attention to collaboration in almost every semblance of the word. For example, amplifying individuals and interactions over processes and tools demonstrates that team collaboration is the core of the project.
Similarly, Agile leverages customer collaboration, holding it in a positive light. While a contract can tell developers what to do, ensuring that the final product meets the client’s needs is the end goal regardless of any contract.
The principles of Agile alone emphasize constant communication and governance that is dependent on established cooperation between different individuals involved with the project.
Lean takes a minimalist approach to software development and engineering in general. This approach underscores people, learning, and betterment. The Agile methodology highlights the same values but its approach is notably collaborative in turn.