girlcoder

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

The one where she’s in over her head

Here’s a general picture of how my first 6 weeks at school went.  My instructors can confirm that this is pretty much how things were, although it’s possible they’re no longer working in education after working with a few students like me.

The day begins.  Unlimited possibilities!  I take notes through a 90-minute lecture covering server vs. client, NPM, expressJS, websockets, templating, and swig. It all makes perfect sense.

Sit down for coding portion of workshop, open on the web portal.

Try to figure out what expressJS is.  In the middle of an article from Daily JS, I am encouraged by TA’s to, ‘Just play around with it, you’ll figure it out!’ I use the terminal to accidentally create an express project in a nameless folder.

Get about 50 errors trying to create a Sublime command in terminal, because of .. something.  A bunch of “You are about to… Are you sure?”

No, damnit, I’m not sure.

Give up.  Drag each file individually into Sublime.

confused stick figurePuzzle through all the cryptic files in the express project.  Try to figure out how they fit together.  My instructor is trying to tell me something but the node console is now flashing red and yellow error messages, over and over and over.  I can’t get it to stop.  I can’t get it to STOP!

Restart my terminal.  Restart my browser.  Forget my workshop portal password and wait for the reset email to come through.

Look through the files some more.  Try to figure out where I’m supposed to type.

Oh no!  The internet is down!  Wait — that was just my mouse USB coming unplugged.

Re-plug mouse.  Finally manage to get some text from Sublime into the browser.  Then the whole thing shuts down again.  “undefined,” something something, no line number, …

Coding classmate comes by and asks if I got p6 working yet.  I’m still on p2.

25 minutes later… Turns out I put my jQuery code before loading jQuery into my file.  Also you’re not supposed to make an unnamed express project.  Also I wrote ‘sting’ instead of ‘String’.  Someone is trying to explain to be about how capitalization matters in JavaScript but not in HTML.  Someone else is talking to me about my abysmal indenting.  Also, when the directions said to delete line 12 of app.js, they actually meant line 13 of app.js, because expressJS has been updated since these directions were written. And my crash is due to … … one or more of these, or maybe something else.

On to p3.

New Year, Fresh Start

It’s a new year, and I’m beginning my first full-time development job.  Today I pushed my first code to productgirl jumpingion.  I could not be more thrilled!

2014 was a big year.  I quit my job, went back to school at Fullstack Academy, learned how to do big-kid javascript, built 13 full-stack applications, and learned how to work with many emerging technologies, from d3 to tessel to CSS animations.

As I approach my new job, I want to make sure that 2015 is an even bigger year.  My current goal is not to get broader by learning a bunch of new languages, but instead to solidify my understanding of what I’m doing now — front-end JavaScript, CSS3, HTML5, and their associated libraries.  I propose the following set of goals:

General

Increase proficiency with git, completing all 50 levels on githug

Continue to push at least 2 commits to github per week (personal projects)

Become a regular contributor to one open-source repo

Present at 2 Meetups or conferences

JavaScript

Create a new d3 web app based on a current news event or issue

Read EcmaScript 6 — all of it

Learn reactJS

Learn coffeescript (necessary for my current role)

Learn to work with a templating language other than swig, such as handlebarsJS

Solidify knowledge of promises and use them in a project

Be able to implement all JavaScript array methods without having to look up documentation online

Learn how to write and run effective unit, integration, and e2e tests in jasmine and mocha

Fun

Play around with 6 emerging technologies or libraries, including CSS animations, polymer, handlebars

Test out and review 10 of the hottest mobile apps this year

Create a personal project using PhotoShop and Illustrator, so that I’m able to use basic features effectively in both programs (necessary for job, useful in the future)

______

I’ve included several public-facing goals that are not directly related to learning, such as presenting at meetups and contributing regularly to an open source project.  These help me stay accountable to my learning by creating pressure to be able to explain what I’m learning, subjecting my understanding to scrutiny.

The fun goals in the list help me stay up on the latest technologies outside my specific realm, but they’re all things that I’d enjoy doing anyway.

What did you set out to accomplish in your first year?