agile software development brian link [email protected]
TRANSCRIPT
Agile Software Development
Brian [email protected]
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
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
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