“Agile development is a mindset that values learning, experimentation, and continuous improvement.” — Steve McConnell
Jump to Section
What is Agile?
The Agile Mindset
4 Values of Agile
12 Principles of Agile
When Not to Use Agile
Benefits of Agile
Agile Project Management
Choosing the Right Approach
I started with Agile in software. Then applied it to productivity and life. Then applied it to business and innovation.
With more than two decades of experience at Microsoft, I’ve seen firsthand how Agile methodology can revolutionize the way teams approach project management and software development.
In this article, I’ll share my experiences with Agile and explain what it is, how it works, and why it’s such a game-changer.
What is the Agile Methodology?
Agile is a flexible and iterative approach to project management and software development that uses feedback loops that prioritizes delivering value to customers through continuous planning, testing, and feedback.
I would describe Agile methodology in one-sentence like this:
Agile is a methodology for development that emphasizes flexibility, collaboration, and customer satisfaction.
Instead of relying on a single, massive launch, an agile team delivers work in small, manageable increments that can be easily consumed. The team continuously assesses requirements, plans, and outcomes, enabling them to adapt to changes swiftly and naturally.
I like how Steve McConnell frames what is Agile:
“Agile development is not characterized by a single methodology or technique, but rather by a philosophy of prioritizing customer value, working in small increments, collaborating closely with customers and other stakeholders, and being able to respond to change quickly.”
And it’s this ability to learn and respond, while embracing change where the benefits of Agile come from.
How I Explain Agile to Business Leaders
In the business arena, I explained Agile like this:
We’re going to wrap the business around our customers. We’re going to give our customers a voice and a feedback loop with our design/engineering teams.
We’re going to ship incremental chunks of value towards a vision.
Those chunks will address customer’s pains, needs, and desired outcomes.
And we’re going to learn and improve.
And I reminded them Agile doesn’t mean “fast”. It means responding to change.
Ward Cunningham, one of the pioneers of agile software development, first explained Agile to me like this:
“Agile doesn’t mean fast. It means responding to change.”
Of course, when you operate with agility, you can respond to change faster and easier, so in many ways, you end up doing things faster, simply because you do things more efficiently and more effectively.
How I Summarize Agile for Teams at Microsoft
I’ve given multiple talks at Microsoft to different teams to help them learn and adopt Agile methodologies.
Here is how I summarize the most important ideas from Agile:
- Agile is a framework of values and principles to manage teams and projects.
- Agile is an alternative approach to traditional project management. It embraces change while traditional project management fights change.
- People across functional teams work together as one team, rather than different groups working in phases or stages.
- More human communication, interaction, and face-to-face.
- Continuous feedback from users and stakeholders.
- Iterations, shorter development cycles, and more frequent releases.
- Visibility of progress and transparency of process.
Where Did the Agile Methodology Come From?
The software industry demanded more responsive and flexible development methodologies than the traditional approaches could provide, leading to the emergence of the Agile methodology.
In response to the rapidly evolving technological landscape and customer needs, a group of industry leaders convened at the turn of the millennium to reimagine software development principles.
This led to the establishment of the Agile Manifesto, which prioritizes delivering value to clients and end-users through adaptable processes, better collaboration, and empowered teams.
The Agile Mindset
There is a crucial belief that underpins an Agile Mindset:
By embracing the Agile Mindset, a team can more effectively implement Agile methodology and achieve the benefits of better customer focus, better collaboration, and continuous learning.
These are some of the signs that a team has embraced the Agile Mindset: seeing failure as a chance to learn, valuing diverse perspectives, enjoying their work, maintaining a sustainable pace, adapting to change readily, practicing transparency, communicating and collaborating effectively, recognizing anti-patterns, and freely sharing knowledge.
4 Core Values of Agile Methodology
I’ve found it incredibly valuable to internalize the values of Agile in order to embrace Agile.
When you operate from a shared set of values, everything gets easier, because you’re working from common ground.
And ultimate the values and the principles are the backbone of Agile.
The core values of Agile are defined in the Agile Manifesto, which is a set of guiding values and principles for Agile software development. The four core values of Agile are:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
These values prioritize people and their interactions, working software that meets customer needs, collaboration with customers, and the ability to respond to change.
Agile emphasizes flexibility, adaptability, and customer satisfaction, rather than rigid processes and plans.
By following these values, Agile teams aim to deliver high-quality products that meet customer needs and adapt to changing requirements.
12 Principles of Agile
The 12 principles of Agile are as follows:
- Customer satisfaction through early and continuous software delivery.
- Welcome changing requirements, even in late development.
- Deliver working software frequently, with a preference for shorter timescales.
- Collaborate with customers and stakeholders on an ongoing basis.
- Build projects around motivated individuals, who should be trusted to get the job done.
- Use face-to-face communication whenever possible, and recognize its importance.
- Working software is the primary measure of progress.
- Sustainable development is key, with a focus on maintaining a consistent pace of work.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity is essential, and the art of maximizing the amount of work not done is important.
- Self-organizing teams are the most effective way to get work done.
- Regular reflection and adaptation help the team to improve continuously.
The 12 Principles of Agile are documented at Principles behind the Agile Manifesto.
Benefits of the Agile Methodology
When I think about the ultimate benefit of Agile, to me it comes down to wrapping value creation around customer’s pains, needs, and desired outcomes.
Ultimately, it’s a way to create a learning system to provide better value creation.
The primary benefits of agile include:
- Faster delivery of working software: Agile development focuses on delivering small, incremental releases of software, allowing teams to get working software into the hands of customers more quickly.
- Improved flexibility and adaptability: Agile allows for more flexibility and adaptability to changing requirements and priorities, making it easier to adjust to shifting business needs.
- Increased collaboration and communication: Agile emphasizes collaboration and communication between team members, stakeholders, and customers, leading to better alignment and shared understanding of project goals and requirements.
- Better quality and higher customer satisfaction: Agile’s focus on continuous feedback and iterative development helps ensure that the software being developed meets the needs of customers and is of high quality.
- Increased team morale and motivation: Agile teams are self-organizing and empowered, allowing team members to take ownership of their work and feel more engaged and motivated in their roles.
- Reduced project risk: Agile’s iterative approach allows teams to identify and address issues and risks early in the development process, reducing the likelihood of major problems later on.
When Not to Use Agile Methodology
Agile methodology is ideal for projects that are complex, innovative, or require constant changes based on customer feedback. It is also well-suited for teams that value collaboration, adaptability, and continuous improvement.
However, there are situations where agile may not be the best fit. For example, if the project requirements are well-defined and unlikely to change, a traditional waterfall approach may be more appropriate.
Similarly, if the project is small or simple, an agile approach may be overkill and add unnecessary overhead.
Agile is also not a good fit for teams that struggle with open communication, trust, or collaboration, as these factors are essential for success with agile.
Additionally, if the team lacks experience with agile or the necessary tools and resources, it may be difficult to implement effectively.
What is Agile Project Management?
Agile project management is a specific implementation of the broader Agile methodology. Agile project management is an iterative approach to managing projects that emphasizes flexibility, adaptability, and collaboration.
It involves breaking down projects into small, manageable chunks called sprints, and continually assessing and adapting the project plan based on feedback and changing requirements.
Agile project management values customer satisfaction, early and frequent delivery of working software or products, and a focus on individuals and interactions over processes and tools. It is often used in software development but can be applied to any type of project.
Key Steps in Agile Project Management
Here are the general steps of Agile project management:
- Identify the product owner and form the team
- Define the product vision and roadmap
- Create a prioritized product backlog
- Plan and execute sprints or iterations
- Review and demo the product increment at the end of each sprint
- Conduct a retrospective to identify areas for improvement
- Refine the product backlog and repeat the process for the next sprint or iteration
Note that these steps may vary slightly depending on the specific Agile methodology being used (e.g. Scrum, Kanban).
Choosing the Right Agile Approach
Scrum is one of the most popular Agile frameworks for software development, so many teams that adopt Agile also use Scrum.
However, there are other Agile frameworks, such as Kanban and Lean, that teams can also use depending on their specific needs and goals.
Scrum is a framework within the Agile methodology that emphasizes iterative and incremental development, cross-functional team collaboration, and frequent communication and feedback.
It includes specific roles, ceremonies, and artifacts, such as the Product Owner, Scrum Master, Daily Scrum, Sprint Review, and Sprint Retrospective, to help teams implement Agile principles effectively.
Kanban is a visual system for managing work as it moves through a process.
It was originally developed by Toyota to improve manufacturing efficiency, but it has since been adapted for use in a wide range of industries and contexts, including software development, project management, and personal productivity.
In a Kanban system, work items are represented by cards or sticky notes on a board, and they are moved through various stages of the process as they are worked on.
The goal is to create a flow of work that is smooth, predictable, and efficient, with a focus on limiting work in progress and maximizing throughput. Kanban emphasizes continuous improvement and encourages teams to experiment with their processes and make incremental changes to improve efficiency and quality.
Lean is a holistic methodology that originated in manufacturing and aims to create a culture of continuous improvement by eliminating waste, improving efficiency, and empowering workers to make decisions.
Lean focuses on maximizing customer value while minimizing waste, and it has several principles and practices that support this goal.
While they are separate methodologies, Kanban is often used in conjunction with Lean to help teams improve their processes and become more efficient.
Kanban vs. Scrum
While Scrum is more structured, prescriptive, and team-oriented, Kanban offers flexibility, allowing teams to visualize and manage their work more fluidly.
As Agile implementation matures, Scrum teams may evolve to incorporate Kanban practices, using it as a project portfolio management tool.
Some organizations have even found success in beginning their Agile journey with Kanban. However, for most teams, Scrum remains the ideal starting point for Agile development.
Ultimately, the choice between Scrum and Kanban depends on the specific needs of the team and the nature of the work. Both methodologies offer unique benefits and can be adapted to suit the project at hand.
According to Steve McConnell, Kanban works well for work where prioritization and throughput are the primary concerns, while Scrum works better for work where small, iterative steps towards a general goal are the focus. And either can be a good foundation for process improvement.
Let’s delve deeper into Scrum, as it’s one of the most popular types of Agile project management.
Scrum Methodology at a Glance
Scrum is an Agile-based framework that integrates Agile values and principles to provide guidance and support to team members.
It focuses on managing tasks, timelines, and team by creating a workflow that enables feedback and regular check-ins to achieve goals.
The framework emphasizes iterative development, enabling team members to learn from their mistakes and improve efficiency.
Key Roles in Scrum
The key roles in Scrum are:
- Product Owner: Responsible for defining the product backlog and ensuring that the development team is working on the highest priority items.
- Scrum Master: Facilitates the Scrum process, removes impediments and ensures that the team is following the Scrum framework.
- Development Team: Cross-functional and self-organizing team responsible for delivering the product increments.
All three roles work together closely to ensure the success of the Scrum project.
Key Stages in Scrum
The key stages of Scrum include:
- Sprint Planning: At the beginning of each sprint, the team meets to plan what will be accomplished during that time period.
- Daily Scrum: This is a daily meeting for the team to discuss progress, raise any issues, and identify any changes that need to be made to the plan.
- Sprint Review: At the end of the sprint, the team presents the work they completed to stakeholders and gets feedback.
- Sprint Retrospective: The team reflects on the sprint and identifies what went well and what could be improved for the next sprint.
These stages are repeated for each sprint, with the aim of delivering a potentially releasable product increment at the end of each sprint.
Key Success Factors for Scrum
In the book More Effective Agile Steve McConnell identifies key Scrum Success Factors.
Here are the key Scrum Success Factors:
- Cross-Functional, Self-Managing Development Team
- Daily Scrum / Standup
- Product Backlog; Refinement
- Product Owner
- Sprint Backlog
- Sprint Planning
- Sprint Retrospective
- Sprint Review
- Scrum Master
If you’re going to do Scrum, you might as well do it right. Or, at least, learn how to do it more effectively.
If you can work at doing these well, then you improve your effectiveness with Scrum.
How To Not Be an Agile Zealot
As Agile continues to evolve, it’s important for teams to stay open to new methodologies and approaches, embracing the ones that best fit their needs and goals.
When it comes to using Agile, I really focus on the mindset, the values, and the principles as the firm foundation.
From there, I figure out with the team which practices will help us achieve our goals and I draw from a broad toolbox of Agile methodologies and techniques.
My philosophy has always been very Bruce Lee-like:
“Absorb what is useful, discard what is useless and add what is specifically your own” ― Bruce Lee
And I’ve always believed in filling my toolbox with a broad set of the tools, so I never fall into the trap of:
“When all you have is a hammer, everything looks like a nail.”
It’s kind of how Charlie Munger (Warren Buffet’s right-hand) uses a toolbox of more than 80+ mental models, to slice and dice any complex problem down to size.
Get the Book
More Effective Agile by Steve McConnell, is the book I recommend for anyone looking to adopt or improve their agile development practices, from developers and project managers to executives and business leaders.
It’s a comprehensive guide to agile development and offers practical insights and tips on how to implement agile practices successfully.
In the book, McConnell explains how agile practices can be applied effectively in different contexts, including small and large teams, distributed teams, and government organizations.
McConnell also emphasizes the importance of continuous improvement and provides practical advice on how to identify and address common problems in agile development, such as poor communication, lack of clarity, and scope creep.
You Might Also Like
Agile vs. Waterfall
Agile Lifecycle Framework
Agile Architecture Framework
Agile Content Development Framework
Agile Performance Engineering Framework
Agile Security Engineering Framework
10 Ways to Make Agile Design More Effective
40 Hour Work Week
Don’t Let the Big Get in the Way of the Small
Don’t Push Agile, Pull It
How To Drive Digital Transformation the Agile Way
Kanban for High-Performance Teams
Leave a Reply