This weekend, I learned Git.

No seriously, I actually spent over 2 hours teaching some friends at a hackathon the importance of Git. And I learned O.O

Beforehand, I knew conceptually what Git was - a version control tool used in order to manage programming projects. In fact, I used it on a daily basis - pulling, adding, committing, pushing - I did all of that while sprinkling in a bit of stashing and rebasing every so often.

But I never fully comprehended Git - what each part is related to, why a branch was important or how to visually imagine Git. So when I had the opportunity to explain what Git was, I found it much harder to put into words what I understood in memory.

Through wrestling over teaching Git, though, I gained valuable insights.

I learned how to create analogies on the fly, I found that I could no longer wing what I said, and had to make sure what came out of my mouth actually made sense, and I got to experience the joy of witnessing someone understanding a new concept that they'd struggle with for a while and applicate it.

At the end of the 2 hour session, not only did my peers get a better understanding of the difference between 'git commit' and 'git add' (as well as branches, rebasing and so many things I wish I knew at their year ._.), but I also gained a deeper understand of one of the tools that I will probably use for the rest of my life. (ok maybe that's a bit too extreme). In fact now, if you gave me a pen and some post-it notes, I could give you crash course visualization/undersatnding of git. (but that's for another time) :)

Now I digress, and of course, you may be wondering -- "Eric, aren't you a Junior? Shouldn't you be proficient in Git?"

But, I'll have you know, I'm probably one of the worst people when it comes to having a deep understanding of concepts and tools. I'm one of those people who could possibly go through life without ever understanding what I was doing. I take for granted for it because A) I never care to question, and/or B) I never have time to ask about it's use. (Live by abstraction... lol)

Which is kind of sad for me to live without understanding. I mean, true, ignorance is bliss. But isn't it crazy that in life, there is so much to learn and discover? Especially having the esteemed Google at my fingertips, a better understanding is reachable with a click of the button.

And I feel bad when I don't understand something, it makes me think of Richard Feynman's way of learning. As a famous physicist in quantum mechanics, he lived his life in a way that focused on being able to fully comprehend and teach a concept to others through the Feyman technique. Through the technique, a process of self-teaching, Feynman brought about a way taking complicated problems and concepts and breaking them down into simple ideas that could be conveyed in layman terms.

Now I'm not sure where I was getting at with that train of thought, but basically, I was blessed to have been able to go to the hackathon. Not only did I get to help teach others about important concepts that are used in everyday CS life (while also creating a cool worship set builder), but also being able to learn through the process of teaching. Without wrestling through a concept, I would never have been able to understand Git.

And that's why I always admire peers and teachers who can fluidly formulate finite phrases that communicate knowledge in a compact and understandable manner. (So shoutout to all of y'all who did that, and were a huge influence for me and others).

Anyways, this is just a mind blurb story of learning through teaching.

Hope you guys have been surviving, and actually living your life to the fullest. Don't let those exams, projects, and grades bring you down. You are worth more than those things.

Take care, and till next time! Ciao!

The views, opinions and positions expressed by the authors and those providing comments on these blogs are theirs alone, and do not necessarily reflect the views, opinions or positions of UT Computer Science, The University of Texas or any employee thereof.