###Providing a road map for learners
When learning something new, I prefer to have a reasonable understanding of it before I jump into using it—kind of like reading a map before I travel somewhere new. When learning programming, it’s often hard to find a reliable map.
Take Git, for example. I’ve been reluctant to use it, because there are some basic concepts about how it works that I’ve never been able to find a satisfactory answer to.
##learning Git, as an example
For example, say I’m working on a document, and I want to keep track of the changes to it. A traditional approach might be to make multiple copies of a file every time you make a change. (That’s the way I’m used to working, but it’s pretty inefficient.) A version control system like Git makes this process a lot more efficient, because it can track changes, merge them, step backwards etc.
Until I had a lightbulb moment recently, I never understood something very basic about Git. Let’s say I set up Git to track changes to that document I’m working on. Then I create a branch to work on, so that I leave the master (original) version of the document alone. I go to the folder on my computer that contains the file, open it, make changes, and save it.
The document’s folder still contains just the file, with the changes I’ve made. So where’s the original? This was what I could never understand. What if I wanted to open the original file and check something in it? All I see in the document folder is the latest version of the document.
The answer is that, when using Git, the version of the document you see in the document folder depends on which version (or branch) is active in Git. If you switch back to the master branch in Git, the original master file magically appears in the document folder, replacing the modified version.
For some reason, none of the things I’ve ever read on Git—blog posts, tutorials, books—mentions that basic concept—something I would consider crucial to having a conceptual overview of how Git works.
###Understand what your audience sees
I urge anyone presenting information to beginners to think really carefully about what it’s like to be in their shoes, and carefully to fill in the concepts that are necessary for understanding how something works. Leaving out essential concepts is like giving directions but failing to mention a critical turn along the way. All following instructions could be rendered completely useless by that one error—no matter how brilliantly presented!
What is your response to this? Do you have examples of your own lightbulb moments, and what concepts were missing for you when learning something new?