agile software development brian link [email protected]

20
Agile Software Development Brian Link brian@brianlink me

Upload: william-oliver

Post on 27-Dec-2015

226 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Agile Software Development Brian Link brian@brianlink.me

Agile Software Development

Brian [email protected]

Page 2: Agile Software Development Brian Link brian@brianlink.me

What is Agile? Not this:

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

Page 3: Agile Software Development Brian Link brian@brianlink.me

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: Agile Software Development Brian Link brian@brianlink.me

Agile’s more like this:

๏ Communication

๏ Simplicity

๏ Feedback

๏ Courage

๏ Respect

Page 5: Agile Software Development Brian Link brian@brianlink.me

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: Agile Software Development Brian Link brian@brianlink.me

And sort of like this:

Page 7: Agile Software Development Brian Link brian@brianlink.me

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: Agile Software Development Brian Link brian@brianlink.me

Benefits of Using Agile๏ Focus on building business value

๏ Micro management without micromanagement

๏ Issues uncovered in real-time

Page 9: Agile Software Development Brian Link brian@brianlink.me

Benefits of Using Agile๏ Control deadlines by shifting features to

later sprints

๏ Partnership between tech and business

๏ Transparent status updates daily

Page 10: Agile Software Development Brian Link brian@brianlink.me

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: Agile Software Development Brian Link brian@brianlink.me

Scrum Process

Prioritized Estimated, Assigned

Page 12: Agile Software Development Brian Link brian@brianlink.me

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: Agile Software Development Brian Link brian@brianlink.me

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: Agile Software Development Brian Link brian@brianlink.me
Page 15: Agile Software Development Brian Link brian@brianlink.me

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: Agile Software Development Brian Link brian@brianlink.me

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: Agile Software Development Brian Link brian@brianlink.me

Digg Team Structure๏ Six functionally separated senior teams

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

Page 18: Agile Software Development Brian Link brian@brianlink.me

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: Agile Software Development Brian Link brian@brianlink.me

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: Agile Software Development Brian Link brian@brianlink.me

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