git

NYC reflected in round mirrors

Git-iversary

This week in February, many people celebrate their love toward another person; I quietly celebrated a one-year mile-marker with a partner with whom I’ve had a love-hate relationship.

When I joined github a year ago, I just didn’t git it.  If you look at my commit history for 2014, I committed on three days in February, followed by a commit in… June.  When my instructor introduced me to git, it took a long time to set up and even longer to use.  It seemed like wasted effort and needless complication.  NYC reflected in round mirrors

But this didn’t surprise me.  The ultimate DIY-ers, developers tend to do things the hard way just for the sake of controlling every step of the process.  If chefs acted like developers, they wouldn’t order any ingredients at all, instead painstakingly adding each molecule of their sauce under the microscope until it had the desired consistency.  Mad scientist to the max.

This need for control is why developers get obsessed with details, like the whole “build your computer yourself” movement, or “use linux instead of a pre-fab-OS.” In fact, if developers had their way, computer users would have to complete the electrical circuit necessary to run our computers with their left hands, while typing 1’s and 0’s on our two-key keyboard with the right.

Git seemed like one more example of their distorted priorities.  Every single task required several commands with dashes and dots and asterisks, all of which I had to look up.  This compared to just hitting CMD-S in Sublime and calling it a day. Why did I need to upload my code to the internet constantly when I could back it up just fine using my computer and Bill Gates holding brand new Windows 3.0 boxcollaborate over dropbox?  Then, there was writing commands from memory in the Terminal, basically regressing to the MS Dos of my childhood (something I thought we graduated from in … 1993?)

Once I started using git on a regular basis in July 2014, it was due to prompting.  I was inspired by a post from John Resig talking about his resolution to commit a little bit to his personal projects every day, just to keep his momentum and learning going.  I also wanted to fill in some of the pretty green boxes in my commit history.  So I jumped in head-first to the tangled web woven by the git-opus, or whatever that thing is supposed to be.  There were a lot of bumps in the road, with –hard resets, repo remote adds, and merge conflict hell becoming part of my regular day.

But I kept going, trying to commit every day when possible.  I snuck a few minutes whenever I could — during my beach vacation (COMMIT!), on the Saturday LIRR (COMMIT!), waking up with an algorithm at 5 in the morning (COMMIT!).

All I can say is that after a while, it started to feel like a game.  Getting myself into jams, getting myself out, committing.  Git became a rewarding — if occasionally very sticky — part of my problem-solving workflow.

I can’t defend the complexity of Git.  I don’t know why we need 50+ command variations for a simple git log, or why there are pages and pages and pages of explanation just for that one command.  It’s great.  It’s ridiculous.  Git has everything I could possibly dream of, yet practically speaking, very few things I will use on a regular basis.

Welcome to the open-source world, I guess.  My utopia.  My hell.

Advertisements

Culture Shock

IMG_0441When I say coding is ‘overwhelming’, I’m aware that this description is not very specific. There are so many things about coding that are overwhelming, and not just the ‘language barrier.’ I’m in brand new territory, filled with all kinds of new entities, new programs, new means of navigating around the screen, new means of breaking my computer without meaning to…

Here’s a sampling of some of the new programs I’ve needed to download/learn since I’ve started coding:

  • The Terminal — allows for navigating around your computer’s file structure and creating/modifying files using only keystrokes. Has its own language, with commands similar to the MS Dos commands I used growing up.
  • VIM — a pre-mouse text editor program. Has its own interface.
  • Sublime Text — a text editor program, probably the one used most in the coding world.
  • FileZilla — app that allows you to connect to both a local and remote repository in order to upload files to your website.
  • GitHub — website that allows multiple people to work on a project at once and take it in different directions.
  • GitHub app — helps users manage and upload local changes to GitHub website.
  • Go Daddy’s phpMyAdmin — SQL database manager that lets you view, create, and edit data structures on the back end of your website
  • Stackoverflow.com — The wiki-answers of the coding world! Any question you’ve ever asked has already been asked and tackled on stackoverflow.com.

Looking at this list, you’d think my Number One problem would be not knowing how to use these applications.  And yes, that is definitely an issue.

But it’s really irrelevant because I can’t even remember my password for half of these!  Every one wants a different number of characters, a different number of capital letters, no letters at all. …  Yeah.  I am so screwed.

Ummm… Now I “Git” It?

Note: This is not by any means a review of GitHub in its entirety.  Merely the first impressions of a newbie.

There is so much to love about GitHub.  From the cute little graphics to the fact that it has its own desktop app AND works with the terminal, to the snappy terms unique to it like ‘fork’ and ‘pulse.’  

Image

But this is also what I find so frustrating about the interface.  To a new user, it is unnecessarily complicated, with too many buttons, new terms, and view options all thrown at the user at once.  There are 32 different buttons at the top of my screen, not even counting the list of files.  This is the opposite of simple design — this is FIDDLY.  

The many abbreviations and new terms also threw me off.  I’ve heard the word “Repo” before, but more in the context of real estate.  Some of these unfamiliar buttons should provide explanatory text when hovered over.

There’s a rule about successful sci-fi/fantasy writing: Provide the reader [user] with a point of reference.  This means that there is a limit to the number of new things you can introduce, and most elements of the book need to be familiar.  Because no one buys a book filled with gibberish.  That rule would apply here, too — there need to be more bridges to the familiar to invite new users to participate in these dialogs.

I understand that some of these roadblocks are there for a reason — I really do — because it’s not like you want that little brat down the street sending pull requests for your beloved project.  But if development really wants to attract the best new talent from all corners, GitHub needs to feel less like insider baseball and more like a place that makes it easy to contribute your ideas.

Image