Introduction to Lean, Agile, SAFE and Scrum

4 bodies of SAFE

lean, Agile, System thinking and Devops

Evolution of Agile methodology


Born out of Manufacturing practices

  • Mass production(Henry Ford) => Eiji Toyoda ==> Taiichi Ohno ==> Lean Way
  • Goals - make product faster, Cheaper, Quality, Verity
  • Balanced productivity and Quality


 

Lean

  • Framework for creating an efficient and effective organization
  • Based on fundamental idea of respect for people
  • Trust > Empower > Respect > Learn > Grow > Pride
  • encourage the practice of continuous improvement
  • has five principal (From "The machine that changed the world")

5 principal of Lean


Define value

  • value is what customer is willing to pay for
Mapping the value Stream
  • Identify all the activities that contribute to these values
  • reducing and eliminating unnecessary process and steps
Creating Flow
  • ensure that the run smoothly without interruptions or delays
Using a pull system
  • limit inventory and work in progress
Pursing Perfection
  • continuous improvement a part of organization culture


The lean Way
  • Any action or steps in a process that does not add value
  • Deviations show ineffective allocation of resource 
  • 3  types of  Deviation 
    • Muri/ Overburden
    • Mura/ Uneveness
    • Muda/ Waste
  • Muri - 100% utilization  of resource >> Breakdown
  • Mura - unevenness/fluctuations >> over / under production
  • Muda - waste , is it necessary for customer?


The lean way- waste management
Recognize waste any action or step in a process that does not add( to value
value is what the customer is willing to pay for
8 kind of waste (7 Developed by chief engineer at toyota, Taiichi ohno)
manufacturing has goods technology has features

Transportation
Inventory (excess WIP)
Motion
Waiting(Backlog)
Overproduction(output)
Over processing(complicated logic) 
Defects(Bugs) and
Unused Talent/Skill

In late 1990 the personal computer explosion happened

There was increase in consumer demands

Application delivery lag or crisis

Project ended up being cancelled halfway through

completed projects didn't meet project's original objective


The way that world's developer have been building software just weren't working.

Developers got to come up with something different.

Software developers started mixing new and old ideas and coming up with new mythologies.


Before agile methodology software was build through waterfall development.

if you don't know waterfall development let's know about in simple way



Waterfall model is a linear approach to software development. It mainly aims for a successful outcome as a result of meticulous planning at each pages in the process as follows

  • Set project requirements and the scope of work
  • Design a product based on those pre determined requirements
  • Build the product
  • Test the product
  • Launch the finished product

Agile is a set of methods and practices that focuses on iterative development


ability to move quickly and easily by becoming more flexible and adoptable is agile





Requirements and solutions are obtained thanks to self organizing cross functional teams collaborating


 Difference between agile and water fall


  • (lifecycle) Agile model is a continuous iteration life cycle model for developing and testing software
  • (Rigidity) agile methodology is a flexible way of building a software
  • (collaboration) Agile model is a highly collaborative approach towards software development , yielding a better output
  • (process) the entire process of development is divided into sprints
  • (Changes) Changes may be made even after the initial planning is completed
  • (Software Development) is a collection of many different projects
  • (Testing) testing is performed in the same iteration as programming or building


Disadvantages of waterfall model

  • Makes new  implementing requirements and changes are difficult 
  • Software is not produce or made until late during life cycle
  • Testing phase are only done at the last half of the project
  • excludes the feedback of client or end user 
Agile methodology influencers


17 people gathered at a ski resort in snowbird , Utan in 2001 to create a concrete solution to the major software development problems of the time

  • (lifecycle) Waterfall model is linear sequential lifecycle model for developing and testing a software
  • (Rigidity) waterfall methodology is a rigid, structured way of software development
  • (collaboration) waterfall model is less flexible and follows a sequence of steps not allowing the team to collaborate
  • (process) the software development is broken down into several phases
  • (Changes) Development requirements cannot be changed once the project development begins
  • (Software development) is completed as a single project or deliverable
  • (Testing) testing phase comes after the building phase

learn about manifesto in the following link 
https://agilemanifesto.org/

 
Manifesto for agile software development
  1. Individuals and Interactions over Processes and tools
  2. Working software over Comprehensive Documentation
  3. Customer Collaboration over contract negotiation
  4. Responding to a change over following a plan



Some Important parts of agile process (Agile Principles)



Customer satisfaction
you need to satisfy the customer through early and quick delivery of the product


welcome change
change needs to be addressed, even late in the development process


Delivery frequently
ensure software is delivered frequently, focusing on a shorter timescale thanks to a clear understanding of the product


Work together
developer and business individuals need to work together through the course of project


Motivated Team
project need to be build around motivated individuals and they must be trusted to get the job done


Face to face
Face to face conversion is the most efficient means of communication

Working software
working software is the primary measure of progress

Constant pace
agile process promotes sustainable development


Good design
agility can be improved by focusing on technical excellence and good design


Simplicity 
the amount of work that's not being done need to be minimized


Self-organized
self  organized tams provide the best architectures, requirements and design

Reflect and Adjust
Effectiveness can be improved by the team regularly reflecting on it


Agile become mainstream
After agile formation agile was more popular and agile became mainstream

Agile Alliance is a non profit organization whose goal is to
share information about agile
It provide resources for teams looking to adopt agile methodology
It explore and share new ideas and experiences


in 2003 agile alliance returned to Utah for the first annual agile conference
an agile ecosystem began to grow and agile ideas began to spread
Between 2012 and 2015 agile surpassed the 50% mark in adoption
2017 we saw the first succinct definition of agile testing


Agile methodology's roots extend far beyond information technology and it branches will continue to spread in nearly every function of every industry.

Agile is a mindset informed by the values informed by the values contained in the agile manifesto and the 12 principles behind the agile manifesto

It is described by 4 value mentioned above
Defined by 12 principles
Manifested through numerous methodologies and practices
Scrum, XP, DSDM, Pair programming, ASD, FDD etc.



Agile methodology takes an iterative approach to software development
Unlike a straightforward linear waterfall model agile projects consist of a number of smaller cycles which we usually refer to as sprints or iterations

Incremental Development
  • with incremental development the process is divided into small workable increments
  • each successive increment builds on top of the work done in the previous increments
  • over time functionalities are added based on what was already created

Iterative development
  • Iterative development involves the development of a system by the following repeated cycle or iterations
  • Based on the result from the most recent iteration of the process, changes are made. This helps the project evolve over time
Most common agile methodologies are

light weight approaches
scrum
lean software development
Kanban
extreme programming(XP)
Feature driven development(FDD)
Test driven development(TDD)
crystal etc.



Large scale approaches
Scrum of scrum
scrum at scale
large scale scrum
scaled agile framework
Disciplined Agile Delivery
DSDM
Agile unified Process(AUP)



Agile === Iterative + Incremental

  • Agile involves consideration and creation of a working product in an iteration which is part of the overall final product
  • Each iteration is an enhanced working increment of the final product
  • This process continues until all the product functionalities are satisfied
  • Organizations and users can use and experience the product and provide feedback that can be incorporated into the next iteration
  • Causing product roadmaps to be built produced, tested and confirmed before the next iteration

Different types of agile methodologies

Extreme Programming
  • It is a framework that enables teams to create high quality software and improves their quality of life
  • It enables software development with the appropriate engineering practices

Kanban
  • This method is used to design manage and improve the flow of system
  • Organization can visualize their flow of work and limiting their work in progress

Lean
  • Lean is a set of tools and principles that aims to identify and remove waste to increase the speed of process development
  • It focuses on maximizing value to the client ensuring waste is minimized 

Scrum
  • Scrum is a framework that is used by teams to establish a hypothesis, try it out reflect on the experience and adjust
  • It is used to enable teams to incorporate practices from other frameworks depending on the team's requirements
Crystal
  • Crystal is an approach to software development that focuses on people and their interaction rather than tools and process
  • it is aimed to streamline processes and improve optimization
  • It works on the principle that projects are unique and dynamic





Principles of Agile testing
  • Testing continuously to ensure the product improves continuously 
  • obtain feedback continuously to ensure the product meets business requirements
  • All team roles (testing, developing etc.) need to be involved in the testing process
  • active involvement of the business team and representative can provide quick feedback for each iteration
  • clean and simplified code ensures it to be detect-free during the iteration
  • the documentation created must be limited into a particular iteration
  • Along with development and implementation testing is done to ensure the product is defect free
  • continuous involvement of the user ensures the final product matches their requirements


Some Agile metrics that need to be focused on are
  • Measuring the burndown of deliverables which is usually represented using burndown charts
  • velocity
  • lead time
  • cycle time
  • code quality
  • code covered in unit test
  • Deployment success rate
  • net promoter score


What is Kanban?
  • Kanban system is visual system that enables better management of work as it moves through the processes
  • It visualizes and provides visibility into the process workflows and the work passing through the process
  • Kanban is also called a pull system because the new work is pulled in (taken up) from the list for execution and move them from in progress status to done
  • Tracking the work will also become easier as the workflow is clearly visible and put on a display board. Modern organization can also use the digital display system
  • The goal is identification of the constraints(i.e. potential bottleneck) in the processes and ensure they are addressed
  • this ensures that the workflow becomes smoother and more efficient


Some of the popular tools in agile are
  • Github
  • JiraSoftware
  • Trello
  • ZOHO
  • Yodiz
  • versionOne


Obstacles to the agile process
some of the obstacles that you could face are
  • Not having the appropriate or sufficient tools and technologies
  • the lack of active involvement from the customer
  • the team member lacking in skill and capability
  • the inability to design system based on unseen requirements
  • adapting the agile culture to the organization

Different between agile and scrum
Agile Scrum
Definition Agile is a set of principles that is iterative and incremental in nature     Scrum is an implementation of the agile methodology
Guidelines agile manifesto and 12 principle help an organization become agile used in projects where the requirements are constantly changing. It also adheres to agile principles
Roles Agile manifesto mentions collaboration and interactions to become agile Roles are defied the scrum master, the product owner and cross functional, self organizing teams    
Flexibility the manifesto mentions the focus required on working software and change It enables teams to react to change quickly
Delivery The methodology requires frequent delivery to the end user with sprints builds are delivered to clients for feedback
Collaboration Stresses on individual and customer interactions Daily stand up meetings helps and other scrum events




Some popular agile certification
  • PMI-ACP Certification 
  • Scrum master certification
  • Certified scrum master
  • Prince 2 Agile certification
  • Scrum product owner certification


Scrum

simple framework to boost productivity and delivery product that will delight customer

It does this by breaking the complex into smaller components parts

Scrum team than focus on tacking one part at a time

After certain solution build/ each incremental step, scrum team re evaluates what direction product should take and what process is most efficient to accomplish that. 

Scrum allows us and our scrum team to inspect and adapt our product, process and plans more quickly

Easy way to remember all key elements of scrum is  3 5 3

1st 3 represent 3 Roles

  1. Product Owner
  2. Scrum Master
  3. Developers

2nd 5 represent events 5 meeting called events

3rd 3 represents 3 artifacts

focus 
transparency
Accountability



product backlog according to product goal
Sprint backlog according to sprint goal
Product increment according to definition of done

Every project / products start with goal and vision

Product owner tells what scrum team are going to create
Product owner create prioritize Wishlist based on conversation with customer and stakeholder which is called product backlog

scrum team comprise of product owner, scrum master and developer take a look at the product backlog at the sprint planning

All them team collaborate and pull in the highest priority work they believe they can finished in a set period of time known as sprint


Sprint are the heart beats of the Scrum
sprint last from 1 to 4 weeks, they are short in design

sprint should be just long enough to allow scrum team to produce a meaningful working piece of product that could be released to customer we called this an increment.

Through out the sprint the scrum master coaches the scrum team on scrum , they also facilitate events and supports scrum team as needed

Every work day scrum team gather for the daily scrum this event should not take more than 15 minutes

Propose of the daily scrum is the track progress towards sprint goal, re plan the sprint as needed and to identify the  things that are making it harder to achieve this sprint goal or generally slowing the scrum team down


At the end of the sprint we have sprint Review

at this even PO make sure stake holder and  customer are there to see increment demonstrated and give their feedback


Final event is Sprint Retrospective
Scrum team looks at the scrum as a whole  with specific focus on process and agree on trying something in next sprint  that will boost productivity or make process work better. 



Sprint Goal






Comments