$30 off During Our Annual Pro Sale. View Details »

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 Slide

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

    View Slide

  3. dream it
    that morning

    View Slide

  4. build it
    that afternoon

    View Slide

  5. that’s remarkable.

    View Slide

  6. can we do better?

    View Slide

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

    View Slide

  8. can we
    improve how
    product is built?

    View Slide

  9. working asynchronously
    optimizing
    happiness
    for
    five years later
    github

    View Slide

  10. @holman

    View Slide

  11. github, inc.

    View Slide

  12. ASYNCHRONOUSLY
    WORKing
    the philosophy

    View Slide

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

    View Slide

  14. when github was founded they:
    were happy

    View Slide

  15. why change this?

    View Slide

  16. developer happiness
    is central to our workflow

    View Slide

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

    View Slide

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

    View Slide

  19. WORK LIKE
    OPEN SOURCE

    View Slide

  20. the open source
    model works

    View Slide

  21. distributed
    collaboration

    View Slide

  22. GEOGRAPHY

    View Slide

  23. open source
    happens everywhere
    smart people are everywhere

    View Slide

  24. build a company that
    can work anywhere

    View Slide

  25. tools are our office
    planning, discussing, building

    View Slide

  26. all information
    should be accessible

    View Slide

  27. HOURS

    View Slide

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

    View Slide

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

    View Slide

  30. night owls
    ain’t morning people

    View Slide

  31. morning people
    ain’t night owls

    View Slide

  32. you can’t
    enforce creativity

    View Slide

  33. minimal
    process

    View Slide

  34. every step you add
    increases complexity

    View Slide

  35. every step you add
    increases onboarding

    View Slide

  36. every step you add
    increases inefficiency

    View Slide

  37. minimize human
    processes

    View Slide

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

    View Slide

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

    View Slide

  40. minimize human
    processes
    code branching & release

    View Slide

  41. code branching & release
    branch pull request
    master merged

    View Slide

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

    View Slide

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

    View Slide

  44. ship code quicker

    View Slide

  45. less metawork,
    more actual work

    View Slide

  46. ASYNCHRONOUSLY
    WORKing
    with tools

    View Slide

  47. pull requests
    a request
    to merge
    your code

    View Slide

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

    View Slide

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

    View Slide

  50. pull requests
    we use pulls for
    any new code

    View Slide

  51. pull requests
    asynchronous
    ask for feedback at their leisure

    View Slide

  52. pull requests
    mentions
    ping users, teams

    View Slide

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

    View Slide

  54. chat

    View Slide

  55. chat
    chat is inherently
    asynchronous

    View Slide

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

    View Slide

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

    View Slide

  58. chat
    83 chat rooms

    View Slide

  59. chat
    ping someone

    View Slide

  60. chat
    ping someone
    native OS X + ios notifications

    View Slide

  61. chat
    get someone’s attention
    without bothering them

    View Slide

  62. OPTIMIZing
    HAPPINESS
    for

    View Slide

  63. WHY BE
    HAPPY?

    View Slide

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

    View Slide

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

    View Slide

  66. happy people
    produce better work

    View Slide

  67. happy people
    help you recruit

    View Slide

  68. happy people
    keep you happier

    View Slide

  69. so how?

    View Slide

  70. BREAK
    CONVENTION
    from

    View Slide

  71. work style
    asynchronous, distributed

    View Slide

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

    View Slide

  73. travel

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  79. travel
    why?

    View Slide

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

    View Slide

  81. travel
    face time
    bond with your coworkers

    View Slide

  82. travel
    stay fresh

    View Slide

  83. FAMILY
    focus

    View Slide

  84. people have
    kids and stuff

    View Slide

  85. flexible hours &
    locations are great

    View Slide

  86. 120 hour
    work weeks are silly

    View Slide

  87. family-friendly
    company events

    View Slide

  88. existence of families
    reflects success

    View Slide

  89. f i v e
    YEARS
    LATER

    View Slide

  90. four years in,
    github’s the same

    View Slide

  91. four years in,
    github’s changed

    View Slide

  92. changes and constants
    are fascinating

    View Slide

  93. MORE
    HUMANS

    View Slide

  94. 2010

    View Slide

  95. 2010
    2011

    View Slide

  96. 2010
    2011
    2012

    View Slide

  97. 2012

    View Slide

  98. 132 employees today

    View Slide

  99. 2.5 million users today

    View Slide

  100. death of the
    hero developer

    View Slide

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

    View Slide

  102. rely on other teams
    for sanity checks

    View Slide

  103. pull requests
    bottleneck prevention:

    View Slide

  104. we average 10-20 per day

    View Slide

  105. means fast development
    without sacrificing quality

    View Slide

  106. INTERNAL
    TOOLING

    View Slide

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

    View Slide

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

    View Slide

  109. SUPPORT

    View Slide

  110. Chat

    View Slide

  111. TEAM

    View Slide

  112. it becomes
    mathematically
    improbable that this
    time was wasted

    View Slide

  113. teams

    View Slide

  114. teams let you focus

    View Slide

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

    View Slide

  116. permissive repositories
    permit people to float

    View Slide

  117. self-selecting teams
    hugely important in crisis

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  122. thanks.

    View Slide

  123. @holman

    View Slide