🏃♂️Agile Project Management Unit 1 – Intro to Agile Project Management
Agile project management revolutionizes software development by prioritizing flexibility, collaboration, and rapid delivery. It emphasizes iterative progress, customer satisfaction, and adaptability to change, contrasting sharply with traditional linear approaches.
Key principles include continuous delivery, welcoming changing requirements, and fostering close teamwork. Agile frameworks like Scrum and Kanban, along with specific roles and planning techniques, help teams implement these values effectively in their projects.
Agile is an iterative approach to project management and software development that helps teams deliver value to customers faster and with fewer headaches
Focuses on delivering working software incrementally rather than all at once at the end of a project
Emphasizes collaboration, flexibility, and rapid response to change over following a rigid, predefined plan
Prioritizes individuals and interactions, working software, customer collaboration, and responding to change
Aims to deliver high-quality software that meets customer needs through adaptive planning, early delivery, and continuous improvement
Encourages face-to-face communication and collaboration among team members and stakeholders
Promotes sustainable development practices that enable teams to maintain a constant pace indefinitely
Key Agile Principles and Values
Customer satisfaction through early and continuous delivery of valuable software is a top priority
Welcome changing requirements, even late in development, and 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 for 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, enabling sponsors, developers, and users 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
Agile vs Traditional Project Management
Agile is iterative and incremental, while traditional project management (waterfall) is linear and sequential
Agile emphasizes flexibility and adaptability, while traditional project management follows a fixed plan
Agile delivers working software in short iterations (sprints), while traditional project management delivers the entire project at the end
Agile involves close collaboration between the development team and the customer, while traditional project management often keeps them separate
Agile embraces change and allows for requirements to evolve, while traditional project management aims to avoid changes to the initial plan
Agile focuses on delivering value to the customer, while traditional project management focuses on delivering the project on time, within budget, and to the original specifications
Agile relies on self-organizing, cross-functional teams, while traditional project management has a hierarchical structure with defined roles and responsibilities
Popular Agile Frameworks
Scrum
Iterative and incremental framework for managing complex projects
Consists of roles (Product Owner, Scrum Master, Development Team), events (Sprint Planning, Daily Scrum, Sprint Review, Sprint Retrospective), and artifacts (Product Backlog, Sprint Backlog, Increment)
Kanban
Visual system for managing work as it moves through a process
Focuses on visualizing workflow, limiting work in progress, managing flow, making process policies explicit, and continuously improving
Extreme Programming (XP)
Emphasizes frequent releases, continuous integration, pair programming, test-driven development, and close customer collaboration
Lean Software Development
Applies lean manufacturing principles to software development
Focuses on eliminating waste, amplifying learning, deciding as late as possible, delivering as fast as possible, empowering the team, building integrity, and seeing the whole
Crystal
Family of lightweight, adaptable methodologies that emphasize people, communication, and flexibility
Includes Crystal Clear, Crystal Yellow, Crystal Orange, and others, based on project size and criticality
Roles in Agile Teams
Product Owner
Represents the stakeholders and is responsible for maximizing the value of the product
Defines and prioritizes the Product Backlog, ensures that the team understands the items in the backlog, and makes the final decision on what gets built
Scrum Master
Facilitates the Scrum process and helps the team adhere to Scrum theory, practices, and rules
Removes impediments to the team's progress, coaches the team on self-organization and cross-functionality, and shields the team from external interferences
Development Team
Consists of professionals who do the work of delivering a potentially releasable Increment of "Done" product at the end of each Sprint
Self-organizing, cross-functional, and accountable for delivering the product
Stakeholders
Individuals or groups who have an interest in the project's outcome (customers, users, sponsors, executives, etc.)
Provide input, feedback, and support throughout the project
Agile Planning and Estimation Techniques
User Stories
Short, simple descriptions of a feature told from the perspective of the person who desires the new capability, usually a user or customer
Typically follow the format: "As a [type of user], I want [some goal] so that [some reason]"
Story Points
Relative unit of measure used to estimate the overall effort required to fully implement a product backlog item or any other piece of work
Assigned based on factors such as complexity, uncertainty, and effort, rather than actual time
Planning Poker
Consensus-based estimation technique used to estimate the relative size of user stories or tasks
Each team member has a deck of cards with values (usually Fibonacci sequence) and simultaneously selects a card representing their estimate for a given item
Velocity
Measure of the amount of work a team can complete in a single sprint, usually calculated in story points
Used to predict how much work the team can complete in future sprints and to plan accordingly
Release Planning
Process of creating a high-level plan that defines which features will be delivered in each release and when those releases will occur
Considers factors such as business priorities, dependencies, team capacity, and technical constraints
Agile Meetings and Ceremonies
Sprint Planning
Meeting at the beginning of each sprint where the team collaborates to define the sprint goal and select items from the product backlog to work on during the sprint
Daily Scrum (Stand-up)
Short, time-boxed meeting (usually 15 minutes) held every day at the same time and place
Each team member answers three questions: What did I do yesterday? What will I do today? Are there any impediments in my way?
Sprint Review
Meeting at the end of each sprint where the team demonstrates the work they have completed to stakeholders and gathers feedback
Sprint Retrospective
Meeting at the end of each sprint where the team reflects on their process, identifies areas for improvement, and creates a plan to implement those improvements in the next sprint
Backlog Refinement (Grooming)
Ongoing process where the team collaborates with the Product Owner to review, refine, and prioritize items in the product backlog
Helps ensure that the backlog remains up-to-date, relevant, and understood by all team members
Tools and Software for Agile Projects
Jira
Popular issue tracking and project management tool that supports agile methodologies like Scrum and Kanban
Provides features for creating and managing user stories, sprints, backlogs, and reports
Trello
Visual collaboration tool that uses boards, lists, and cards to organize and prioritize projects
Suitable for teams using Kanban or other agile methodologies
Asana
Web and mobile application designed to help teams organize, track, and manage their work
Supports agile practices through features like task lists, Kanban boards, and custom fields
Slack
Cloud-based team collaboration and communication platform
Integrates with many agile project management tools and supports real-time messaging, file sharing, and video conferencing
GitHub
Web-based version control and collaboration platform for software development
Supports agile practices through features like issue tracking, pull requests, and continuous integration/continuous deployment (CI/CD)
Zoom
Video conferencing and online meeting platform
Facilitates remote collaboration and communication for agile teams, especially during events like daily stand-ups, sprint planning, and retrospectives