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

Brewing GitHub

Brewing GitHub

GitHub just turned 5 years old. During that time, it grew from a small team of 4 to 171 employees all over the globe, working on their own schedules, and without any managers.

This talk will dive into how GitHub ships: how we ship GitHub’s culture, how we work day to day, how we get everyone at GitHub (including business teams) to use Git & Github, and how you can use these workflows in your company today.

Kyle Daigle

June 22, 2013
Tweet

More Decks by Kyle Daigle

Other Decks in Programming

Transcript

  1. Brewing
    GitHub

    View Slide

  2. The Story of github

    View Slide

  3. kyle daigle
    Twitter.com/kdaigle
    Github.com/kdaigle

    View Slide

  4. View Slide

  5. Once upon a time,
    in a bar...

    View Slide

  6. @pjhyett @@mojombo@@defunkt

    View Slide

  7. distributed version control
    Better version control

    View Slide

  8. launched
    APRIL 10th 2008

    View Slide

  9. Bootstrapped

    View Slide

  10. No office

    View Slide

  11. No office
    Coffee shops

    View Slide

  12. No office
    Coffee shops
    houses

    View Slide

  13. No office
    Coffee shops
    houses
    traveling

    View Slide

  14. No office
    Coffee shops
    houses
    traveling
    no hours

    View Slide

  15. 3.6 million users
    7 Million repos

    View Slide

  16. Github.com

    View Slide

  17. Github.com
    github enterprise

    View Slide

  18. Github.com
    github enterprise
    training

    View Slide

  19. Github.com
    github enterprise
    training
    github jobs

    View Slide

  20. View Slide

  21. View Slide

  22. View Slide

  23. Culture:

    View Slide

  24. Culture:
    the trifecta

    View Slide

  25. Optimize
    for happiness

    View Slide

  26. First Principles
    fundamentals

    View Slide

  27. Taste
    Beautiful, tasteful, simple

    View Slide

  28. Culture
    How We use

    View Slide

  29. Happiness
    Where you are

    View Slide

  30. Remote
    more
    than
    half

    View Slide

  31. View Slide

  32. View Slide

  33. View Slide

  34. Asynchronous

    View Slide

  35. Pull requests
    Chat
    Team
    Issues Repos
    Log Everything

    View Slide

  36. View Slide

  37. View Slide

  38. Hubot
    Chat ops

    View Slide

  39. module.exports = (robot) ->
    robot.respond /have a beer/i, (msg) ->
    # Get number of beers had (coerced to a number).
    beersHad = robot.brain.get('totalBeers') * 1 or 0
    if beersHad > 4
    msg.respond "I'm too drunk.."
    else
    msg.respond 'Sure!'
    robot.brain.set 'totalBeers', beersHad+1

    View Slide

  40. Pull Requests
    Rule everything
    around me

    View Slide

  41. Master

    View Slide

  42. Master
    feature-branch

    View Slide

  43. Master
    feature-branch
    Master

    View Slide

  44. Master
    feature-branch
    Master

    View Slide

  45. Master
    feature-branch
    Master
    Just Add Deployment!

    View Slide

  46. View Slide

  47. Don’t Separate
    tools for tech from
    tools for everyone

    View Slide

  48. View Slide

  49. View Slide

  50. Love To Travel
    Hubbers

    View Slide

  51. We Travel Tons
    Summit
    Conferences
    Mini-Summit
    Talks Vacation

    View Slide

  52. View Slide

  53. View Slide

  54. View Slide

  55. Work where you want

    View Slide

  56. Work where you want
    Work when You Want

    View Slide

  57. Work where you want
    Work when You Want
    Work when you work best

    View Slide

  58. Work on What You Want

    View Slide

  59. Work on What You Want
    Wait what?

    View Slide

  60. Code Search

    View Slide

  61. Code Search

    View Slide

  62. Code Search

    View Slide

  63. Search Team

    View Slide

  64. No Managers

    View Slide

  65. No Managers

    View Slide

  66. Open Source
    We work like

    View Slide

  67. You Wake Up
    Work on what
    And LOVE to do

    View Slide

  68. Avoid Burnout

    View Slide

  69. Avoid Burnout
    Speakerdeck

    View Slide

  70. Avoid Burnout
    Halp
    Speakerdeck

    View Slide

  71. Avoid Burnout
    Halp
    Speakerdeck
    Finance

    View Slide

  72. Passion:
    You can’t fake it

    View Slide

  73. Octocat
    Driven happiness

    View Slide

  74. Octocat

    View Slide

  75. View Slide

  76. octodex.github.com

    View Slide

  77. View Slide

  78. View Slide

  79. Hiring
    Wicked important

    View Slide

  80. Ship Early, Ship Often

    View Slide

  81. Have Compatible Taste
    Not same taste

    View Slide

  82. github.com/Yourname
    Helps too

    View Slide

  83. Onboarding
    Shipping Hubbers

    View Slide

  84. Great First
    Run Experience
    First Day

    View Slide

  85. Boxen
    “The Setup”

    View Slide

  86. Boxen
    “The Setup”
    Automate
    It!

    View Slide

  87. curl -s https://you.com/script/abc123.sh > /
    tmp/install-boxen
    bash /tmp/install-boxen

    View Slide

  88. boxen github

    View Slide

  89. script/setup
    rake setup:update

    View Slide

  90. class people::kdaigle {
    include alfred
    include chrome
    include dropbox
    include onepassword
    include skype
    include sublime_text_2
    include iterm2::stable
    include bash::completion
    include rdio
    include github::apps::mac
    include github::apps::play
    include github::apps::team
    include projects::github
    class { 'osx::global::key_repeat_delay':
    delay => 5
    }
    include osx::global::key_repeat_rate
    include osx::disable_app_quarantine
    include osx::global::disable_key_press_and_hold
    }

    View Slide

  91. I can deploy to
    Github.com
    First Day

    View Slide

  92. Happiness
    from our tools

    View Slide

  93. Build A Painkiller
    Fight the Pain

    View Slide

  94. First Principles
    Use
    For everything

    View Slide

  95. Heroku
    Amazon EC2
    Data center
    What Makes Sense
    For now

    View Slide

  96. Continuous Everything
    with janky

    View Slide

  97. WithJanky:

    View Slide

  98. WithJanky:
    Setup Repos from chat

    View Slide

  99. WithJanky:
    Setup Repos from chat
    Test every branch

    View Slide

  100. WithJanky:
    Setup Repos from chat
    Test every branch
    Update repo with status

    View Slide

  101. Ship it!

    View Slide

  102. /deploy finance to production
    /deploy finance to staging
    /deploy finance/feature-branch to
    staging

    View Slide

  103. GitHub

    View Slide

  104. GitHub50 times a day

    View Slide

  105. Over 100 times a day

    View Slide

  106. Internal Tools
    Are really good
    Our

    View Slide

  107. View Slide

  108. View Slide

  109. View Slide

  110. View Slide

  111. View Slide

  112. Culture All The Things
    In Summary,

    View Slide

  113. “Never do something just
    because other people do
    it that way.”
    “Do it because it’s the best
    way to solve the problem.”

    View Slide

  114. This Works For Us

    View Slide

  115. This Works For Us
    But it’s changing everyday

    View Slide

  116. Thanks!
    Twitter.com/kdaigle
    Github.com/kdaigle

    View Slide