1.4 Project management models (Waterfall vs Agile)¶
Why it matters¶
Imagine two different ways to build a treehouse: you could plan everything perfectly upfront and build it step-by-step (Waterfall), or you could build a basic platform first, then add features bit by bit based on what works (Agile). Both approaches have their place in software development, and choosing the right one can make the difference between project success and failure.
Understanding these models helps you pick the best approach for your projects and work effectively in team environments where these methodologies are used.
What you’ll learn¶
-
How Waterfall and Agile approaches differ in execution
-
Pros and cons of each methodology
-
When to use each model for classroom projects
-
How team size and project requirements affect methodology choice
Waterfall model¶
The Waterfall model follows a linear, sequential approach where each phase must be completed before moving to the next one. Think of it like a waterfall - water flows down from one level to the next and doesn’t flow backwards.
How Waterfall works¶
Phase-by-phase execution:
-
Requirements Analysis - Gather ALL requirements upfront and document them completely
-
System Design - Create detailed architecture and design documents
-
Implementation - Write all the code according to the design
-
Testing - Test the complete system thoroughly
-
Deployment - Release the finished product to users
-
Maintenance - Fix bugs and add minor enhancements
Key characteristics:
-
Sequential phases - Each phase must finish before the next begins
-
Extensive documentation - Detailed plans and specifications at each stage
-
Limited client involvement - Most client interaction happens at the beginning and end
-
Change resistance - Going back to earlier phases is difficult and expensive
Waterfall pros and cons¶
Advantages:
-
Clear structure - Everyone knows what phase they’re in and what comes next
-
Predictable timeline - Easy to estimate completion dates
-
Comprehensive documentation - Detailed records of all decisions and designs
-
Good for stable requirements - Works well when you know exactly what you need to build
Disadvantages:
-
Inflexible - Hard to change requirements once development starts
-
Late feedback - Users don’t see working software until the very end
-
Risk of building wrong thing - Requirements might be misunderstood or change
-
Long development cycles - Can take months or years before users see results
When to use Waterfall¶
Waterfall works best for projects with:
-
Well-defined, stable requirements that won’t change
-
Regulatory compliance needs requiring extensive documentation
-
Large, complex systems where integration must be carefully planned
-
Experienced teams working on familiar technology
-
Fixed budgets and deadlines where scope is clearly defined
Classroom example: Creating a scientific calculator with specific mathematical functions where requirements are clearly defined by curriculum standards.
Agile model¶
Agile takes an iterative, flexible approach where software is built in small increments with frequent feedback and adaptation. Think of it like sculpting - you start with a rough shape and gradually refine it based on what you see.
How Agile works¶
Sprint-based execution:
-
Sprint Planning - Choose features to build in the next 1-4 weeks
-
Daily Standups - Quick team check-ins on progress and blockers
-
Development - Build, test, and integrate features continuously
-
Sprint Review - Demo working software to stakeholders
-
Sprint Retrospective - Reflect on what went well and what to improve
-
Repeat - Start the next sprint with new priorities
Key characteristics:
-
Short iterations - Working software delivered every 1-4 weeks
-
Continuous collaboration - Regular communication with users and stakeholders
-
Adaptability - Requirements and priorities can change between sprints
-
Working software focus - Emphasis on functioning code over extensive documentation
Agile pros and cons¶
Advantages:
-
Flexible and adaptive - Easy to change direction based on feedback
-
Early and frequent delivery - Users see working software quickly
-
Reduced risk - Problems are identified and fixed early
-
High collaboration - Constant communication with users and team members
-
Continuous improvement - Team processes get better with each sprint
Disadvantages:
-
Less predictable - Harder to estimate final timeline and scope
-
Requires discipline - Teams must maintain good practices without heavy process
-
Documentation gaps - May lack comprehensive documentation
-
Scope creep - Flexibility can lead to endless feature additions
-
Needs experienced team - Requires self-organizing, skilled developers
When to use Agile¶
Agile works best for projects with:
-
Evolving requirements where user needs might change
-
Innovation projects exploring new ideas or technologies
-
Small, cross-functional teams that can work closely together
-
Frequent user feedback opportunities
-
Competitive markets requiring rapid time-to-market
Classroom example: Building a student portal where features can be prioritized and refined based on actual student feedback.
Choosing the right model for classroom projects¶
Consider project characteristics¶
Use Waterfall when:
-
Assignment requirements are clearly specified and won’t change
-
You’re implementing well-known algorithms or data structures
-
The project has a fixed deadline and scope (like exam projects)
-
You’re working alone or in a large group with formal roles
Use Agile when:
-
You’re building something creative or innovative
-
Requirements might evolve as you learn more about the problem
-
You can get regular feedback from intended users
-
You’re working in a small team (2-4 people) with good communication
Hybrid approaches¶
Many real projects combine elements of both:
Agile with Waterfall phases: Use Waterfall for initial planning and requirements, then Agile for development sprints
Waterfall with Agile feedback: Follow Waterfall structure but include regular review points for stakeholder feedback
Prototyping first: Build a quick Agile prototype to validate requirements, then use Waterfall for the full implementation
Practical tips for classroom projects¶
For individual projects:
-
Start with clear requirements (Waterfall planning)
-
Build in small, testable pieces (Agile development)
-
Get feedback from classmates or teachers regularly
-
Document your final solution well
For team projects:
-
Hold a planning meeting to define overall scope (Waterfall)
-
Break work into weekly sprints with specific goals (Agile)
-
Have daily check-ins via messaging or quick meetings
-
Demo progress to each other every week
Real-world examples¶
Waterfall success story¶
NASA Apollo program - Building spacecraft requires extensive planning, testing, and documentation. Changes during development would be extremely costly and dangerous.
Agile success story¶
Spotify - Music streaming features evolve rapidly based on user behavior and market competition. Quick iterations allow them to test new ideas and adapt quickly.
When projects fail¶
Waterfall failure: UK’s NHS patient record system took years to develop with minimal user input, ultimately failing because requirements had changed and users rejected the final system.
Agile failure: Some startups get stuck in “feature creep” where they keep adding new features without ever finishing core functionality.
Practice exercises¶
Foundation practice¶
Exercise 1: Model identification
For each project scenario, decide whether Waterfall or Agile would be more appropriate and explain why:
-
Banking ATM software with strict security requirements and regulatory compliance
-
Mobile game for teenagers with social features
-
Grade calculation system for your school with specific marking policies
-
Social media app competing with existing platforms
Sample solution
-
Banking ATM - Waterfall: Security requirements are well-defined, regulatory compliance demands extensive documentation, and changes are extremely costly due to security implications.
-
Mobile game - Agile: Target audience preferences change quickly, social features need user feedback to succeed, and competitive market requires rapid adaptation.
-
Grade calculation - Waterfall: School marking policies are clearly defined, requirements are stable, and accuracy is more important than rapid iteration.
-
Social media app - Agile: Highly competitive market, user preferences evolve rapidly, need to test features with real users to see what works.
Exercise 2: Planning your approach
You’re assigned a semester-long project to create a “Student Study Tracker” that helps students log study hours and track progress toward goals.
Tasks:
-
List the advantages of using Waterfall for this project
-
List the advantages of using Agile for this project
-
Recommend an approach and justify your choice
-
Outline how you would organize the work using your chosen methodology
Sample solution
Waterfall advantages:
-
Clear semester timeline with defined milestones
-
Can plan all features upfront and estimate workload
-
Professor can evaluate against predetermined requirements
-
Good documentation for final project submission
Agile advantages:
-
Can test with actual students and get feedback
-
Features can be prioritized based on what students actually need
-
Working prototype available early for demonstration
-
Can adapt if initial ideas don’t work well
Recommendation: Hybrid approach
-
Use Waterfall structure for major milestones (requirements, design, final delivery)
-
Use Agile development within each milestone (2-week sprints)
-
Get feedback from 3-5 student testers every 2 weeks
-
Maintain good documentation throughout for final submission
Work organization:
-
Week 1-2: Requirements gathering and initial design (Waterfall)
-
Weeks 3-14: Six 2-week sprints building features incrementally (Agile)
-
Week 15-16: Final integration, documentation, and presentation (Waterfall)
Advanced practice¶
Exercise 3: Methodology comparison
Compare how the Grade Calculator project from Section 1.1 would be handled differently under Waterfall vs Agile approaches.
Consider:
-
Timeline and phases
-
Documentation requirements
-
Testing approach
-
Stakeholder involvement
-
Change management
Comprehensive solution
Waterfall approach:
Timeline:
-
Week 1: Complete requirements gathering and documentation
-
Week 2: Detailed design and architecture planning
-
Week 3: Implementation of all functions
-
Week 4: Comprehensive testing and bug fixes
-
Week 5: Deployment and user training
Documentation: Detailed requirements document, design specifications, test plans, user manual
Testing: Comprehensive test suite developed after implementation, formal test execution phase
Stakeholder involvement: Heavy involvement in week 1, minimal until week 5 demonstration
Change management: Changes require formal approval and may delay project timeline
Agile approach:
Timeline:
-
Sprint 1: Basic input validation and average calculation
-
Sprint 2: Error handling and user interface improvements
-
Sprint 3: Additional features based on user feedback
-
Sprint 4: Polish and final enhancements
Documentation: Lightweight user stories, minimal design docs, focus on working code
Testing: Test-driven development, continuous testing throughout each sprint
Stakeholder involvement: Regular demos every 1-2 weeks, continuous feedback incorporation
Change management: Changes welcomed and incorporated in next sprint planning
Trade-offs:
-
Waterfall provides more predictability and documentation
-
Agile delivers working software faster and adapts to changing needs
-
For a simple calculator, Waterfall might be overkill but provides good learning structure
-
Agile would be better if requirements might evolve (e.g., adding weighted grades, different grading scales)
Recap¶
Choose your project management approach based on your project’s needs:
Waterfall works best when:
-
Requirements are clear and stable
-
Extensive documentation is needed
-
Timeline and budget are fixed
-
Working with large teams or formal processes
Agile works best when:
-
Requirements might change or evolve
-
Rapid feedback and iteration are valuable
-
Small, collaborative teams can work closely together
-
Innovation and experimentation are important
For classroom projects: Consider a hybrid approach that combines Waterfall planning with Agile development sprints. This gives you structure while maintaining flexibility to adapt and improve.
Remember: The methodology is a tool to help you succeed, not a rigid rule. Adapt it to fit your project’s specific needs and constraints.