Up until late March/early April of 2013, I had NO prior background in coding. I had never even seen the command line or terminal of a computer and did not know what that was. I could not even afford a computer until 3-4 years ago, and it was only because one of my feminist friends bought me one (I had no income so even a cheap Windows computer was out of reach for me). I was not even savvy as a computer user, so programming was something I never thought was possible for me to be able to reach for. But all that began to change with the encouragement and support of a dear friend who is a soldier and a gentleman, Ed Drain. If it were up to me, Ed Drain, would be selected for a Ruby Hero Award.
Ed got me interested in learning a little bit of computer programming: I lost my code virginity to Ruby on Rails. I got to participate as a sponsored Rails Girls Summer of Code student on a 100% remote team, with Ed as my coach who lives in another state, and my teammate, who lives in another country.
It was in the Rails Girls Summer of Code program that I learned how to navigate the complexities of Github, spending many nights struggling for hours to learn how to use it properly - in addition to being thrown head first into the deep end of the coding pool, trying to learn enough a bunch of difficult new stuff all at once.
I spend many nights for the duration of the three-month long Summer of Code program swearing at my computer and at the Git version control system. I had very little confidence before the Summer of Code, and quite frankly, I had a lot of self-doubt.
But after a mishap with installing some ruby gems in my projects directory as opposed to my /opt/rubies directory (I use chruby and ruby-build as a stand-alone program for adding different ruby versions) and didn’t realize it until I accidentally pushed a binary file up to the team’s repo, Github went from being my nemesis and suddenly became my new best friend.
A different on-call Rails Girls coach walked me through a code rebase (which loused up the Git workflow), leaving me with a good code copy but a messed up workflow with the team’s repo. I spent the next several hours pouring over StackOverflow and the Git manual, until I found what I needed to undo the workflow mess. A git --reset SOFT command, which, unlike the git reset --HARD, will not mess up the workflow.
I also discovered how to set up additional remotes to fetch from and push to, which can best be described as prophylactic programming practices: your code changes will be very well protected. In that, I had surpassed my coach, and thus, I learned how Git can be very helpful to those just beginning to learn programming.
I started out in the Summer of Code, hoping to learn how to omniauthify the Hackety-Hack. But I ended up mastering Git instead, without expecting to.
Being able to navigate Git and get the most out of using it as a code-saving tool and a code-mistake-undoing device is something that should not be discounted or overlooked. It is as important to have a solid grasp of Git as it is to learn how to build an app using Ruby, Rails, or any programming language.