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 full-size slide

  2. The Story of github

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  5. @pjhyett @@mojombo@@defunkt

    View full-size slide

  6. distributed version control
    Better version control

    View full-size slide

  7. launched
    APRIL 10th 2008

    View full-size slide

  8. Bootstrapped

    View full-size slide

  9. No office
    Coffee shops

    View full-size slide

  10. No office
    Coffee shops
    houses

    View full-size slide

  11. No office
    Coffee shops
    houses
    traveling

    View full-size slide

  12. No office
    Coffee shops
    houses
    traveling
    no hours

    View full-size slide

  13. 3.6 million users
    7 Million repos

    View full-size slide

  14. Github.com
    github enterprise

    View full-size slide

  15. Github.com
    github enterprise
    training

    View full-size slide

  16. Github.com
    github enterprise
    training
    github jobs

    View full-size slide

  17. Culture:
    the trifecta

    View full-size slide

  18. Optimize
    for happiness

    View full-size slide

  19. First Principles
    fundamentals

    View full-size slide

  20. Taste
    Beautiful, tasteful, simple

    View full-size slide

  21. Culture
    How We use

    View full-size slide

  22. Happiness
    Where you are

    View full-size slide

  23. Remote
    more
    than
    half

    View full-size slide

  24. Asynchronous

    View full-size slide

  25. Pull requests
    Chat
    Team
    Issues Repos
    Log Everything

    View full-size slide

  26. Hubot
    Chat ops

    View full-size slide

  27. 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 full-size slide

  28. Pull Requests
    Rule everything
    around me

    View full-size slide

  29. Master
    feature-branch

    View full-size slide

  30. Master
    feature-branch
    Master

    View full-size slide

  31. Master
    feature-branch
    Master

    View full-size slide

  32. Master
    feature-branch
    Master
    Just Add Deployment!

    View full-size slide

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

    View full-size slide

  34. Love To Travel
    Hubbers

    View full-size slide

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

    View full-size slide

  36. Work where you want

    View full-size slide

  37. Work where you want
    Work when You Want

    View full-size slide

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

    View full-size slide

  39. Work on What You Want

    View full-size slide

  40. Work on What You Want
    Wait what?

    View full-size slide

  41. Open Source
    We work like

    View full-size slide

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

    View full-size slide

  43. Avoid Burnout

    View full-size slide

  44. Avoid Burnout
    Speakerdeck

    View full-size slide

  45. Avoid Burnout
    Halp
    Speakerdeck

    View full-size slide

  46. Avoid Burnout
    Halp
    Speakerdeck
    Finance

    View full-size slide

  47. Passion:
    You can’t fake it

    View full-size slide

  48. Octocat
    Driven happiness

    View full-size slide

  49. octodex.github.com

    View full-size slide

  50. Hiring
    Wicked important

    View full-size slide

  51. Ship Early, Ship Often

    View full-size slide

  52. Have Compatible Taste
    Not same taste

    View full-size slide

  53. github.com/Yourname
    Helps too

    View full-size slide

  54. Onboarding
    Shipping Hubbers

    View full-size slide

  55. Great First
    Run Experience
    First Day

    View full-size slide

  56. Boxen
    “The Setup”

    View full-size slide

  57. Boxen
    “The Setup”
    Automate
    It!

    View full-size slide

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

    View full-size slide

  59. boxen github

    View full-size slide

  60. script/setup
    rake setup:update

    View full-size slide

  61. 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 full-size slide

  62. I can deploy to
    Github.com
    First Day

    View full-size slide

  63. Happiness
    from our tools

    View full-size slide

  64. Build A Painkiller
    Fight the Pain

    View full-size slide

  65. First Principles
    Use
    For everything

    View full-size slide

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

    View full-size slide

  67. Continuous Everything
    with janky

    View full-size slide

  68. WithJanky:
    Setup Repos from chat

    View full-size slide

  69. WithJanky:
    Setup Repos from chat
    Test every branch

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  72. GitHub50 times a day

    View full-size slide

  73. Over 100 times a day

    View full-size slide

  74. Internal Tools
    Are really good
    Our

    View full-size slide

  75. Culture All The Things
    In Summary,

    View full-size slide

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

    View full-size slide

  77. This Works For Us

    View full-size slide

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

    View full-size slide

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

    View full-size slide