Agile Principles and Mindset
Industrial work is something which is visible, stable, emphasize on running things and is more based on command and control. Industrial work uses defined processes.
Knowledge work is something which is invisible, continuously changing and is more based on giving autonomous powers. Knowledge work uses empirical processes.
“Declaration of Interdependence” (DOI), written by the co-founders of Agile Leadership Network, outlines below principles:
1. We increase return on investment by making continuous flow of value our focus.
2. We deliver reliable results by engaging customers in frequent interactions and shared ownership.
3. We expect uncertainty and manage for it through iterations, anticipation and adaptation.
4. We unleash creativity and innovation by recognizing that individuals are the ultimate source of value and creating an environment where they can make a difference.
5. We boost performance through group accountability for results and shared responsibility for team effectiveness.
6. We improve effectiveness and reliability through situationally specific strategies, processes and practices.
Agile Triangle – It was introduced in the Dynamic Systems Development Method (DSDM). In the traditional project management, scope is fixed whereas time and cost varies. In the Agile triangle of constraints, time and cost are fixed whereas the scope varies.
Agile Manifesto – Agile manifesto includes four values and twelve guiding principles as below:
Four Values:
a. Individual and interactions over processes and tools
b. Working software over comprehensive documentation
c. Customer collaboration over contract negotiation
d. Responding to change over following a plan
Twelve Principles:
a. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
b. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
c. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
d. Business people and developers must work together daily throughout the project.
e. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
f. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
g. Working software is the primary measure of progress.
i. Agile processes promote sustainable development. The sponsors, developers and users should be able to maintain a constant pace indefinitely.
j. Continuous attention to technical excellence and good design enhances agility.
k. Simplicity-the art of maximizing the amount of work not being done-is essential.
l. The best architectures, requirements and designs emerge from self-organizing teams.
m. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Agile Methodologies – There are many agile methodologies being used nowadays but the most popular approaches are:
1. Scrum
2. Extreme Programming (XP)
3. Lean Product Development
4. Kanban
5. Feature-Driven Development (FDD)
6. Dynamic Systems Development Method (DSDM)
7. Crystal
Scrum
Please check Scrum Details for more information.
Three Pillars – Transparency, Inspection, and Adaptation
Five Values – Focus, Courage, Openness, Commitment, and Respect
Team Roles – Development Team, Product Owner, Scrum Master
Five Ceremonies – Sprint, Sprint Planning, Daily Scrum, Sprint Review, Sprint Retrospective
Artifacts – Product Increment, Product Backlog, Sprint Backlog
Extreme Programming (XP)
Core Values – There are five core values – Simplicity, Communication, Feedback, Courage, Respect.
a. Simplicity – This value guides what is the simplest or plain-vanilla version which would work.
b. Communication – This value guides that all team members should know on what others are working and what is expected of them.
c. Feedback – This value guides to get frequent feedback.
d. Courage – This value guides to have courage to share our work, make changes to others work.
e. Respect – This value guides that we should respect everyone and their different ways of working.
Team Roles – There are four team roles – Coach, Customer, Programmer, Tester
a. Coach – Coach role is very much similar to the Scrum Master role in Scrum. Coach acts as the facilitator and ensures XP process guidelines are being followed.
b. Customer – Customer role is very much similar to the Product Owner role in Scrum. Customer provides requirements, their priorities and either accepts the deliverables at the end of the iteration or requests for changes.
c. Programmers – Programmers are the developers who implements the code.
d. Testers – Testers test the features and write acceptance tests after discussion with the Customer.
Core Practices – There are thirteen core practices – Whole Team, Planning Games, Small Releases, Customer Tests, Collective Code Ownership, Code Standards, Sustainable Pace, Metaphor, Continuous Integration, Test-Driven Development, Refactoring, Simple Design, and Pair Programming.
a. Whole Team – It ensures that all team members are co-located at the same location. XP values that team members should be generalizing specialists so that they can perform multiple roles to improve efficiency and remove or reduce bottlenecks. (Broken-comb or Paint-drip are the ones who are specialized in different skills. Generalizing specialists are also known as T-specialists who have got deep specialization in one skill and broad abilities and knowledge in other skills.)
b. Planning Games – There are two planning games as Release Planning and Iteration Planning.
i) Release Planning – In this one, customer defines all product functionalities at broader level and development team defines effort required to develop it. Based upon this, customer lays down the plan for the release.
ii) Iteration Planning – It is done at the start of every iteration. Customer defines what they would wish for in the iteration and the development team breaks stories into tasks. Development team based upon their capacity, velocity, and complexity of the tasks commits what all they will develop in the iteration. Note : Customer provides priority and Development team provides what all can be accomplished in the iteration.
c. Small Releases – In XP, teams focus on frequent small releases.
d. Customer Tests – Customer defines acceptance criteria (later on converted to acceptance tests) which helps in ensuring that if the deliverable is implemented correctly or not.
e. Collective Code Ownership – In XP, multiple people work over the same piece of code, therefore, enhancing code visibility and knowledge across the team.
f. Code Standards – Since anyone can change the code in XP, team following coding standards so that it would be easy to understand and manage.
g. Sustainable Pace – XP encourages sustainable pace which ensures no one is burned out and the team productivity remains at high level.
h. Metaphor – Teams use metaphor to explain modules, designs, etc. in easy manner to each other and Coiother stakeholders.
i. Continuous Integration – Teams regularly merge their code with the existing code to ensure it is properly compiling and the overall behavior of the system is working as intended.
j. Test-Driven Development – Teams first write down the tests and then the code. Goal is to have some early checks and tests continue to fail till all code is properly written. After that, code is refactored.
k. Refactoring – This is the process of improving the design of the existing code keeping all external behavior of the code as it is. It helps in agility and having further developments over the code.
l. Simple Design – XP focuses on what is the simplest design or plain vanilla version that could work for the given requirement.
m. Pair Programming – XP encourages Pair Programming, in which, one person writes the code and the other person reviews it at the same time.
Lean
Core concepts – Eliminate waste, Empower the team, Deliver Fast, Optimize the whole, Build quality in, Defer Decisions, Amplify Learning
Seven Wastes of Lean
a. Partially done work
b. Extra Processes
c. Extra features
d. Task switching
e. Waiting
f. Motion
g. Defects
As per study by Clark and Wheelwright, productivity decreases if the team member works on multiple tasks. Productivity is maximum (80%) when the team member is having two independent tasks so that if he gets stuck on one task, he can switch to another task. Productivity while doing one task is 70%.
Kanban
Kanban is the Japanese word meaning signboard. Unlike other agile methods which uses iterations, it uses “pull system” to move work ahead by limiting the WIP. By limiting WIP, it uncovers bottleneck activities and increases team productivity. This has been proven by Little’s Law which defines time to complete items in the work queue is directly proportional to the length of the work queue. There are five principles of Kanban as mentioned below:
a. Visualize the workflow
b. Limit WIP
c. Manage flow
d. Make process policies explicit
e. Improve collaboratively
Feature-Driven Development
In this, project team develops by first preparing the product model. Team then decompose it into features and then plan and develop by features. There are seven core practices as below:
a. Domain object modelling
b. Developing by feature
c. Individual class ownership
d. Feature teams
e. Inspections
f. Configuration management
g. Regular builds
h. Visibility of progress and results
Dynamic Systems Development Methods (DSDM)
DSDM emphasis on constraint-driven delivery. It sets cost, time, and quality as the constraints and then use prioritization of the scope (MoSCoW). It creates feature buffer of 30% and Must Have features should not exceed more than 70% of the overall features of the project. Eight principles of DSDM are as below:
a. Focus on the business need
b. Deliver on time
c. Collaborate
d. Never compromise quality
e. Build incrementally from firm foundations
f. Develop iteratively
g. Communicate continuously and clearly
h. Demonstrate control
Crystal
It is the family of situationally specific customized methodologies coded by color names. Each methodology is customized by product defect criticality and team size. Small team which builds low critical system uses Crystal Clear whereas large team which builds high critical system uses Crystal Magenta. Order of the methodologies depending upon team size and product defect criticality – Crystal Clear -> Crystal Yellow -> Crystal Orange -> Crystal Red -> Crystal Magenta.
Agile Leadership
Agile promotes Servant Leadership. There are four primary duties:
a. Shield the team from interruptions – Servant leaders need to protect the team from interruptions and distractions.
b. Remove impediments to the progress – Servant leaders need to clear the obstacles from the team’s path to ensure team is focused on value-adding work only.
c. Communicate and re-communicate the project vision – Servant leaders communicate project vision frequently so as to keep the team on the track.
d. Carry food and water – Servant leaders provide the essential resources and the required environment to the team so that they can do their work properly.
Leadership Tasks
Major tasks of leadership includes:
a. Agile leader should encourage transparency in the work
b. Agile leader should create safe and trustful environment
c. Agile leader should encourage emergent leadership
d. Agile leader should encourage experiment to find effective and efficient ways or working
Agile Exercise: Answer at-least 80% of the questions correctly in order to master the topic.
20 Questions Challenge
50 Questions Challenge