Week 2: COIT20258 Software Engineering
Today's Journey: Discover why 95% of software companies use agile methods and how to write requirements that actually work!
โ What happens when you discover an amazing festival? Construction closes your route? You fall in love with a city?
โ Discover opportunities, adapt to changes, enjoy the journey while still reaching your destination!
Which approach would create a more memorable, valuable experience? Which would handle unexpected changes better? This same principle applies to building software in an uncertain, rapidly changing world.
"Plan โ Build โ Deploy"
"Plan โ Build โ Learn โ Adapt"
Exactly! You naturally use agile principles in learning. You try concepts, get feedback through assignments and discussions, then adjust your understanding. This same iterative learning process works brilliantly for software development.
This seemingly "less efficient" approach often produces better results faster
Find misunderstandings when they're cheap to fix, not after months of development
Discover user needs you never anticipated through regular feedback cycles
Even if requirements change dramatically, you have valuable software to show for your efforts
Pivot when technology, competition, or business conditions evolve during development
Traditional Approach: Create perfect outline, write entire essay start to finish without revising
Agile Approach: Write rough draft of one section, get feedback, revise, move to next section incorporating what you learned
Which produces better essays? The same principle applies to software development.
A single software deployment error caused $440 million in losses in just 45 minutes. The company went bankrupt within days.
Exactly right! Agile practices like continuous integration (catching the dormant code), incremental deployment (testing on one server first), automated testing (preventing dangerous code from reaching production), and continuous monitoring (immediate alerts) would have either prevented this disaster entirely or limited the damage to minutes instead of 45 minutes.
Reality Check: By the time you deploy, the world has changed, customer needs have evolved, and competitors have moved ahead.
โ Adapt to changes quickly!
Click each principle to see real-world examples:
Example: Spotify organizes in small "squads" that self-organize rather than following rigid hierarchies.
Example: Netflix deploys code 1000+ times per day instead of writing lengthy specs.
Example: Instagram's founders personally responded to user feedback and changed features based on real usage.
Example: During COVID-19, Zoom quickly added virtual backgrounds and security features based on changing user needs.
Let's simulate a 2-week sprint for a food delivery app:
Sprint Goal: Enable users to create accounts and discover restaurants
Sprint Duration: 2 weeks | Team Velocity: 2 story points
Two developers, one keyboard
Write tests before writing code
Merge code changes frequently
Constantly improve code quality
Try This: Use pair programming for your next coding assignment - one person types, the other reviews and suggests improvements!
Requirements are:
"As a student, I want to check my grades online so I can track my academic progress."
Written for customers in plain language
Detailed technical specifications
How easy is it to use?
Does it work consistently?
How fast/efficient is it?
How well is data protected?
Correct! This is a non-functional requirement specifically addressing performance - it defines HOW WELL the system should perform, not WHAT it should do.
Quick Tip: If it answers "HOW WELL" or "HOW FAST" or "HOW SECURE" - it's non-functional!
Lives depend on it - need exhaustive testing and documentation
Regulatory approval requires detailed specifications
Legal requirements for fixed scope and price
Complex dependencies require careful planning
Key Insight: Choose your approach based on risk, regulation, and team size. Most projects benefit from a hybrid approach!
Squad Model: Small autonomous teams (8-12 people) that act like mini-startups
DevOps Culture: Deploy code 1000+ times per day with automated testing
Two-Pizza Teams: If you need more than 2 pizzas to feed the team, it's too big
Continuous Deployment: Over-the-air updates deliver new features monthly
1. Apply Scrum principles to your Assignment 1
2. Practice writing clear requirements for your DRS project
3. Join an online agile community (Reddit r/agile)
4. Use these concepts in your other group work!