Upgrade to Pro — share decks privately, control downloads, hide ads and more …

How GitHub Works (v2)

Zach Holman
December 12, 2012

How GitHub Works (v2)

This is the updated version of my "How GitHub Works" talk.

Read more: http://zachholman.com/posts/how-github-works/

Zach Holman

December 12, 2012
Tweet

More Decks by Zach Holman

Other Decks in Programming

Transcript

  1. github
    works
    how

    View full-size slide

  2. we all work
    in the finest
    industry of
    all time

    View full-size slide

  3. dream it
    that morning

    View full-size slide

  4. build it
    that afternoon

    View full-size slide

  5. that’s remarkable.

    View full-size slide

  6. can we do better?

    View full-size slide

  7. we’ve been on the
    same path for
    years

    View full-size slide

  8. can we
    improve how
    product is built?

    View full-size slide

  9. working asynchronously
    optimizing
    happiness
    for
    five years later
    github

    View full-size slide

  10. github, inc.

    View full-size slide

  11. ASYNCHRONOUSLY
    WORKing
    the philosophy

    View full-size slide

  12. when github was founded they:
    worked on what they wanted
    worked where they wanted
    worked when they wanted

    View full-size slide

  13. when github was founded they:
    were happy

    View full-size slide

  14. why change this?

    View full-size slide

  15. developer happiness
    is central to our workflow

    View full-size slide

  16. no managers · NO DEADLINES
    NO MEETINGS · NO WORK HOURS
    this:
    reflects that workflow

    View full-size slide

  17. in hindsight,
    we work like
    a big open source
    project

    View full-size slide

  18. WORK LIKE
    OPEN SOURCE

    View full-size slide

  19. the open source
    model works

    View full-size slide

  20. distributed
    collaboration

    View full-size slide

  21. open source
    happens everywhere
    smart people are everywhere

    View full-size slide

  22. build a company that
    can work anywhere

    View full-size slide

  23. tools are our office
    planning, discussing, building

    View full-size slide

  24. all information
    should be accessible

    View full-size slide

  25. open source
    happens at any time
    people are creative at all hours

    View full-size slide

  26. code is a
    creative endeavor
    let your people stay fresh

    View full-size slide

  27. night owls
    ain’t morning people

    View full-size slide

  28. morning people
    ain’t night owls

    View full-size slide

  29. you can’t
    enforce creativity

    View full-size slide

  30. minimal
    process

    View full-size slide

  31. every step you add
    increases complexity

    View full-size slide

  32. every step you add
    increases onboarding

    View full-size slide

  33. every step you add
    increases inefficiency

    View full-size slide

  34. minimize human
    processes

    View full-size slide

  35. code branching & release (WRONG)
    V2
    BRANCH
    QA
    MANAGER
    STABLE merged
    FEATURE
    BRANCH
    TUESDAY
    CODE REVIEW

    View full-size slide

  36. code branching & release (WRONG)
    V2
    BRANCH
    QA
    MANAGER
    STABLE merged
    FEATURE
    BRANCH
    X TUESDAY
    CODE REVIEW

    View full-size slide

  37. minimize human
    processes
    code branching & release

    View full-size slide

  38. code branching & release
    branch pull request
    master merged

    View full-size slide

  39. code branching & release
    merged
    run tests
    auto-deploy

    View full-size slide

  40. sometimes it’s not
    about automation
    sometimes you have to
    remove barriers

    View full-size slide

  41. ship code quicker

    View full-size slide

  42. less metawork,
    more actual work

    View full-size slide

  43. ASYNCHRONOUSLY
    WORKing
    with tools

    View full-size slide

  44. pull requests
    a request
    to merge
    your code

    View full-size slide

  45. pull requests
    3,108 github/github pull requests
    399 in the last month
    63 in the last month - 1 year

    View full-size slide

  46. pull requests
    3.1
    1.4 pull requests PER employee
    per month, 2011
    pull requests PER employee
    per month, 2012

    View full-size slide

  47. pull requests
    we use pulls for
    any new code

    View full-size slide

  48. pull requests
    asynchronous
    ask for feedback at their leisure

    View full-size slide

  49. pull requests
    mentions
    ping users, teams

    View full-size slide

  50. pull requests
    avoid meetings
    & in-person code review

    View full-size slide

  51. chat
    chat is inherently
    asynchronous

    View full-size slide

  52. chat
    tapping me on my
    shoulder is inherently
    being a jerk

    View full-size slide

  53. chat
    scheduling a meeting is
    inherently probably a
    hate crime

    View full-size slide

  54. chat
    83 chat rooms

    View full-size slide

  55. chat
    ping someone

    View full-size slide

  56. chat
    ping someone
    native OS X + ios notifications

    View full-size slide

  57. chat
    get someone’s attention
    without bothering them

    View full-size slide

  58. OPTIMIZing
    HAPPINESS
    for

    View full-size slide

  59. WHY BE
    HAPPY?

    View full-size slide

  60. if you’re asking,
    you’re probably
    a horrible person
    but...

    View full-size slide

  61. investing in employees
    makes fiscal sense
    (I can’t believe I had to say that)

    View full-size slide

  62. happy people
    produce better work

    View full-size slide

  63. happy people
    help you recruit

    View full-size slide

  64. happy people
    keep you happier

    View full-size slide

  65. BREAK
    CONVENTION
    from

    View full-size slide

  66. work style
    asynchronous, distributed

    View full-size slide

  67. side project culture
    let people build cool things
    hubot · CI testing · deploy infrastructure
    door me · music server · support tools
    dev environment management · more

    View full-size slide

  68. company summit 2x/year
    company-wide brainstorm
    travel

    View full-size slide

  69. mini-summit 1x/year
    team-based brainstorm
    travel

    View full-size slide

  70. any talk, anywhere
    your talk or as a travel buddy
    travel

    View full-size slide

  71. github destinations
    hack house for a dozen for a month
    travel

    View full-size slide

  72. github destinations
    hack house for a dozen for a month
    travel
    berlin · hawaii · Uruguay · Beijing · rome · etc.

    View full-size slide

  73. travel
    travel is eye-opening
    new perspectives, new approaches

    View full-size slide

  74. travel
    face time
    bond with your coworkers

    View full-size slide

  75. travel
    stay fresh

    View full-size slide

  76. people have
    kids and stuff

    View full-size slide

  77. flexible hours &
    locations are great

    View full-size slide

  78. 120 hour
    work weeks are silly

    View full-size slide

  79. family-friendly
    company events

    View full-size slide

  80. existence of families
    reflects success

    View full-size slide

  81. f i v e
    YEARS
    LATER

    View full-size slide

  82. four years in,
    github’s the same

    View full-size slide

  83. four years in,
    github’s changed

    View full-size slide

  84. changes and constants
    are fascinating

    View full-size slide

  85. 2010
    2011
    2012

    View full-size slide

  86. 132 employees today

    View full-size slide

  87. 2.5 million users today

    View full-size slide

  88. death of the
    hero developer

    View full-size slide

  89. work moves across
    ops, design, backend,
    & frontend more
    frequently

    View full-size slide

  90. rely on other teams
    for sanity checks

    View full-size slide

  91. pull requests
    bottleneck prevention:

    View full-size slide

  92. we average 10-20 per day

    View full-size slide

  93. means fast development
    without sacrificing quality

    View full-size slide

  94. INTERNAL
    TOOLING

    View full-size slide

  95. the bigger we get, the
    more time we spend on
    internal tools

    View full-size slide

  96. our dev tools are
    prettier than most
    for-profit products

    View full-size slide

  97. it becomes
    mathematically
    improbable that this
    time was wasted

    View full-size slide

  98. teams let you focus

    View full-size slide

  99. but teams shouldn’t
    be about lock-in

    View full-size slide

  100. permissive repositories
    permit people to float

    View full-size slide

  101. self-selecting teams
    hugely important in crisis

    View full-size slide

  102. we still suck at teams
    it’s important
    to get right though

    View full-size slide

  103. how you work
    is as important to me as
    what your work is

    View full-size slide

  104. can this work for your
    company?
    maybe, maybe not.

    View full-size slide

  105. the point is to
    reevaluate what is
    important to you.

    View full-size slide