We're growing quickly here at New Relic which
means that we've got new engineers starting almost every week so it's worth
talking about why everyone checks-in code on their first day. Three reasons:
keeping it simple, eliminating the nonsense, and being part of the team.
If it takes more than a day to get someone set up with communication software (email,
ichat, campfire, etc), a dev environment (RoR, Java, git, local memcache, all the source
code and scripts, ...), and our project tools (tracker, tender, wiki, etc) then our
environment is too complex. If it's too complex, we need to make it simpler, usually
through more scripting. Each new engineer is a proof-point that our environment is still simple enough.
If it takes more than a day for a new engineer to get all the keys to the kingdom then
we're wasting the expensive brain power that we've just hired. If it takes more than a
day for a new engineer to learn our tools and do the basic cycle - start a story, write
a failing test, make a code change, run the test suite, commit the change, deploy to
staging, and close the story - then our tools are imposing too much nonsense on our
engineers. Each new engineer is a proof-point that our tools are not a stupid burden.
And, best of all, there's a huge personal win when you start at a new job and, on day one,
you're making a difference. We're very different than those big corporate environment
where they can't even find your desk on the first day and you can't get a computer for
the first week and nobody quite knows what you're supposed to be doing anyway - we're a
start-up and we're doing great things and we don't have time to waste. That's why you
joined us and that's why you're happy that you're writing code on your first day.