Day 9 #100DaysOfLearning
DevOps Foundations: Lean and Agile by Ernest Mueller and Karthik Gaekwad

Day 9 #100DaysOfLearning

I think I have mentioned that there are three perspectives that I value for my own skill development. Those are "people", "process", and "technology". Today I learned about "Lean" and "Agile" as they relate to the process and people perspectives.

What is Agile?

  • Agile methodologies are diverse approaches to software development emphasizing adaptability, collaboration, and iterative processes.
  • Various agile methodologies include Extreme Programming (XP), Scrum, Kanban, Dynamic Systems Development Method (DSDM), Feature-Driven Development, Lean, Scrumban, and Rational Unified Process (RUP).

Methodologies:

1. Extreme Programming (XP):

  • Emphasizes continuous feedback, flexible planning, and collaborative work.
  • Incorporates practices like pair programming, continuous integration, and test-driven development.

2. Scrum:

  • Originated from a rugby term, Scrum provides a framework for iterative and time-boxed development.
  • Key components include product backlog, sprints (time-boxed iterations), daily stand-ups, sprint reviews, and retrospectives.
  • Roles: Product Owner, Development Team, Scrum Master.

3. Kanban:

  • Focuses on delivery efficiency and avoiding developer overload.
  • Developed by Taiichi Ohno at Toyota, Kanban principles include visualizing workflow, limiting work in progress, managing flow, making process policies explicit, and collaborative improvement.
  • Utilizes a Kanban board with columns like Ready, Doing, and Done, with limits on work in progress.

Choosing a Methodology:

  • Selection depends on the organization's existing processes, adaptability, and preference for rule-based or adaptive approaches.
  • Scrum, Kanban, and Lean are commonly favored methodologies.
  • Scrum emphasizes time-boxed sprints and defined roles.
  • Kanban is more flexible, focusing on continuous delivery and cycle time.
  • Lean principles emphasize eliminating waste and improving efficiency.

Key Terms:

  • Product Backlog: Prioritized set of desired product features.
  • Sprint: Time-boxed iteration in Scrum, typically two to four weeks.
  • Daily Stand-up: Quick daily meeting in Scrum covering progress, intended tasks for the day, and impediments.
  • Kanban Board: Visualizes workflow, often includes columns like Ready, Doing, and Done.
  • Cycle Time: Focus on the time it takes to complete a task in Kanban.

Differences between Scrum and Kanban:

  • Scrum:

- Roles: Product Owner, Development Team, Scrum Master.

- Time-boxed sprints, no changes during iterations.

- Specific deliverables like sprint reviews and retrospectives.

  • Kanban:

- No specific roles; focuses on continuous delivery.

- Visualizes workflow with a Kanban board.

- Emphasizes flexibility and adaptability in handling change.

Considerations for Choosing:

  • Scrum suits situations where work can be prioritized and time-boxed.
  • Kanban is effective in environments with high change and variability.
  • Both methodologies focus on early and frequent software releases and require collaborative, self-managed teams.

Agile methodologies offer diverse approaches to software development, with Scrum and Kanban being prominent choices. Selection depends on organizational processes, adaptability, and preference for rule-based or adaptive methodologies. Each methodology brings unique principles and practices to achieve efficient and iterative software development.

What is Lean?

Origins and Inspirations:

  • Lean originated in manufacturing and was influenced by innovators like W. Edwards Deming and Taiichi Ono (developer of the Toyota Production System or TPS).
  • It gained prominence after World War II in Japan and later made its way to the US in the 1980s.
  • Lean draws inspiration from statistical process control, continuous improvement, designed experimentation, and Henry Ford's original work in just-in-time manufacturing.

Definition and Methodology:

  • Lean is a systematic method aimed at eliminating waste and maximizing the flow of value through a system.
  • Value is defined as something the customer is willing to pay for, ensuring efforts contribute to the organization's profitability.
  • Value Stream Mapping is a Lean practice that creates a diagram depicting where value is created in a system and how it flows through the organization.

Waste Elimination:

  • Lean identifies three major types of waste: Muda (effort spent on non-value-creating work), Mura (waste from unevenness), and Muri (waste from overburdening).

Muda, Mura, Muri

Theory of Constraints:

  • Lean incorporates the Theory of Constraints to identify bottlenecks reducing system throughput.
  • Measuring and managing throughput, inventory, and operating expenses, while focusing on lifting constraints, enhances overall system delivery.
  • The concept of systems thinking contrasts with local optimization performed by individual functional areas.

Flow Philosophy and Continuous Improvement:

  • Lean embraces a pull philosophy of flow, where a downstream station pulls needed items instead of having them pushed upon it.
  • Continuous improvement is central to Lean, employing tools like Kaizen and various quality tools.
  • Lean encourages empowering individuals and teams, emphasizing that work can only be improved by harnessing the knowledge of those performing it.

KAIZEN = Continuous Improvement

Respect and Empowerment:

  • Respect for and empowering both individual employees and teams are critical in Lean.
  • An example is the Andon cord, where any line employee can stop the entire production line to resolve an issue, demonstrating the value placed on employee input.

Andon System

Benefits and Impact:

  • In manufacturing, Lean principles led to remarkable benefits, as seen in a case study from Damon Products in 1999.
  • Reductions in cycle times (97%), setup times (50%), lead times, and significant improvements in flow were achieved.
  • On a larger scale, TPS and Lean revolutionized the Japanese industry and contributed to reviving the American auto industry.

Application in DevOps:

  • The State of DevOps report consistently finds a strong statistical correlation between Lean practices and high-performing IT organizations.
  • Key Lean principles beneficial in DevOps include small deliverables, limiting work in progress, visibility into flow through information radiators, implementing customer feedback, and empowering development teams.

Lean in detail

Lean Beyond Manufacturing:

  • Lean principles, originating in manufacturing, quickly found applications in other areas, such as product management.
  • Toyota employed lean techniques in product development, emphasizing the importance of fulfilling customer demand for more variation alongside efficient production.

Lean Product Development:

  • Lean product development involves independent teams of experts from various disciplines, empowered to pull their own work.
  • Visual work management tools, akin to Kanban boards, are used to enhance collaboration and increase the rate of innovation in new product development.
  • Modern technology and product management often require a detailed, technical approach for optimizing processes.

Lean Startup Approach:

  • Eric Reese's "Lean Startup" popularized a more recent incarnation of lean product management.

The Lean Startup by Eric Ries

  • Proposes the Build-Measure-Learn loop as a variation of the Kaizen cycle, emphasizing delivering a minimum viable product, gathering customer feedback, and iterating based on validated learning.
  • This approach aligns with the principles of lean by focusing on continuous improvement, prioritization, and detailed progress measurement.

Lean Software Development:

  • Mary and Tom Poppendieck adapted lean techniques to software development in their 2003 book, "Lean Software Development: An Agile Toolkit."

Identifies seven principles for developing code: eliminate waste, amplify learning, decide as late as possible, deliver as fast as possible, empower the team, build integrity in, and optimize the whole.

The 7 Principles of Lean Software Development

1. Eliminate waste, It’s a core principle of lean software development. The term “waste” means anything that does not contribute to product value but eats up the resources. Examples include:

  • unnecessary code or functionality
  • starting more than can be completed
  • delay in the software development process
  • unclear or constantly changing requirements
  • bureaucracy
  • slow or ineffective communication
  • partially done work
  • defects and quality issues
  • task switching

2. Amplifying learning involves short cycles delivering working code with continuous testing and feedback.

3. Deciding as late as possible allows for making final decisions with maximum information.

4. Delivering as fast as possible minimizes the gap between customer needs and fulfillment, reducing waste and thrash.

5. Empowering the team involves pushing decision-making down to individuals and focusing on continuous improvement.

6. Building integrity in emphasizes finding and eliminating bugs early in the process through techniques like refactoring and automated testing.

7. Optimize the whole advocates considering the entire system and product when making decisions and using visualizations to keep the organization focused on common goals.

Application in DevOps:

  • Lean software development principles align closely with DevOps practices, providing valuable insights into eliminating waste, continuous improvement, and prioritization.
  • Identifies software equivalents to the seven key wastes from lean manufacturing and suggests using lean techniques to reduce them in the development process.

Lean and Agile in DevOps

Historical Roots:

  • DevOps, which has been around for over a decade, finds its roots in the principles of Agile and Lean.
  • The connection between Agile and infrastructure was discussed at the Agile Conference in 2008 when Andrew Shafer and Patrick Debois initiated a conversation about Agile infrastructure.

Defining DevOps:

  • DevOps is the collaboration between operations and development engineers throughout the entire service lifecycle, from design to production support.
  • Tom Limoncelli suggests that DevOps is essentially the application of Agile methodologies to system administration.

Introduction of Lean in DevOps:

  • CAMS (Culture, Automation, Measurement, and Sharing) was introduced as the four main pillars of DevOps by Damon Edwards and John Willis.
  • Jez Humble added the concept of Lean to the definition, resulting in CALMS (Culture, Automation, Lean, Measurement, and Sharing).

Autonomation in Lean and DevOps:

  • The Lean concept of autonomation, originating in TPS, aligns with the idea of intelligent automation or automation with a human touch in DevOps.
  • This emphasizes self-service and human-friendly automation as a core DevOps principle.

Matthias Marshall's Relationship Diagram:

  • Matthias Marshall illustrates the relationship between Lean, Agile, and DevOps in a diagram.
  • Agile development, Lean product management, and operations are portrayed as integral components of DevOps.
  • The Lean principle of flow informs the entire software development process, emphasizing value delivery to customers.

Gene Kim's Contribution:

  • Gene Kim, known for "The Phoenix Project" and "The DevOps Handbook," introduced The Three Ways—systems thinking, amplifying feedback loops, and creating a culture of experimentation and learning.
  • These principles are deeply rooted in Lean and the Toyota Production System (TPS) playbook.

The Phoenix Project and The DevOps Handbook by Gene Kim

Understanding both Agile and Lean is considered crucial for success in DevOps. Lean is viewed as a mindset that spans all phases of the software development process, contributing to a holistic approach to delivering value to customers.

Next Action

I learned about DevOps from the Agile and Lean aspects related to People and Process, a perspective I value. Next, I would like to look at DevOps from the perspective of technology.

要查看或添加评论,请登录

Shinya Yanagihara的更多文章

  • Day 100 of #100DaysOfLearning

    Day 100 of #100DaysOfLearning

    I have mixed feelings about it, as if it was long and short. This is finally the 100th activity that I started with the…

    1 条评论
  • Day 99 of #100DaysOfLearning

    Day 99 of #100DaysOfLearning

    What a surprise! I found myself on the 99th day of the 100Days of Learning activity. Continuation is power, indeed.

  • Day 98 of #100DaysOfLearning

    Day 98 of #100DaysOfLearning

    How do you take notes when you study? There are some note-taking systems and techniques, such as Cornell note-taking…

  • Day 97 of #100DaysOfLearning

    Day 97 of #100DaysOfLearning

    Today is the fourth day of setting up a Windows environment. Today I finally get to set up my long-awaited development…

  • Day 96 of #100DaysOfLearning

    Day 96 of #100DaysOfLearning

    I am sure you are all aware that open source also has a license. I knew that, but I always managed my GitHub…

  • Day 95 of #100DaysOfLearning

    Day 95 of #100DaysOfLearning

    Today is the third day of building a new PC environment. Today I was mainly working on the configuration of Visual…

    2 条评论
  • Day 94 of #100DaysOfLearning

    Day 94 of #100DaysOfLearning

    It is no exaggeration to say that Windows is now Linux. I'm sure some of you don't know what I mean.

    2 条评论
  • Day 93 of #100DaysOfLearning

    Day 93 of #100DaysOfLearning

    In order to make a clean break with the past, I did a clean install of Windows 11 and began to create a clean…

  • Day 92 of #100DaysOfLearning

    Day 92 of #100DaysOfLearning

    Happy April Fool's Day! Today is April 1, which is April Fool's Day. Some of you may have been looking forward to April…

  • Day 91 of #100DaysOfLearning

    Day 91 of #100DaysOfLearning

    I actually haven't used a Mac since I left my last job and entered my career break period. I use Windows every day.

社区洞察

其他会员也浏览了