200 likes | 237 Views
Agile Software Development. Brian Link brian@brianlink.me. What is Agile? Not this:. http://www.flickr.com/photos/juniorvelo/. Waterfall Sucked. Million dollar design documents Irrelevant product when done after 12 mos Focus on deliverables and process – not people and customer
E N D
Agile Software Development Brian Link brian@brianlink.me
What is Agile? Not this: http://www.flickr.com/photos/juniorvelo/
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 • http://agilemanifesto.org
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 Prioritized Estimated, 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