Ignite Columbus 2 – Agile Software Development

20
Agile Software Development Brian Link [email protected]

Transcript of Ignite Columbus 2 – Agile Software Development

Page 1: Ignite Columbus 2 – Agile Software Development

Agile Software Development

Brian [email protected]

Page 2: Ignite Columbus 2 – Agile Software Development

What is Agile? Not this:

http://www.flickr.com/photos/juniorvelo/

Page 3: Ignite Columbus 2 – Agile Software Development

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?)

Page 4: Ignite Columbus 2 – Agile Software Development

Agile’s more like this:

๏ Communication

๏ Simplicity

๏ Feedback

๏ Courage

๏ Respect

Page 5: Ignite Columbus 2 – Agile Software Development

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

Page 6: Ignite Columbus 2 – Agile Software Development

And sort of like this:

Page 7: Ignite Columbus 2 – Agile Software Development

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

Page 8: Ignite Columbus 2 – Agile Software Development

Benefits of Using Agile๏ Focus on building business value

๏ Micro management without micromanagement

๏ Issues uncovered in real-time

Page 9: Ignite Columbus 2 – Agile Software Development

Benefits of Using Agile๏ Control deadlines by shifting features to

later sprints

๏ Partnership between tech and business

๏ Transparent status updates daily

Page 10: Ignite Columbus 2 – Agile Software Development

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

Page 11: Ignite Columbus 2 – Agile Software Development

Scrum Process

Prioritized Estimated, Assigned

Page 12: Ignite Columbus 2 – Agile Software Development

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

Page 13: Ignite Columbus 2 – Agile Software Development

Scrum - Roles๏ Pigs - Product Owner- Scrum Master- Dev Team

๏ Chickens- Users- Stakeholders/Sponsors- Managers

๏ Scrum / Daily Standup- What did you do yesterday, today, issues?

Page 14: Ignite Columbus 2 – Agile Software Development
Page 15: Ignite Columbus 2 – Agile Software Development

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”

Page 16: Ignite Columbus 2 – Agile Software Development

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.

Page 17: Ignite Columbus 2 – Agile Software Development

Digg Team Structure๏ Six functionally separated senior teams

๏ Two App/Feature teams, Core/Infra, Maintenance, Admin/Security/Ads, Architecture/Mgt

Page 18: Ignite Columbus 2 – Agile Software Development

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

Page 19: Ignite Columbus 2 – Agile Software Development

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

Page 20: Ignite Columbus 2 – Agile Software Development

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