Breaking the Kubernetes Kill Chain: Host Path Mount
A real-life overview of Agile workflow practices
1. A real-life overview of Agile workflow practices
Michael Toppa @mtoppa www.toppa.com
3/18/2013
2. Mike Toppa
19 years of experience in web development, project management, and
functional management
✤ Currently: Rails Engineer, ElectNext
✤ Previously:
✤ Director of Development, WebDevStudios
✤ Director of Web Applications, U Penn School of Medicine
✤ Web developer at: Georgetown University, Stanford University,
E*Trade, and Ask Jeeves
3. Overview
✤ Theory
✤ Waterfall vs Agile
✤ Practice
✤ My experiences at U Penn
✤ ...and ElectNext
5. The software development dilemma
Quality Features
Pick any two
Fast Low
Schedule Cost
I’ve explained the triangle to dozens of clients over the years
Programming is not magic
6. Traditional “Waterfall” Approach
Source
Features determine the cost and schedule
Define all requirements up front
Logically break down the work
Estimate the effort / durations
Plan out all the work
And only then begin the development…while trying to limit any change that will
threaten the plan.
10. Over-production of features
Source
Ask customers what they want at the beginning, when they really don’t know
Penalize them for adding things later
TCL example
11. Low success rate
“The main thing that pushed Agile and Scrum was
that the success rate on traditional projects was
terrible; it was 45%. If that was a car-manufacturing
place, that would mean you’d throw out every other
car you built.”
Ken Schwaber, co-creator of Scrum, 6/21/2011
Source
12. Source
Cost in software projects means manpower
Brooks’ Law: adding more manpower makes late projects later
14. Agile: frequent feedback
Source
Every iteration ends with a retrospective
Also, feedback from clients during iteration review
15. Agile: “inspect and adapt”
Source
Single loop learning is “how can we do better”?
Double loop learning is “Why do we believe that?”
Double loop learning means challenging fundamental assumptions
16. Agile: incremental and iterative
Source
Develop systems in small portions at a time (incremental), through repeated cycles (iterative),
and take advantage of what was learned in each cycle (for both features and implementation)
18. Why?
✤ The pace of business keeps getting faster
✤ Feedback is essential
✤ Time is scarce
✤ Things will change
19. Incremental development:
slice vertically, not horizontally
Source
This is where developers unfamiliar with Agile freak out
How do you develop a UI or a database in pieces? This seems like it would lead to a giant
mess. Remember the iterative part - we can sketch out the overall design, but we build
incrementally, fleshing out the details of what’s needed soon
It is possible, it is practical, and there are a lot of people doing it.
It's actually the opposite of messy hacking. Doing it well requires a very disciplined
development process, and strong application design skills, as you are trying to maintain a
solid application design while always being ready to adapt to change.
20. The Agile Umbrella
Source
Agile is a mindset and a set of values. There are multiple methodologies that implement it.
I’ll focus on the most popular one, Scrum
22. Scrum has 3 roles
✤ Product owner
✤ Scrum master
✤ Self-organizing, cross-functional team
23. Scrum role: Product Owner
Responsible for what the team will work on,
and setting priorities,
but not how the work is done
Responsible for what the team will work on, but not how the work is done
Works closely with clients to understand their needs
Gathers and writes business requirements in small pieces, called “user stories”
Based on client needs, sets priorities for the team
Does not have authority over technical design decisions
Cannot tell an individual team member what to do
A good Product Owner is: available, business-savvy, communicative, decisive, empowered
24. Scrum role: Scrum Master
A “servant-leader” for the team
A “servant-leader” for the team - analogous to a physical trainer
Can coach and evangelize, but not issue commands
But does have authority over the Scrum process
Removes obstacles for the team
A good Scrum Master is: responsible, humble, collaborative, committed, influential, and
knowledgeable
25. The team: self-organizing
and cross-functional
Source
Cross-functional team takes collective responsibility for estimating the work, and doing the
work
Doing it in the priority order they are asked to follow
Keeping quality high by working together (inspecting each other's code, discussing best
technical solutions, etc)
26. So who’s
the boss?
Source
Personnel management exists completely outside this structure.
Works best in relatively “flat” organizations where people are given autonomy and achievable
goals
Antithetical to top-down, command and control hierarchies
More on the this later
28. The team
✤ 15 web developers and designers
✤ Ad-hoc development process: hadn’t heard of waterfall or agile
✤ Independent: developers worked alone on projects (a huge business
risk)
✤ Customer service oriented: say “yes” to everything
✤ Focused on fast delivery
29. The situation
✤ Ever growing number of clients and projects
✤ Hiring freeze
✤ Sparse project management, little documentation
✤ Ambiguous lines of authority
✤ Reactive planning, daily firefighting
✤ No one in a position to prioritize -> politicized decision making
30. Mike: Why Agile? Why Scrum?
✤ Maintain frequent interactions with clients
✤ Enable planning
✤ Reduce risk
✤ Improve quality
Maintain frequent interactions with clients
- Provides quick feedback, Existing good relationships
Enable planning
- make commitments, and meet them, Reduce need for firefighting
Reduce risk
- Have more than one person know a project
Improve Quality
- Reduce misunderstandings, Reduce missed requirements, Have fewer bugs
31. I expected our scrum adoption to
look something like this...
Source
I read Mike Cohn’s book Succeeding with Agile: Software Development using Scrum
I taught the team core scrum concepts, I explained the new process to clients
A small team did a pilot project first, Then the whole group switched
32. But it turned out like this...
Source
Team didn’t like it, and clients didn’t like it. It felt like just adding a new set of work and
processes on top of the existing work
33. The Scrum Promise
“In my Scrum classes I warn attendees of what I call
the Scrum Promise: If you adopt Scrum, there will be a
day you come into the office nearly in tears over how
hard the change can be. This is because Scrum doesn’t
solve problems, it uncovers them and puts them in our
face. Then, through hard work we address them.”
– Mike Cohn, Agile Trainer
But what was really going on was that it was bringing previously unrecognized and
unarticulated problems to the surface
34. So I brought in a Scrum coach
Source
A skilled external coach is often key for driving change - they bring a wide range of
experience and can see things objectively
If you’ve never led an Agile transition before, it’s surprisingly easy to do it wrong
You need at least enough management support to pay the coach
You need to make sure you’re bringing in someone good
35. Problem #1: false start
Source
Throwing people together and calling them a team doesn’t make them a team
- stepping on each other's toes in the code, not familiar with each others’ projects, some
unwilling to share work
I misunderstood the roles:
- The clients were acting as their own product owners, The scrum masters were our former
project managers, and continued doing traditional project management
- I had several “scrum-buts” - aspects of our process where we didn't follow scrum and stuck
to how we always had worked before
36. Problem #2: too much work
9 developers, 2 product owners, and me supporting
- 22 clients with 124 applications
3 designers and 1 product owner supporting
- about 200 static content web sites
Taking inventory itself was a huge undertaking
37. Estimating: story points and
planning poker
Photo by Kelly Hirano
Used with permission
- How did we generate that chart?
- The teams give “story points” to the work by playing planning poker (the work is expressed
in a format called “user stories”)
- People are bad at estimating time, but we're good at estimating relative size or difficulty
- Team based estimates are more accurate than estimates by individuals
38. Velocity enables scheduling and
“sustainable pace”
Source
After a few sprints, our teams had velocities, which allowed us to make time estimates for
projects.
Also gave us a solid basis for not saying “yes” to every new work request.
And this is key to the Agile goal of “sustainable pace”
39. Problem #3: task switching
Source
Context switching between two projects eats about 20% of a full-time worker’s schedule
40. Problem #4: Misalignment of
authority and responsibility
Cartoon by Mike Lynch
Used with permission
- Following this advise lets you cover yourself politically, and is a great way to make everyone
who works for you miserable
- I've found that misalignment of authority and responsibility can explain a lot of dysfunction
that happens in organizations
- When you have responsibility for your work but not enough authority over it, you will feel
like a cog in machine
41. What makes a job enjoyable?
✤ Autonomy
✤ Reward for effort
✤ Challenging/complex work
“Work that fulfills these three criteria is meaningful.”
– Malcolm Gladwell, “Outliers: The Story of Success”
42. In the end...
✤ Team improved practices, quality, and predictability
✤ Attempts to better align authority and responsibility with clients (by
means of creating an advisory board) failed
44. The team
✤ 6 person company -> freedom of action
✤ Spread out across 3 cities - meetings are online
✤ Team was already doing a couple Agile practices: daily stand-ups and
weekly sprints
✤ But not other practices -> some confusion around goals and
workflow
✤ No external clients: designing and selling our product
✤ Highly collaborative, can-do team
1 CEO, 2 business developers, 1 product manager, 2 engineers
Daily standup, weekly planning, but no longer range planning, no retrospectives and no
specific agile roles
45. Refinements
✤ Added retrospectives and setting monthly goals
✤ Stabilized engineering velocity
✤ Decided to not have product owner and scrum master roles for now
✤ But more defined roles may be needed as we grow
46. Our daily standup
Each part of the company has a separate section of the document
- more detailed tracking is does separately
47. References: overviews and product
management
✤ “Succeeding with Agile: Software Development Using Scrum” and
“Agile Estimating and Planning” by Mike Cohn
✤ “Specification by Example” and “Impact Mapping” by Gojko Adzic
✤ “Kanban: Successful Evolutionary Change for Your Technology
Business” by David J. Anderson
✤ “The Lean Startup” by Eric Ries
48. References: technical practices
✤ “Clean Code” and “Agile Software Development, Principles,
Patterns, and Practices” by Bob Martin
✤ “Refactoring: Improving the Design of Existing Code” by Martin
Fowler
✤ “Agile Database Techniques” by Scott Ambler
✤ “The Rspec Book: Behaviour-Driven Development with RSpec,
Cucumber, and Friends” by David Chelimsky
✤ “Working Effectively with Legacy Code” by Michael Feathers
49. References: Agile beyond software
development
✤ Angry Dinosaurs: Accelerating Change and Institutional
Incompetence
✤ Cory Ondrejka, Wharton Web Conference, 2010
✤ Let it Roll: Why more companies are abandoning budgets in favor of
rolling forecasts
✤ CFO Magazine, May 1, 2011
✤ The Insourcing Boom
✤ Atlantic Magazine, December 2012