Below you’ll find an outline of the Fundamentals of Agile that I’ve compiled from my own experiences as well as other sources. It’s a valuable primer for someone who is new to Agile and an essential refresher for those who are familiar with the process. Next week I’ll post Part Two which will relate to forming the Agile teams and an in-depth comparison of Agile vs. Waterfall. Share your feedback with me in the comments or connect with me on Twitter or LinkedIn.
Understand the Fundamentals of Agile
Agile Essentials Summarized
What is Agile?
- Delivering value on Priority
- Being Agile means the business has adopted a different approach to organizing the work of software development.
- Agile is not a style of project management
- Agile is framework for software production, a set of guiding principles for building software iteratively
What is Scrum?
- Scrum is one method within the Agile Framework
- Scrum is a set of rules that speaks directly to project management that support an Agile Methodology (Typically XP)
- Self-organizing teams
- Product/Project progresses in a series of “sprints”
- Requirements are captured as items in a list of “product backlog”
- Uses adaptive rules to create an agile environment for delivering projects
Why utilize Agile when traditional project management methodologies have been used for over 30 years?
- Project Priorities Change
- Learning and responding to customer needs is critical
- Product Owners need to focus on the customer and the market
- Your “star player” may be gone tomorrow
- Stay competitive by discovering trouble spots
The Agile Manifesto
- The Agile Manifesto was written in February of 2001, at a summit of seventeen independent-minded practitioners of several programming methodologies. The participants didn’t agree about much, but they found consensus around four main values.
The 12 Agile Principles
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity–the art of maximizing the amount of work not done–is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Defining Scope on an Agile Project
- Project Charter
- Organizational Process Assets
2. Tools and Techniques
- Expert Judgment
- Product Analysis
- Alternatives Identification
- Facilitated Workshops
- Project Scope Statement
- Project Document Updates
The Basics of Iterative Planning and Delivery
1. Planning Meeting
2. Feature Selection
3. Task Planning
4. Iteration Adjustments
Benefits of Utilizing an Agile Approach for Software Development
- Focusing on Business Value (Allow client to determine Feature priority)
- Stakeholder Engagement (before, during and after a sprint)
- Allows for Change (Frequent Refinement of Product Backlog)
- Transparency (Consumer involvement)
- Early and Predictable Delivery (Fixed Iterations speed delivery of new Features)
- Predictable Cost and Schedule (Time-boxed, fixed iterations limit work that can be performed by the team)
- Focusing on Customers (User Stories to define Features)
- Improving Quality (Break down a project into manageable parts)
How do we move past Change Resistance
- Acknowledge that people are afraid of change
- Ensure Senior leadership buy-in and support
- Empower the workforce
- Communicate the vision
- Remove Impediments for teams
- Plan for attainable goals
- Be able to tie these new behaviors back to business benefit
- Establish a sense of urgency
What is a Self-Organizing Team
- Self Organizing team is a team that is led and organized by it’s members, to attain goals and objectives specified by management within the constraints of its environment.
- Business Analyst, Architects, Designer, Business Owner, Tester, Developer, Scrum Master all get together for a set of Features that they manage.
- A group of motivated individuals, who work together toward a common goal, have the ability and authority to make decisions and readily adapt to changing demands.
- Assignment of work to themselves
- Manage their own work towards working shippable software
- Require coaching
- Team Collaboration
- Understanding Requirements
- Continuously enhance their own skills
Agile Self Organizing Team is:
- Autonomous: No single central decision-making authority. Control is distributed collectively to the team.
- Adaptive: Team dynamically adjusts as needed across roles, functional specialties, and other boundaries, in order to solve their own problems and improve their own performance.
- Accountable: Team collectively shares responsibility for results, and members hold each other accountable for outcomes
Self-Organizing team does not mean
- Team gets to decide what goal they pursue (or)
- Decide who is on the team
What are the Agile Planning Onion Layers