Last night I gave an "Intro to Source Control" presentation for the Sacramento Adobe Users Group. This was a first trial run of a similar talk I'll be giving at CF.Objective later this year. (While the preso at CF Objective will focus on using Git with GUI tools, last night's talk was even more basic, starting with a discussion of what source control is, why you should not be making .BAK files any more, etc.)
Coincidentally, over the last week or so there have been some discussions on Twitter/blogs about people not using source control of any kind. From my perspective (I didn't participate in the convos, merely read the different posts) it boiled down to 2 things being said:
1. Use Git, infidels! 2. If you're not using source control, you're an absolute moron of the highest order and should be shunned from any further assistance! Infidel!
While humorous, and containing a bit of truth, neither of those statements (nor the variations of them) are actually very helpful to people unfamiliar with source control. (And the same could be said while discussing any new technology.) Before I gave my "Intro to Source Control" preso, I did my usual round of promotions (Twitter, Facebook, etc). And I got back several comments that were all variations of "So will this be a 2 minute preso? You'll walk in, tell them to USE GIT! and then leave, right?"
Ummm...no...and that mentality, while funny, is not helping the community. And neither does posting "what the heck is WRONG with you?!" in response to people saying they don't use source control. Scaring people away when they're asking for help, isn't beneficial to anyone. Ditto for assuming every software developer knows what Git is and why it's awesome. (For the record, I only kind of like Git -- I do not think it's perfect. Git, like many other tools, has room for improvement. Truth be told, about half of my projects are still on Subversion, because I won't GAIN anything by moving them to Git.)
Last night's preso had a full house. In fact it was the largest user group I've spoken at in ages. (Sidebar: most of my "introductory" presos draw significantly larger crowds than any "advanced" presos I've ever done.) A big chunk of the attendees were very junior designers and developers, many of which are still in school. Nobody in the room had any bias, and they were all there trying to learn the right way to build projects.
I began the presentation with making a .BAK and .OLD file as my quick way of saving my changes, then gave an explanation of why that's a bad practice. We proceeded to go into some general concepts about source control -- checking in/committing a file, reverting a previous change, what a branch is. (We didn't even use GitHub, not even once. And nobody complained, and nobody asked a single question about GitHub.)
I did some quick polling of the room, and answered questions along the way. Here are some things I learned throughout the evening...
* We had roughly 30 people in attendance. By comparison, I usually see 10 to 15 people at meetings. So this topic caused at least DOUBLE the number of people show up.
* About 1/3 of the room admitted to having NO IDEA what "source control" even MEANS! Which means there were probably even more attendees in that situation that just didn't feel comfortable raising their hands to answer that question...perhaps they've been called "infidel" before and received arrogant responses via Twitter or blogs when asking questions in the past. That would certainly affect my willingness to answer such questions.
* Questions asked included things like "So doesn't source control only work for websites? What if I want to use it for my video game code?".
* Also asked was "Wait, why do I HAVE to have a source control client AND server?"
* When mentioning why making .BAK files is now an outdated and dangerous practice, you could see various notepads scribbling down this BRAND NEW (to them) information.
While I did give small demos of TortoiseGit and referenced the ProGit book, 90% of the content was pretty platform agnostic. The point of last night wasn't to preach "USE GIT, infidels!" -- that would have LOST the audience, and left everyone feeling insulted. The point of last night was to take 40 people that weren't using ANY source control, show them why they should start, some basic terminology and concepts that will be helpful along the way.
NOW we can go back into that group at a later date, and give them an "Intro to Git" presentation that won't completely lose the audience. As long as it's a presentation that stays AWAY from the Git command line tools, and instead focuses on using one of the GUI clients, as that's moreso the type of workflow this audience will be using. Scoff if you wish, but "knowing your audience" is a big part of what makes presentations, Twitter posts, Blog entries, and Stack Overflow "answers" successful. Making fun of your attendees/viewers/followers/whatever (or discussing the advanced end of a topic merely because it's more fun for you than the intro stuff) doesn't do anyone much good.