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.
