Agile Software Development Brian Link
What is Agile? Not this:
Waterfall Sucked ๏ Million dollar design documents ๏ Irrelevant product when done after 12 mos ๏ Focus on deliverables and process – not people and customer ๏ Big design up front (BDUF) is good and the whole fix bugs upstream thing… ๏ But without iterative and adaptive processes to incorporate change, you must have a well defined project up front (impossible?)
Agile’s more like this: ๏ Communication ๏ Simplicity ๏ Feedback ๏ Courage ๏ Respect
Agile Manifesto ๏ Satisfy the customer. Build value quickly ๏ Be adept at accepting, adopting change ๏ Crank out code releases frequently ๏ Focus on relevant business goals ๏ Embrace interactions, not deliverables ๏ Focus on quality, working code ๏
And sort of like this:
Agile is not just one thing ๏ It’s a collection of methodologies and strategies ๏ People often pull from various things to varying degrees and make their own - Scrum - Extreme Programming (XP) - Pair Programming - Test Driven Development - Lean Software Development
Benefits of Using Agile ๏ Focus on building business value ๏ Micro management without micromanagement ๏ Issues uncovered in real-time
Benefits of Using Agile ๏ Control deadlines by shifting features to later sprints ๏ Partnership between tech and business ๏ Transparent status updates daily
It’s not just winging it ๏ Cowboy coding is entirely different ๏ This is just-in-time design and delivery ๏ It’s efficient, not stupid ๏ Principles of Lean Software - Honda production line: nothing wasted
Scrum Process PrioritizedEstimated, Assigned
Daily Tracking & Burndown ๏ During Scrum, progress on tasks are tracked then reported publicly ๏ Bite-sized features easier to estimate ๏ Sprint deadlines enforced by controlling backlog list (add or remove) ๏ Trac + plugin can manage tasks, estimates and burndown charts
Scrum - Roles ๏ Pigs - Product Owner - Scrum Master - Dev Team ๏ Chickens - Users - Stakeholders/Sponsors - Managers ๏ Scrum / Daily Standup - What did you do yesterday, today, issues?
Test Driven Development ๏ Write tests as early as possible - QA helps define/ensure functionality features ๏ Use a tool to track the tests - PHPUnit, Selenium ๏ Continuous Integration Environment - Automate integration testing - Cruise Control ๏ Testing done all the time - No big “OMG, we have to test this thing now”
Digg’s Process Evolved ๏ Started with 3 developers, chaos ๏ Gradually added more to team, added some process (source control!, design specs, estimated task list) ๏ Doubled to 8-10, formed three virtual teams - Big projects, small projects, infrastructure ๏ After 12-14, embraced Agile much more consistently – multiple daily scrums, etc.
Digg Team Structure ๏ Six functionally separated senior teams ๏ Two App/Feature teams, Core/Infra, Maintenance, Admin/Security/Ads, Architecture/Mgt
Digg Product Management ๏ MRD - Marketing Req’ts doc - Measurable goals, intentions, reasons ๏ PRD - Product Req’ts doc - Screens + features ๏ Portfolio prioritization - Every other week cross functional meeting ๏ Feature and scope management
Digg Sample Timeline ๏ Four week cycle ๏ Lots of discussion before project is “approved” and started by dev team ๏ Week one is overlap with previous cycle ๏ Working out estimates, assignments, design ๏ Week two-three heavy dev work ๏ Week four – dry runs to launch, testing
Try it, invent your own ๏ Proceed with some forethought ๏ Have someone who knows what they’re doing guide the process ๏ Take one project in your portfolio with a small team and experiment ๏ Feedback loop is critical at the end - Analyze what worked and what didn’t and adjust