Git Over It: One Long Night Through the Eyes of a Beginner

Scene:

It’s 02:30, the side of your face hurts, some inflamed acne can’t wait to kick your ass tomorrow. Your skin takes a beating when coding. All the hims and haws are interspersed with hair clutching and propping your face on one hand as you track down the latest bug in your app. The bug wasn’t there two days ago, at least, you don’t think it was…

Such is the pain of a beginner programmer. You’re not sure what it is you’re making, but you do have an inkling for what you think it could be. You’re not sure what is working and what’s not. You’re thinking maybe you should abandon this program and start building one that can push CTRL+Z for you. The tip of your index finger is very sore and the keyboard has started groaning. You start searching because some other bonehead must have run into this kind of issue before. Though, you’re not sure what to look for.

“How to save your code so that you can backtrack”

A poor first attempt, but it’ll do. You click a link.

GitHub.

What the **** is a repo???

Microsoft owns these guys…

Something stinks and it’s not your B.O. It’s also not the scent of the peasant of all confectionery foods, Lays BBQ chips.

Your love for the idea of open-source software can be put on hold for a moment. It’s time to learn Git.

Make a profile. Easy enough. Though, there is a nervous bubbling in your gut. The interface is intimidating, looks… ‘codey’ and you repel to the washroom out of fear and a need to expel the junk you’ve been running on while debugging.

You read. You actually read and stop skimming. Nothing is making sense. Seriously, what the **** is a repo?

Break from the narrative

The most intimidating part for me has been understanding the linkage between my code on my machine and how it communicates with Git. Does my code rely on Git? If I were to use a sports analogy, I want to know who is the Owner of the code and who is the Manager.

What does git init DO. I know that it initializes a repository but what does that really mean. Learning Git feels a lot like learning how to kiss. You have no idea how to start. When do I perk my lips? Will I know when our lips have met? Eventually, you end up just going for it and punching keys blindly into the command line. It ends up working, the lips are sealed so to speak. At least I think they are. I did what all the older boys told me to do: licked my lips, perked em up, and made sure I kept my eyes closed. What came after is all a mystery. Just like kissing, learning Git enforces you to put your trust into those that came before you.

Back to the Scene:

git commit

*cursor blinks

CTRL+C

:qa! <return>

git commit

*cursor blinks

CTRL+C

:qa! <return>

You google for ten minutes. Find out the terminal was waiting for a message but you can’t seem to figure out how to get terminal to accept the message you’ve typed. You find an alternative solution and leave the former problem unresolved.

git commit -m “I have no idea what is going on.”

Ok… So, the code is committed, which means, which means, what?

This moment, in fact a lot of learning Git reminds you of Will Ferrell and his storied acting career. You’re so overwhelmed, on a sugar crash and in need of a break. You hit youtube up for some Will Ferrell.

It’s 03:30, time to stop procrastinating. You’ve done more reading between midnight and this moment than you have in all your post-secondary career. You start to think that maybe Billy from 3rd grade was right, you are in fact… a dummy. You remind yourself that Billy sniffs empty paint cans behind Home Depot and carry on with the Great War. In a stroke of genius you figure out what seems to be the final stage of learning version control.

git push origin master

It could’ve been the 750ml of Monster Energy Drink, or those god-forsaken BBQ chips, either way you went into a fugue-state. You rise late the following morning, keys imprinted on the side of your face that is so very, very sore. You look up at the monitor.

It’s gone.

All of it. Your entire project was erased, you must’ve fell asleep on the undo key

Ah, but looky here, apparently Git can help us. I have no idea how, but it’s possible.

Another break from the narrative:

Now, this is the moment when understanding where your code actually lives becomes imperative. I’ve come across pull commands, but it’s unclear what they’ll do, if anything, to my current project. Version control can be very useful for working on a project with more than one person, or so I’ve read, but it’s a mystery to me how this could be given that using the commands suggested by Git feels exactly like discovering my sexuality. Confusing. Tiresome. Overwhelming. Git brings about the painful nostalgia of exploring something you aren’t able to comprehend yet but want to wrap your mind around so badly. Even if you only want to understand because all of the experienced folks around you are saying you ought to understand it. My sample-size of intelligent colleagues pushing me in a direction grows exponentially, and for the most part, everything they’ve suggested is worth doing. Though, in the gut-wrenching moments of your first kiss, or the long, convenience food-fuelled nights of backtracking your code, it doesn’t feel like it. It sucks, plain and simple. It sucks to feel intimidated and overwhelmed. It makes you feel like Ron Burgundy in a glass case of emotion.

I have yet to use the pull command, at this point it feels like too much to learn. I’m busy enough trying to get my code to run. The obtuse git commands can wait. Let me take a moment to reminisce about the days of holding hands, of having an iron stomach unnerved by prodigious piles of potato chips and pastries, and storing projects locally.

How much is your time worth?