A talk that I give on occation that outlines how Pivotal Labs uses agile software development practices to serve both their clients and their employees.
Developer Data Modeling Mistakes: From Postgres to NoSQL
Agile the pivotal way
1. agile, the Pivotal way
20 years of experience
(condensed into some things that work for us)
Mike Gehard, Software Engineer @mikegehard mgehard@pivotallabs.com
Thursday, April 7, 2011
5. Pivotal Labs Snapshot
• Founded 1989
• Agile since mid ‘90s
• Rails since 2006
Thursday, April 7, 2011
6. Pivotal Labs Snapshot
• Founded 1989
• Agile since mid ‘90s
• Rails since 2006
• Approximately 100 people, and growing
Thursday, April 7, 2011
7. Pivotal Labs Snapshot
• Founded 1989
• Agile since mid ‘90s
• Rails since 2006
• Approximately 100 people, and growing
• HQ in San Francisco
Thursday, April 7, 2011
8. Pivotal Labs Snapshot
• Founded 1989
• Agile since mid ‘90s
• Rails since 2006
• Approximately 100 people, and growing
• HQ in San Francisco
• Regional offices in Boulder, New York and
Singapore
Thursday, April 7, 2011
9. ...starts with breakfast
Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Thursday, April 7, 2011
10. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Thursday, April 7, 2011
11. 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
Thursday, April 7, 2011
12. Followed by Standup
Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Thursday, April 7, 2011
13. 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
Thursday, April 7, 2011
14. Large Standup Covers Items of
Global Utility
• Introductions
• Anyone new to the office
• Help
• Anything anyone needs help on
• Interesting
• Anything of global interest or utility
• New techniques, interesting gotchas, events
• Stretch (optional)
Thursday, April 7, 2011
15. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
A place for people to jot
• Bulleted Text Goes Here
• Bulleted Text Goes Here
down Bulleted Text Goes Here not
•
topics so they’re
forgotten
Thursday, April 7, 2011
16. 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
Thursday, April 7, 2011
17. 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
Thursday, April 7, 2011
18. 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
Thursday, April 7, 2011
19. Clients 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
Thursday, April 7, 2011
20. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
PivotGoes Here
• Bulleted Text
• Bulleted Text GoesClient
Here
Thursday, April 7, 2011
21. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Wednesday Tech Talks
Thursday, April 7, 2011
22. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
...which we videotape
Thursday, April 7, 2011
23. ...and
Title 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
Thursday, April 7, 2011
24. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
email station
Thursday, April 7, 2011
25. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Phonebooths
Thursday, April 7, 2011
26. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Thursday, April 7, 2011
28. A Typical Day at Pivotal Labs SF
• 8:45 Breakfast
• 9:05 Standup
• 9:15-ish Team Standups
• Noonish Lunch
• 6:00 End of the work day
Pivot Pong as you wish
Thursday, April 7, 2011
29. A Typical Day at Pivotal Labs Boulder
• 7:45 Breakfast
• 8:05 Standup
• 8:15-ish Team Standups
• Noonish Lunch
• 5:00 End of the work day
Thursday, April 7, 2011
30. Why Sustainability Matters
(for bean counters)
• Predictable delivery is at a premium
• Tired developers introduce bugs
• Developer retention is important!
• Crunch time buys short-term productivity
at long-term cost
Thursday, April 7, 2011
31. Why Developer Happiness is
Important to the Business
• Leading Indicator: Developer Happiness strongly
correlated to Developer Productivity
Grunt Work = Money Wasted
• Happy developers are more focused
Thursday, April 7, 2011
32. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Multiple Locations
Thursday, April 7, 2011
33. 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
Thursday, April 7, 2011
34. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Standup Agenda Whiteboard
Thursday, April 7, 2011
35. Pairing Stations
Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Thursday, April 7, 2011
36. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Tech Talks
Thursday, April 7, 2011
37. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Email Stations
Thursday, April 7, 2011
38. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Community Events
Thursday, April 7, 2011
40. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Tras Street
Singapore
Thursday, April 7, 2011
42. Rotations
Ralph Hockens
Thursday, April 7, 2011
43. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Simple Telepresence
Thursday, April 7, 2011
44. 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
Thursday, April 7, 2011
45. Cheap and Cheerful Telepresence
• Mac Mini
• HDTV
• iSight
• Snowball Mic
• Skype or iChat
• Total: about $1,500
Thursday, April 7, 2011
50. That’s nice... How do we do that?
• Business Driven
Thursday, April 7, 2011
51. That’s nice... How do we do that?
• Business Driven
• Iterative Development, with Short Iterations
Thursday, April 7, 2011
52. That’s nice... How do we do that?
• Business Driven
• Iterative Development, with Short Iterations
• Test/Behavior Driven Development
Thursday, April 7, 2011
53. That’s nice... How do we do that?
• Business Driven
• Iterative Development, with Short Iterations
• Test/Behavior Driven Development
• Continuous Integration/Releasability
Thursday, April 7, 2011
54. That’s nice... How do we do that?
• Business Driven
• Iterative Development, with Short Iterations
• Test/Behavior Driven Development
• Continuous Integration/Releasability
• Pair Programming
Thursday, April 7, 2011
55. That’s nice... How do we do that?
• Business Driven
• Iterative Development, with Short Iterations
• Test/Behavior Driven Development
• Continuous Integration/Releasability
• Pair Programming
• Productive Work Environment
Thursday, April 7, 2011
57. Business Driven
• Requirements come from business stakeholders
Accept Reject
Thursday, April 7, 2011
58. Business Driven
• Requirements come from business stakeholders
• One designated Customer is empowered to make
decisions
Accept Reject
Thursday, April 7, 2011
59. Business Driven
• Requirements come from business stakeholders
• One designated Customer is empowered to make
decisions
• Priorities are set by that Customer
Accept Reject
Thursday, April 7, 2011
60. 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
Accept Reject
Thursday, April 7, 2011
61. 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
Accept Reject
Thursday, April 7, 2011
62. 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 Accept Reject
Thursday, April 7, 2011
63. 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 Accept Reject
• Closing the feedback loop is critical
Thursday, April 7, 2011
66. Iterative Development
• Feedback cycle is short
• This keeps the cost of change low
Thursday, April 7, 2011
67. Iterative Development
• Feedback cycle is short
• This keeps the cost of change low
• Prevents unnecessary work
Thursday, April 7, 2011
68. Iterative Development
• Feedback cycle is short
• This keeps the cost of change low
• Prevents unnecessary work
• New insights to be gained from the work
we’ve already completed
Thursday, April 7, 2011
69. Iterative Development
• Feedback cycle is short
• This keeps the cost of change low
• Prevents unnecessary work
• New insights to be gained from the work
we’ve already completed
• Iterations are as short as we can make them
Thursday, April 7, 2011
71. TDD/BDD
• Tell us when we’ve met the customer requirements
Thursday, April 7, 2011
72. TDD/BDD
• Tell us when we’ve met the customer requirements
• Tell us when we’ve broken behavior that used to work
Thursday, April 7, 2011
73. TDD/BDD
• Tell us when we’ve met the customer requirements
• Tell us when we’ve broken behavior that used to work
• Tell us when we haven’t, so we can refactor with impunity
Thursday, April 7, 2011
74. TDD/BDD
• Tell us when we’ve met the customer requirements
• Tell us when we’ve broken behavior that used to work
• Tell us when we haven’t, so we can refactor with impunity
• Writing tests first keeps us from over designing
Thursday, April 7, 2011
75. TDD/BDD
• Tell us when we’ve met the customer requirements
• Tell us when we’ve broken behavior that used to work
• Tell us when we haven’t, so we can refactor with impunity
• Writing tests first keeps us from over designing
• Writing tests first forces cleaner API design
Thursday, April 7, 2011
76. TDD/BDD
• Tell us when we’ve met the customer requirements
• Tell us when we’ve broken behavior that used to work
• Tell us when we haven’t, so we can refactor with impunity
• Writing tests first keeps us from over designing
• Writing tests first forces cleaner API design
• Leads to looser coupling and encourages higher cohesion
Thursday, April 7, 2011
77. TDD/BDD
• Tell us when we’ve met the customer requirements
• Tell us when we’ve broken behavior that used to work
• Tell us when we haven’t, so we can refactor with impunity
• Writing tests first keeps us from over designing
• Writing tests first forces cleaner API design
• Leads to looser coupling and encourages higher cohesion
• Good developer testing keeps the cost of change constant
Thursday, April 7, 2011
78. Test-Drive Everything!
•Rails, Ruby, of course
•JavaScript too!
•Mobile too!
Thursday, April 7, 2011
79. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Thursday, April 7, 2011
80. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Thursday, April 7, 2011
82. Continuous Integration,
Continuous Releasability
• Knowing when things break is critical to reducing the cost
of fixing defects.
Thursday, April 7, 2011
83. 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
Thursday, April 7, 2011
84. 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
Thursday, April 7, 2011
85. 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.
Thursday, April 7, 2011
86. 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.
Thursday, April 7, 2011
87. 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.
Thursday, April 7, 2011
89. Pair Programming
• Do we really have to pair?
Thursday, April 7, 2011
90. Pair Programming
• Do we really have to pair?
• Isn’t Pairing Slower?
Thursday, April 7, 2011
91. Pair Programming
• Do we really have to pair?
• Isn’t Pairing Slower?
• I don’t like pairing.
Thursday, April 7, 2011
92. Pair Programming
• Do we really have to pair?
• Isn’t Pairing Slower?
• I don’t like pairing.
• I’m shy.
Thursday, April 7, 2011
93. 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.
Thursday, April 7, 2011
94. Do we really have to pair?
Thursday, April 7, 2011
95. Do we really have to pair?
•Yes, you do.
Thursday, April 7, 2011
96. Do we really have to pair?
•Yes, you do.
• ...but only if you want to be efficient
Thursday, April 7, 2011
97. 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.
Thursday, April 7, 2011
98. 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.
Thursday, April 7, 2011
99. 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
Thursday, April 7, 2011
100. 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.
• 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
Thursday, April 7, 2011
101. How does pairing help?
• 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 ∞
Thursday, April 7, 2011
109. All but the anchor
can swap out whenever
Thursday, April 7, 2011
110. 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 re-imaged after each project
• A brand new machine is ready to use within 30
minutes of it showing up on the floor.
Thursday, April 7, 2011
111. Agile is not...
Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Thursday, April 7, 2011
112. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
...a religion.
Thursday, April 7, 2011
113. ...but a tool that works well
Terinea IT Support
Thursday, April 7, 2011
114. ...and that needs to be
renewed continuously.
donielle
Thursday, April 7, 2011
117. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
The Client Engagement
Thursday, April 7, 2011
118. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Thursday, April 7, 2011
123. Start with an initial scoping...
toptechwriter
Thursday, April 7, 2011
124. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
... then comes the Agile inception...
Thursday, April 7, 2011
125. ... followed by the building of “stuff”...
yakobusan
Thursday, April 7, 2011
126. ... all the while doing retrospectives ...
creative_stock
Thursday, April 7, 2011
127. ... and wrapping it up when everything is
implemented
jayneandd
Thursday, April 7, 2011
128. Ramp up or down as needed
alexliivet
Thursday, April 7, 2011
130. Culture Matters!
• Consistency of service
between teams and
locations
• It works!
Maintaining the Culture
kaibara87
Thursday, April 7, 2011
131. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
The Team Matters
Thursday, April 7, 2011
133. 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
Thursday, April 7, 2011
134. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Thursday, April 7, 2011
135. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Broadway
Manhattan
Thursday, April 7, 2011
136. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Thursday, April 7, 2011
138. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Thursday, April 7, 2011
139. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Tras Street
Singapore
Thursday, April 7, 2011
140. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Thursday, April 7, 2011
141. Title
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
• Bulleted Text Goes Here
Hire Well
Thursday, April 7, 2011
142. 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
Thursday, April 7, 2011
144. 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
Thursday, April 7, 2011
145. Listen to your gut!
TheGiantVermin
Thursday, April 7, 2011
148. Come Visit!
• You all have an open invitation to come
visit us in any of our locations.
• Keep an “eye” out for upcoming events at
our Boulder office.
• Just drop me a note and we’ll set it up.
Thursday, April 7, 2011
149. Thanks!
•Mike Gehard, Software Engineer, Pivotal Labs
•@mikegehard
•@pivotalboulder
•@pivotallabs
•mgehard@pivotallabs.com
•Talks at http://pivotallabs.com/talks
Thursday, April 7, 2011