github

Bench Mark: What I Learned

I wanted to do a quick check-in to log what I learned in my second year of full-time work as an engineer.

My first year was mostly focused around JavaScript, CSS (SASS), HTML5, and getting familiar with some of the tools that support my work (transpiling, compiling, uglifying, module building, browser dev tools, github, Sublime Text).

This year has brought major changes.  As my company moves into a microservice architecture and doubles our engineering team, I’ve needed to grow as well.  This year I became a part-time nodeJS developer, learning a bunch of the tools that come with that — docker, async unit testing (jasmine), MYSQL queries.  I also dabble in PHP when the need arises.

Instead of being a front-end person on a large team, I’m now the only front-end person on a team of 2 engineers, so if I don’t know how to do something, I have to figure it out.

The biggest change is just this feeling of confidence.  The number of unknowns has gone down so much that there is no longer a nebulous cloud of questions around every bug.  Now I can systematically check through every possibility (environment, settings, versioning, error in current application, error in outside application) to hunt down the root cause.

Interested to see where I’ll be a year from now.  I’m reading up to become much proficient with the shell and to keep growing my SQL ninja skills.  I’m creating a list for my team of some best practices we can adopt that will make our  microservices less cumbersome to test.

Other than that — we’ll see.

Advertisements
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.

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.