buildstufflightweightchaos
TRANSCRIPT
-
8/19/2019 BuildStuffLightweightChaos
1/43
Lightweight ChaosFor Distributed Teams
Aras Pranckevi!iusat BuildStuffLT 2013
-
8/19/2019 BuildStuffLightweightChaos
2/43
What process?
• I don’t know!
• Use whatever makes sense!
• well that’s it, kthxbye
-
8/19/2019 BuildStuffLightweightChaos
3/43
srsly tho
• Here’s what has (and has not) worked
• At Unity Technologies
• Where many are allergic to “process”
-
8/19/2019 BuildStuffLightweightChaos
4/43
/me
• Coding since 1996, paid to do that since 2000.
• Mostly a computer graphics programmer.
• Employee #4 at Unity Technologies, since 2006.
• @aras_p
• http://aras-p.info
http://aras-p.info/
-
8/19/2019 BuildStuffLightweightChaos
5/43
Unity
• Game development engine & toolset.
• http://unity3d.com
• 2.5 million users.
• Thousands of games.
• Games on 1 billion mobiles, 250 million PCs.
http://unity3d.com/
-
8/19/2019 BuildStuffLightweightChaos
6/43
Distributed
• 17 offices
• ~20 more random one-person places
-
8/19/2019 BuildStuffLightweightChaos
7/43
Why distributed?
• Happened by accident
• Easier to find talent w/o relocation
• Smaller offices can be more productive
• Specialize based on location
-
8/19/2019 BuildStuffLightweightChaos
8/43
Specifics
• 120..150 engineers (depending on how you count)
• Mostly one product
• 1.4 MLOC codebase, mostly C++ & C#
• Some code is 12 years old
-
8/19/2019 BuildStuffLightweightChaos
9/43
Specifics
• No written specification
• Close to zero design docs
-
8/19/2019 BuildStuffLightweightChaos
10/43
Product / Project
• We’re making product , not project
• We decide what we build*
• We decide when we build it*
• Makes many things easier
*
mostly
-
8/19/2019 BuildStuffLightweightChaos
11/43
Process TL;DR
• What process?
• Everyone hates “The Man”
• Depends on situation
• Let teams & people decide what to use
-
8/19/2019 BuildStuffLightweightChaos
12/43
Caveats
• Can only work if people care about what you build
• Someone will step up to do boring tasks since theresult is worth it
-
8/19/2019 BuildStuffLightweightChaos
13/43
Fancy quotes!
• Guidelines, not rules
• Only add process when not having it becomes
unbearable
• Be suspicious of silver bullets
• The only constant is change
• Most approaches are overhyped, but probably
have one good idea in them
-
8/19/2019 BuildStuffLightweightChaos
14/43
Heretic quotes?
• Processes are for managing mediocre people
• In a group of people, stupidity adds up, but
intelligence multiplies*
• To maintain intelligence level, only hire people whoare better than current average!
* in 0..1 range
-
8/19/2019 BuildStuffLightweightChaos
15/43
3 person company
• Zero process
• Zero hierarchy
• Everyone knows everything
• Everyone decides everything
• Everyone does everything
-
8/19/2019 BuildStuffLightweightChaos
16/43
15 person company
• More specialization
• Still everyone knows everything
• Still zero hierarchy & process
-
8/19/2019 BuildStuffLightweightChaos
17/43
-
8/19/2019 BuildStuffLightweightChaos
18/43
150 person company
• Dunbar’s number
• “this will kill your startup”
• …it did not
-
8/19/2019 BuildStuffLightweightChaos
19/43
~320 in company now
• 120-150 engineers
• Can’t know everyone
• Not a single person knows everything
• Have to have some hierarchy
• 5 engineer managers right now
-
8/19/2019 BuildStuffLightweightChaos
20/43
How we work?
• Parts of “how” might change at any time
• Quite chaotic
• Barely any “rules”
-
8/19/2019 BuildStuffLightweightChaos
21/43
Teams
• 2..10 people
• Usually has a “lead”
• Lead is main point of contact
• Workflow completely up to each team
-
8/19/2019 BuildStuffLightweightChaos
22/43
Team process
•
Some use Scrum, Kanban, …
• Some don’t use anything in particular
• Some things are quite common among teams
now…
-
8/19/2019 BuildStuffLightweightChaos
23/43
Common things
• “bugfix week” - whole team only fixes bugs for a
week
• “technical debt week” - refactoring, cleanups etc.
• “fridays are for fun” - on Fridays everyone doeswhatever they want
-
8/19/2019 BuildStuffLightweightChaos
24/43
Common things
• Major feature releases each 2 months (wish)… 4-5
months (reality)
• Feature work before alpha
• Tweaking, feedback, polish, fixes during alpha
• Final small tweaks, majority of fixes during beta
• Final shipstopper fixes during RC
-
8/19/2019 BuildStuffLightweightChaos
25/43
Who does decisions?
• Whoever wants to
• Talk with others
• Persuade others
• Argue with others
-
8/19/2019 BuildStuffLightweightChaos
26/43
Who’s responsible?
• Everyone is
• Can not say “they told me to do this stupid shit”
• Should have said “this is stupid shit”!
-
8/19/2019 BuildStuffLightweightChaos
27/43
Responsibility is hard
• Takes a while to accept that you are responsible
• “Why is this still broken?!”
• Because you did not fix it
• …or did not convince others to fix it ;)
-
8/19/2019 BuildStuffLightweightChaos
28/43
What does a lead do?
• First point of contact for the team
• Direction if things turn bad
• Has to be respected by the team!
-
8/19/2019 BuildStuffLightweightChaos
29/43
Tech vs people lead
•
Technical lead != people lead
• Very different skill sets!
• Too often career path for great coders is “be a
people manager”
-
8/19/2019 BuildStuffLightweightChaos
30/43
Can this really work?!
• So far it does!
• github sounds similar
• http://zachholman.com/talk/how-github-no-longer-works/
• Valve sounds similar
• http://media.steampowered.com/apps/valve/
Valve_NewEmployeeHandbook.pdf
http://media.steampowered.com/apps/valve/Valve_NewEmployeeHandbook.pdfhttp://zachholman.com/talk/how-github-no-longer-works/
-
8/19/2019 BuildStuffLightweightChaos
31/43
Will this work?
• We thought it would break down at
• 20
• 50
• 100
• …
• Some change happened, but not essence
-
8/19/2019 BuildStuffLightweightChaos
32/43
Will this work at 1000?
• Who knows
• 1000 engineers probably too much for 1 product?
• But then, we thought 100 would be too much as well…
-
8/19/2019 BuildStuffLightweightChaos
33/43
But it’s unpredictable!
• Yes
• You can still guesstimate
• Our deadlines are self-imposed anyway
-
8/19/2019 BuildStuffLightweightChaos
34/43
Tools: IM
• Skype right now
• Not ideal, but kind of works
• Good: sending files around
• Bad: discovery
• Alternatives: Hangouts, Hipchat, Campfire, IRC, …
-
8/19/2019 BuildStuffLightweightChaos
35/43
Tools: Wiki
• Confluence
• It’s pretty good
• Google docs
• Excellent for realtime editing
• Guidelines, plans, status, docs, …
-
8/19/2019 BuildStuffLightweightChaos
36/43
Tools: pairing
• TeamViewer
• Alternatives: Hangouts, Skype, RDP, …
-
8/19/2019 BuildStuffLightweightChaos
37/43
Tools: planning
• Trello
• Asana, Greenhopper, Pivotal Tracker, Basecamp,
MS Project (!)
-
8/19/2019 BuildStuffLightweightChaos
38/43
What did not work
• Mandatory Monday Meetings
• Supposed to be quick info & status updates
• Does not work at 15 offices
• Found them useless
-
8/19/2019 BuildStuffLightweightChaos
39/43
What did not work
• Trying to force everyone to “work harder”
• At some point progress felt slow
• Maybe people aren’t working hard enough?
• Was one of biggest fuckups we made
-
8/19/2019 BuildStuffLightweightChaos
40/43
People do work hard!
• The slowdowns are due to inefficiency
• Automate
• Reduce duplication
• Better communication
• Better teaching & learning
• Get better HW/SW :)
-
8/19/2019 BuildStuffLightweightChaos
41/43
What did not work
• Trying same process for all teams
• “Everyone do Scrum from now on”
• Team sizes & composition is different
• Teams work on different things & schedules
-
8/19/2019 BuildStuffLightweightChaos
42/43
Recap
• Do not force process
• Just let people do work
• You do give up some control
• It was an illusion anyway
-
8/19/2019 BuildStuffLightweightChaos
43/43
Well that’s it!Questions?