techniques to (no)SQL, CSS, and JavaScript tips. ⢠Focus matters: Your pair keeps you paying attention, and can smooth
Agile, The Pivotal Way 20 years of experience Condensed into some things that work for us
Ian McFarland, VP Technology
[email protected]
Pivotal Labs Snapshot • Founded 1989 • Agile since mid ‘90s • Rails since 2006 • Approximately 100 people, and growing • HQ in San Francisco • Regional offices in New York, Boulder, and Singapore
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
A little quieter than we used to be
A Typical Day at Pivotal Labs
...starts with breakfast Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Followed by Standup Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Followed by Standup Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Stand-Up for 50 People? Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
The Large Standup Covers Things of Global Utility • Help • Anything anyone needs help on • Interesting • Anything of global interest or utility • New techniques, interesting gotchas, events • Introductions • Anyone new to the office • Stretch
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
A whiteboard helps capture Helps and Interestings
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
It’s a place for people to jot down topics so they’re not forgotten
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
An information radiator shows who’s on what project this week.
The big standup is followed by Team Standups Title
• Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
The big standup is followed by Team Standups Title
• Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
...and then we start pairing
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
...and then we start pairing
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Pivot ☞ Client ☞
Product Owners are Close at Hand Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Build monitors...
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
...are visible...
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
...and ubiquitous.
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Wednesday Tech Talks
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
...which we videotape
Title ...and
share...
• Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
http://pivotallabs.com/talks
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
email station
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
...and people go home at 6.
A Typical Day at Pivotal Labs • 8:45 • 9:07 • 9:15-ish • Noonish • 6:00
Breakfast Standup Team Standups Lunch End of the work day Pivot Pong PRN
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
The Theory Behind Breakfast
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Pivot Pong
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
[email protected]
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
We try to remove impediments to productivity
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
...and foster learning...
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Productive Workspace • Open Workspace • Colocated Developers and Customer • Consistent Pairing Stations • One big screen, 2 keyboards (we use 27” and 24” iMacs) • No laptops on the floor • Visible build monitors • Everyone can see the backlog in Tracker • Breakfast, snacks and beverages on hand • Space for interruptions away from the workspace
Standard Development Workstation • Keeping tools consistent across machines is critical to high-rotation pairing.
• People don’t have their own machines, but sit where their project is.
• Machines are reimaged after each project • ASR FTW! • A brand new machine is ready to use within 30 minutes of it showing up on the floor.
Why Sustainability Matters (for bean counters) • Predictable delivery is at a premium • Tired developers introduce bugs • Developer retention is important! • Good developers are never easy to come by • Ramp-up is expensive • Team changes expose companies to risk • Crunch time buys short-term productivity at longterm cost
Why Developer Happiness is Important to the Business • Leading Indicator: Developer Happiness strongly correlated to Developer Productivity Grunt Work = Money Wasted
• Happy workers are more focused
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Multiple Locations
The New York Office Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Standup Agenda Whiteboard
Pairing Stations Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Tech Talks
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Tech Talks
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Email Stations
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Community Events
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Community Events
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Community Events
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Community Events
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Community Events
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Community Events
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Boulder, Colorado
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
茶
Singapore
Singapore yeowatzup
grongar
Rotations Ralph Hockens
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Simple Telepresence
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Meeting rooms all set up for teleconferencing
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Robots! We have Robots!
Cheap and Cheerful Telepresence • Mac Mini • HDTV • iSight • Snowball Mic • Skype or iChat • Total: about $1,500
Remote Pairing
What do you mean, Agile? Ralph Hockens
Manifesto for Agile Software Development We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
Title
Individuals and interactions over processes and tools Goes Here documentation • Bulleted Working software Text over comprehensive Customer collaboration overHere contract negotiation Text Goes • Bulleted Responding to change over following a plan
• Bulleted Text Goes Here That is, while there is value in the items on Bulleted Text Goes • right, the we value the items on Here the left more. • Bulleted Text Goes Here
Kent Beck
James Grenning
Robert C. Martin
Mike Beedle
Jim Highsmith
Steve Mellor
Arie van Bennekum
Andrew Hunt
Ken Schwaber
Alistair Cockburn
Ron Jeffries
Jeff Sutherland
Ward Cunningham
Jon Kern
Dave Thomas
Martin Fowler
Brian Marick © 2001, the above authors this declaration may be freely copied in any form, but only in its entirety through this notice.
That’s nice... How do we do that? • Business Driven: Requirements come from business stakeholders • Iterative Development, with Short Iterations • Test/Behavior Driven Development • Continuous Integration, Continuous Releasability • Pair Programming • Productive Work Environment
Business Driven • Requirements come from business stakeholders • One designated Customer is empowered to make decisions • Priorities are set by that Customer • The Customer can change priorities on anything unstarted • The Customer accepts the work in fine-grained increments • The Customer is intimately aware of progress, and projected completion dates
• Closing the feedback loop is critical
Accept
Reject
TDD/BDD • Good tests tell us when we’ve met the customer requirements • They tell us when we’ve broken behavior that used to work • They tell us when we haven’t, so we can refactor with impunity • Writing tests first keeps us from overdesigning/doing things we don’t need to do
• Writing tests first forces cleaner API design, because we have to call into our own code in order to write it
• It leads to looser coupling and encourages higher cohesion • Good developer testing keeps the cost of change constant
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Test-Drive Everything! • Rails, Ruby, of course • JavaScript too! • Mobile too!
Iterative Development • Because the customer is seeing the work on a daily basis, the feedback cycle is short
• This keeps the cost of change low, by preventing unnecessary work
• It allows for new insights to be gained from the work we’ve already completed, and for those insights to be incorporated into our new code
• Iterations are as short as we can make them
Continuous Integration, Continuous Releasability • Knowing when things break is critical to reducing the cost of fixing defects.
• Keep the build status visible, so you can fix it quickly • A broken build is a ‘stop the line’ event • Continuous releasability does not mean you release every day. • It just means you can. • Releases can be distracting, so weigh the cost of a release against the value it adds to the business.
Pair Programming • Do we really have to pair? • Isn’t Pairing Slower? • I don’t like pairing. • I’m shy. • I don’t want to look stupid.
Do we really have to pair?
•Yes, you do. • ...but only if you want to be efficient • This is one of the least-used practices, and one of the most important.
• And stop whining! You do it already when you get stuck on something.
What do developers really do all day? • Coding • Reading web pages about coding • Stuck on some problem, unsure of: • The right approach • What the API for that object was • How SQL indexes are selected • How bind(this) works in JavaScript • Checking email • Checking news, stock price, staring blankly into space
How does pairing help? • 80/20 rule: You don’t get stuck, so you spend your time on the most interesting part of the code.
• As you eliminate the grunt work (thanks Rails) more of the work requires real thinking, and design
• You talk through design, and refine before you code. • You learn from your pair, everything from design and testing techniques to (no)SQL, CSS, and JavaScript tips.
• Focus matters: Your pair keeps you paying attention, and can smooth over disruptions
How does pairing help? • More developers in a smaller space • How many truly independent fronts are there in your codebase on which you can make progress?
• New team members: You’re really productive the first hour, not marginally productive starting two weeks in
• They have a local sherpa to tell them how the code they’re working on actually works.
• Knowledge Silos: Your bus number approaches ∞
Pairing Combinations
Pairing Combinations
Pairing Combinations
Pairing Combinations
? ?
?
?
? ?
?
?
Pairing Combinations
? ?
?
?
? ?
?
?
Pairing Combinations
Team Size • A single pair has zero communication overhead • 2-3 pairs have almost no communication overhead, as long as pairs are rotated
• 4-5 pairs require a whole additional FTE for coordination
• Above 5 pairs, projects really need to be subdivided into separate efforts
• And you have to have enough separable work so that the additional people are adding value
Anchors ell brown
All but the anchor can swap out whenever
Specialization MC4 Army
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Design
Enough Design zengame
Agile is not... Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
...a religion.
...but a tool that works well Terinea IT Support
...and that needs to be renewed continuously. donielle
Retrospectives
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
The Client Engagement
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Family andresmh
pedrosimoes7
Family jronaldlee
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
The Agile Inception
Ramp up or down as needed alexliivet
TheTruthAbout...
Client Engagement Model • Get their Product Owner in our space • Start as the whole team, or work with their existing team
• Help them hire, replacing Pivots as we go • At the end of the project, they know our practices, and their own code base
Business Terms
• Net 15, with 30 day retainer
Christopher Isherwood
Culture Matters! • Consistency of service between teams and locations
• It works!
Maintaining the Culture kaibara87
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
The Team Matters
The Location Matters
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Market Street San Francisco
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Shake Shack
Broadway Manhattan
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Pearl Street Boulder
Fusionopolis Singapore
yeowatzup
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Hire Well
Hire better than you • A’s hire A’s • B’s hire C’s • Hire A+’s
rochelle, et. al.
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Hire for Aptitude and Fit
The Rob Pairing Interview
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Pairing with a Candidate
Title • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here • Bulleted Text Goes Here
Listen to your gut!
TheGiantVermin
The Two Beer Test
Don’t keep people who don’t fit
jessicafm
Come Visit! • You all have an open invitation to come visit us in any of our locations.
• Just drop me a note and we’ll set it up.
Thanks!
• Ian McFarland, VP Technology, Pivotal Labs • @imf •
[email protected] • Talks at http://pivotallabs.com/talks • Jobs at http://pivotallabs.com/jobs • Try out Tracker at http://pivotaltracker.com/ • Photos used under
original works
with attribution as noted or are