The best reverse-interview question, or: why source control is about more than just code
What source control software do you use?
I’ve been asking this question at the end of interviews (in the “Do you have any questions for me?” phase) for the last two weeks, and it’s turned out to be one of the most revealing questions I could possibly have asked. Answers have ranged from CVS (still!) to Git to Perforce to that Microsoft Team Foundation Server thing.
And those are all well and good; it doesn’t really matter to me what SCM you’re using, nor will your choice (on its face) affect my decision. What really matters is why.
The reasoning behind your SCM choice tells me an incredible amount about you, your company, and your management, all veiled as a technical question. If it’s a tech interview, you’re likely a developer, and I can see whether you appreciate your source control, look at it as an annoyance, or just don’t care one way or the other - indicative of how important that SCM system is in the company. If you’re management, you likely had to make a choice (or deliver a decree) at some point about that system, and your reasoning tells me about how strongly you micromanage, care about centralization, and understand your own release process. Either way, it’s all good information.
Let’s look at a couple examples (both real companies).
“Company A” uses Subversion - not uncommon in the industry. In a tech interview, though, the interviewer said that they had looked at Git and wanted to migrate, but literally didn’t have enough developers to explore the switch (hence the hiring process for the company). Furthermore, on a small scale, the company allowed individual developers to use their own systems, so long as they integrated with the central repo as necessary (for Git, this means git-svn or similar).
“Company B” also uses Subversion. Their approach, however, is much different: the CEO made a decree that SVN was the required tool for all developers. He justified this due to his desire for one central, “official” repository that always had the master branch, and the need for developers to always be working against that branch.
As an advocate of distributed version control, Company A sounds pretty good - they allow Git or Mercurial on a small scale, and are open to newer technologies companywide, indicating an agility within their development department. Company B, on the other hand, sounds as though development is hamstrung by management, and that the people with decision-making power don’t understand the new technologies available in DVCS.
I extend this kind of reasoning to pretty much every company I talk to. The ones on CVS better have a good reason (large legacy code, for example); Microsoft TFS users are usually apologists as well, which has its own implications; and people on Git or Mercurial generally go into great detail about why they like it and what problems they’ve had recently. The last is the most encouraging, because it implies a level of software craftsmanship (caring about their tools) rather than a focus on just slinging code. There was even one company on Darcs, which was incredibly interesting just for the different perspective they offered.
In general, SCM choice offers an interesting window into a company from a development perspective - it speaks to the mentality of the developers and the atmosphere of the company, more than a straight-up question about “day-to-day experience” might.