Life at Expedia Group Blog
From git to Teaching Git
Amanda Olsen | Software Development Engineer | Expedia | Chicago
According to the 2018 Stack Overflow survey of 100,000 developers across the globe, 87% use Git. But do we know what git is? I thought I did, until my non-technical British friend informed me how hilarious it was that I use Git. “Git” it turns out, is British slang meaning a contemptible, stupid, annoying, juvenile, silly person, usually a male. Thanks Linus for bringing such positivity into the daily workflow of practically everyone! And yes, it’s in the source code of Git: Linus chose the word fully intentionally.
Fortunately however, I have graduated from being a git to teaching Git to thousands. I share this story to encourage developers to branch out (pun intended!).
I initially wanted to teach Git because I was bad at it. I was a git at Git. I wasn’t clear on what exactly was happening when I rebased or merged. For the same reason, I wasn’t clear on the advantages and disadvantages of each. The concept of “what story do I want X branch to tell” was one I had never considered, i.e. the concept of building a usable history. Repo theory and the major workflows I was unfamiliar with. Several best practices I had yet to encounter (e.g. rebase locally, otherwise known as a squash, before pulling using rebase so that this rebase process is simpler and more efficient). The limits and best uses of git reflog were also unclear to me, despite the fact that I used it somewhat regularly. And how Git actually manages content was opaque to me. There are many, many more things I could list.
The best way to master something is to teach it, because you have to learn so much more than what you actually teach. (And because students will ask you questions you don’t know the answer to!) When I started prepping to teach Git, one developer told me he couldn’t imagine needing more than one hour to teach Git. Another developer told me he couldn’t imagine needing a class at all! For him, using Git is like walking. You don’t need to teach anyone to walk! Keep that in mind as the story continues.
Last fall, I taught a Git 101 class here in the Chicago office for Expedia Group employees. Then Freddy Guime encouraged me to lecture on the topic at DevNexus that March. They wanted Intermediate Git, so I had to change scope, research more, and update my content. At DevNexus, I got recruited by Pearson/O’Reilly. While DevNexus only needed a one-hour lecture, Pearson needed a three-hour course, so again I expanded scope and researched and learned more. (And yes, as I mentioned in a previous article, part of this was grueling.)
In my first iteration of Intermediate Git for Pearson/O’Reilly, I had between 350 and 500 students. And in my second iteration, I had 560. In both cases the class size maxed out and, for the second, there was so much interest that they made a special exception to allow more than 500 registrants. These were three-hour courses focused on only a subsection of Git concepts.
My trajectory of “from git to teaching Git” was: I wanted to learn, Freddy intervened and took it to the next level, I put in a ridiculous amount of hours, and I have found myself an O’Reilly instructor. View my October 29 class. The high-level topics of this class were:
- Learn the differences, advantages, and disadvantages of merge and rebase
- Intelligently converse on why you should choose merge or rebase
- Create and use aliases, if desired
- Differentiate between a few primary workflows and their benefits
- Interactively rebase, i.e. squash commits
- Set up an external editor
- Rebase a local branch onto another local branch
- Update a local branch from a remote branch using rebase
- Move forward, backward, or sideways in time to get out of a jam or just to use Git to its full creative potential
Because this has been such a rewarding and broadening experience, I want to encourage developers, for whom teaching is comfortable, to take it to the next level, at least once. Just give it a try. Like Freddy got me out of my comfort zone which in turn got me to a really good place, consider other expressions of being a developer. Teaching may be the most potent way of learning.
So, uh, don’t be a git, but learn and exploit Git to the fullest!