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

More Decks by Kyle Daigle

Other Decks in Programming


  1. Brewing GitHub

  2. The Story of github

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

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

  6. @pjhyett @@mojombo@@defunkt

  7. distributed version control Better version control

  8. launched APRIL 10th 2008

  9. Bootstrapped

  10. No office

  11. No office Coffee shops

  12. No office Coffee shops houses

  13. No office Coffee shops houses traveling

  14. No office Coffee shops houses traveling no hours

  15. 3.6 million users 7 Million repos

  16. Github.com

  17. Github.com github enterprise

  18. Github.com github enterprise training

  19. Github.com github enterprise training github jobs

  20. None
  21. None
  22. None
  23. Culture:

  24. Culture: the trifecta

  25. Optimize for happiness

  26. First Principles fundamentals

  27. Taste Beautiful, tasteful, simple

  28. Culture How We use

  29. Happiness Where you are

  30. Remote more than half

  31. None
  32. None
  33. None
  34. Asynchronous

  35. Pull requests Chat Team Issues Repos Log Everything

  36. None
  37. None
  38. Hubot Chat ops

  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
  40. Pull Requests Rule everything around me

  41. Master

  42. Master feature-branch

  43. Master feature-branch Master

  44. Master feature-branch Master

  45. Master feature-branch Master Just Add Deployment!

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

  48. None
  49. None
  50. Love To Travel Hubbers

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

  52. None
  53. None
  54. None
  55. Work where you want

  56. Work where you want Work when You Want

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

    you work best
  58. Work on What You Want

  59. Work on What You Want Wait what?

  60. Code Search

  61. Code Search

  62. Code Search

  63. Search Team

  64. No Managers

  65. No Managers

  66. Open Source We work like

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

  68. Avoid Burnout

  69. Avoid Burnout Speakerdeck

  70. Avoid Burnout Halp Speakerdeck

  71. Avoid Burnout Halp Speakerdeck Finance

  72. Passion: You can’t fake it

  73. Octocat Driven happiness

  74. Octocat

  75. None
  76. octodex.github.com

  77. None
  78. None
  79. Hiring Wicked important

  80. Ship Early, Ship Often

  81. Have Compatible Taste Not same taste

  82. github.com/Yourname Helps too

  83. Onboarding Shipping Hubbers

  84. Great First Run Experience First Day

  85. Boxen “The Setup”

  86. Boxen “The Setup” Automate It!

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

  88. boxen github

  89. script/setup rake setup:update

  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 }
  91. I can deploy to Github.com First Day

  92. Happiness from our tools

  93. Build A Painkiller Fight the Pain

  94. First Principles Use For everything

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

  96. Continuous Everything with janky

  97. WithJanky:

  98. WithJanky: Setup Repos from chat

  99. WithJanky: Setup Repos from chat Test every branch

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

    with status
  101. Ship it!

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

    to staging
  103. GitHub

  104. GitHub50 times a day

  105. Over 100 times a day

  106. Internal Tools Are really good Our

  107. None
  108. None
  109. None
  110. None
  111. None
  112. Culture All The Things In Summary,

  113. “Never do something just because other people do it that

    way.” “Do it because it’s the best way to solve the problem.”
  114. This Works For Us

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

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