26
Agile Learns from Open Source Andy Singleton Agile New England November 3, 2011

Agile Learns From Open Source

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Agile Learns From Open Source

Agile Learns fromOpen Source

Andy Singleton

Agile New EnglandNovember 3, 2011

Page 2: Agile Learns From Open Source

Why Learn From Open Source?Some premises of traditional Agile don’t fit

everyoneMany teams are distributed, not co-located Many organizations use contractors,

outsourcers and temporary partnersNot all work can be done by small teams

Open Source projects are effective

With totally distributed teamsOn projects with thousands of contributors

Page 3: Agile Learns From Open Source

Assembla: Inspired by Open SourceStarted Assembla to bring to commercial software development open source ideas related to:Distributed teamsNew development tools and workflowsScalabilityPractices evolved over 20 years

Page 4: Agile Learns From Open Source

Team TopologiesAgile Open Source

Teams of 5-10.Teams clustered for large

releases.Some team members are

employees, some “outsourced.”

A single global team.One person up to thousands.

No distinction between employees and outsourced

members.

People work for one organization. People work for many organizations.

Co-located teams recommended. Always distributed.

Daily meetings, calls or chats.Never meet; communicate by

exchanging codes and comments about code.

Ideally “self managing” peers. Team members coordinate with each other, decide what to do.

Code flow is structured – Hierarchical -pyramid with

maintainers and contributors.People are not managed

Page 5: Agile Learns From Open Source

Learning: Distributed Agile

1. Share a daily or continuous build2. Release on a fixed schedule3. Write it down in tickets4. Daily report and chat at same time every

day5. Watch a team activity stream6. Recruit good people

Page 6: Agile Learns From Open Source

Learning: 6 Things to skipIncreased productivity comes from doing less

work

1. Travel2. Architect in Advance (ALAP controversy)3. Add project managers4. Conference Call5. Interview6. Estimate

Page 7: Agile Learns From Open Source

Agile Projects

Page 8: Agile Learns From Open Source

Project CharacteristicsAgile Open Source

Big projects have multiple small teams, with meetings to resolve

dependencies. Consensus is very desirable.

One benevolent “dictator” or a small number of “maintainers”

make key decisions. Don’t agree? Fork.

Release in iterations with fixed time.

Release when ready. Publish “latest stable build” each day or

week.

Work from a backlog of requests. Work from a backlog of requests.

Plan and estimate each iteration at the beginning. Assemble release at the END!

Page 9: Agile Learns From Open Source

Team LeadershipAgile Open Source

Product owner reports on user requests and represents users.

Users submit requests and bug reports directly.

Product owner may control the budget. Budget is for developer time, not

deliveries.

Scrum master is a “coach.” No coach. How is that related to code?

Peer pressure within the team encourages consistent

performance.

Feedback from the community encourages visible contributions.

Business managers hire and fire.Benevolent dictator or

maintainers control what code goes into the release.

Manage People Manage Code

Page 10: Agile Learns From Open Source

Learning: Budget for variable scopeAgile project scope must be variable so that teams

can work on emerging priorities, deliver on fixed schedule

Biggest problem with agile: People paying those teams expect a fixed scope deliverable for a fixed amount of money

Budget for developer time, not for deliverablesBuild credibility with frequent releasesStart projects faster with less “fuzzy front end” timeRelease on scheduleGet the high-value deliverables you need now, not the

ones you planned for last year

Page 11: Agile Learns From Open Source

Learning: Technical LeadsTechnical lead – Developer who leads the

development team, manages the immediate stack of tasks

Needs some simple management trainingRequired for distributed teams. They

communicate by committing code and designs.

Page 12: Agile Learns From Open Source

Learning: Manage codeOpen source teams manage code, not peopleCode is easier to manage than peopleContribution processes: Patches, fork and

merge, code review systemsCode management is much more scalable.

Take contributions from thousands

Page 13: Agile Learns From Open Source

Tools and LibrariesAgile Open Source

Specialized environments. Some developers may have access to

only part of the code, build processes and tools.

Shared environments. All developers have access to all code and tools and can do a

complete build.

Some tools licensed per seat.Tools never licensed per seat

(because the number of potential part-time contributors is infinite).

May license commercial libraries. Almost never use commercial libraries.

Page 14: Agile Learns From Open Source

Learning: Sharing is scaling All developers should have access to all code

and toolsDocument, maintain, and share developer

setupDocument, maintain, and share build

instructions and environments

Page 15: Agile Learns From Open Source

ScalingAgile Open Source

Divide into small teams. One team made up of many individual code contributors.

Teams send representatives to “Scrum of Scrums” to plan releases and get status of

dependencies. (More teams more meetings.)

Fix it yourself. Team members who break dependencies make

fixes themselves.

Coordinate teams as peer groups.

Code passed up a hierarchy of maintainers, who accept or

reject.

Frequent integration or continuous integration of code.

Regular daily builds and alpha release cycles.

Issue:Planning in advance is hard, and

limits scalability

Issue: Major features can be hidden in personal repositories for a long time before they are

contributed and accepted.

Page 16: Agile Learns From Open Source

Learnings:Sharing enables “fix it yourself”The Mythical Man Month is wrong. The

problem is dependency, not communication.

Code contribution and acceptance is more scalable than release planning

Page 17: Agile Learns From Open Source

Team BuildingAgile Open Source

Hiring and onboarding new team members is a serious job with

high risk.

New team members submit code to prove themselves.

Hire based on interviews – lots of work.

Dictator or maintainers accept or ignore code (and team members).

Learning: Use trials, not interviews

Page 18: Agile Learns From Open Source

Release PlanningAgile Open Source

Priorities set by product owners. Priorities are set by team and user votes.

Team members do estimates, then teams do estimates. No estimates.

Measure progress against estimates.

Measure progress through user feedback on release candidates.

Group selects do-able tasks as a commitment for the iteration.

No commitments. Code and features are included when ready,

or when accepted.

All tasks should be finished in the iteration.

Features which are not ready can be moved to later iterations.

Release at a fixed time. Release when ready.

Page 19: Agile Learns From Open Source

LearningsDo prioritizeDo release on a fixed time cycleDon’t invest in estimates. Difficult,

inaccurate, unusedUse code contribution processes to accept

code near release time

Page 20: Agile Learns From Open Source

Putting it all together: RDDRelease Driven DevelopmentInspired by learning from open sourceMatches what people actually do

commerciallySolves some problems of Scrum. RDD is:

ScalableDistributes wellDoesn’t require estimatingAllows enough time for planning and design

Page 21: Agile Learns From Open Source

Release Driven DevelopmentPlan the release at the end by qualifying and

assembling the pieces that work

REQUEST: Product owners requestBUILD: Contributors build. Kanban style

process that includes design and planning.CONVERGE: Tech leads remove unfinished

features, accept finished featuresSTABILIZE: Same or different team prepares

a release

Page 22: Agile Learns From Open Source

Converge – Constant Contact

Page 23: Agile Learns From Open Source

Stabilize – Google Chrome

Page 24: Agile Learns From Open Source

RDD Versus ScrumLess planning and estimating at the

beginning of iterationsMore planning inside an iterationConverge, don’t burn downSmall teams are not required. You can

accept code from individuals or contributors of any size.

Tech lead is a real leader

Page 25: Agile Learns From Open Source

RDD Versus Kanban, TDDThe build phase is a Kanban process that includes all

the steps for planning, design, build, test, and stageKanban aims for continual release, but this may not be

practical without a stabilization phase

Use Test Driven Development in the build phase to get more tests, reduce release testing and cycle time. This will shorten cycle time but maybe not increase release quality. It’s developer testing, not release testing

RELEASE Driven Development needs to focus on actual release testing and quality

Page 26: Agile Learns From Open Source

RDD Versus Open SourceFixed time cycles, not release when readyDaily and weekly schedules for team

communicationsFixed schedule for qualifying a release

candidate

Switches in the code allow turning features off during stabilization phase