Note: Since the initial publishing of the post, Gabe has graduated and works as an instructor for Re:Coded, training Syrian refugees in Iraq as software engineers.
Gabe Jackson, a student in Flatiron School’s Online Web Developer Program, is our resident Sonic Pi expert. After being taken with Flatiron Dean Avi Flombaum’s Sonic Pi demonstration coding “Shake It Off,” Gabe started coding music in Sonic Pi—he’s now done two online lectures of his own to show off the Ruby-based live coding music tool.
While Gabe’s career has followed a bit of a winding road—spanning law and human rights—music has been a lifelong interest of his: he grew up playing saxophone and clarinet, whammed on cowbell in his high school band program, explored electronic music and mashups, and produced a weekly jazz radio show. He now attends Flatiron School through our online campus.
We recently spoke with Gabe about his path toward programming and the similarities he sees between music and coding.
You’ve had a pretty diverse career path so far. Tell me more about your decision to move away from law and learn how to code.
I don’t have a great reason for why I didn’t get into coding sooner, except that I never fully took the time to get over the initial learning hump.
While I was studying human rights in undergrad, I took an Intro to Computer Science / Programming in Java course and absolutely loved it. But I was nearing graduation and wasn’t about to switch majors, and, again, that whole wanting-to-be-a-lawyer thing.
I started pursuing law, first in the human rights field, and then in corporate law. After a little more than a year of legal research and document reviews spanning hundreds of thousands of pages, I decided that law probably wasn’t the field for me. But while doing doc reviews at a law firm, I rekindled an old love affair with RegEx and Excel macros that had lain dormant since high school (I used to admin a few IRC servers and had an internship crunching numbers for a pharmacy chain), which started to nudge me towards the coding world.
Then I caught wind of Avi Flombaum’s first Sonic Pi lecture, coding “Shake It Off” by Taylor Swift, and the rest is history.[irp posts=”2079″ name=”Learn To Program Your Favorite Song”]
What about Sonic Pi excited you?
Sonic Pi was the perfect re-introduction to coding because it resembled software I used to use all the time (FL Studio / Logic Pro / Pro Tools / other DAWs) when I was creating my own electronic music and mashups.
It was familiar; it gave cooler feedback than simple “hello, world” programs (making sounds is objectively cooler than “puts-ing” out simple statements!); it has a really shallow learning curve (you can start creating awesome sounds almost immediately with very simple Ruby code); it’s flexible, in that you can write the same line(s) of code a million different ways (an extension of the Ruby ethos), and you can start out writing a song using simple commands and gradually replace those as you learn more and more complex structures.
How did you decide on attending a coding bootcamp—Flatiron’s online program in particular—as the way you wanted to go about that?
When I was looking at various coding bootcamps, one of my chief concerns was reputation. It’s kind of like the Wild West out there, so I wanted to be as sure as possible that I was putting myself in an environment that would be conducive to success. I did my research into Flatiron School and came away very impressed.
As far as learning on the online campus, I met Avi for coffee after he was impressed with my Sonic Pi cover of The Postal Service’s “Such Great Heights,” and he really sold me on the program. I was initially leaning towards an in-person bootcamp because I was worried about maintaining motivation outside of a classroom environment. I decided to give Learn.co a shot first. Turns out that self-motivation is easy when you’re completely fascinated by what you’re learning.
What’s been your favorite part of the Learn.co platform?
I love that it’s self-paced. I know quite a bit about coding fundamentals (a lot of the intro was very similar to the Java course I took a few years ago), so I can breeze through those sections and spend more time on sections I have trouble with.
I also love that I can actively contribute to the open-source curriculum. I’ve submitted approximately one million pull requests for small changes (mostly grammar) to the curriculum (probably annoying the hell out of the curriculum team!), and it’s really playing nicely into my obsessively pedantic side.
It’s also really cool to figure something out and then almost immediately be able to apply that knowledge in helping someone else through the “Ask A Question” feature.
How about your biggest challenge so far while learning to code?
My biggest challenge has been finding the willpower to drag myself away from my laptop to spend time with my girlfriend and friends. Kidding… kind of.
I was having trouble understanding CSS selector specificity, of all things, and a fellow Learn-er took the time out of their day (or night) to explain it to me.
Coding music is obviously creative; do you see the other coding you’re doing now as creative in a similar way?
Yeah, absolutely. And will only become more so as I move onto more advanced sections.
Coding isn’t as obviously creative as something like music composition (which is distinct from what I’ve been doing—taking an already-composed piece of music and recreating it in a different medium), but it definitely involves creativity. Like I said, there are a million different ways to do everything in Ruby, so recreating each note/measure/instrument/piece in Sonic Pi can take on as much of a personal flavor as you like.
With music composition, there are two stages of creativity: the initial idea, and then the implementation. Recreating a song in Sonic Pi involves the latter; creating an original composition in Sonic Pi involves both stages. Creating an app involves the same two stages: dream up the idea, then figure out creative ways to implement it in code.
The reason why I said that the coding I’m doing will become more creative as I move onto more advanced sections is that I’m continuing to acquire new skills, and as my coding vocabulary expands, so too does my ability to formulate more and more complex sentences and to express a greater range of thoughts. I’ll be able to create a wider variety of things (and to look at some things I’ve already created in a different (perhaps better, or at least more efficient) way).
It’s like learning any language: when you start out, you learn the basics and can only speak/read/understand the basics. Then you steadily get more and more familiar and are eventually able to do really complex things like make jokes or write poetry. And being able to do those complex things is what really opens up your creative horizons.
Just a couple more questions: do you have any sense what you want to do once you finish the online Web Developer Program here at Flatiron? Is there music in your future?
I don’t think I’ll ever entirely kick the music habit, but I also don’t see it ever becoming the focus of what I do. Coding provides that same happy, creative rush that I used to have to seek out from music/games/sports/hobbies. It’s really cool realizing that I’ve finally found something that I not only want to do for a living, but also for fun.
Post-Flatiron School, I’ll look for developer jobs, probably in a junior position at first so that I can continue to learn and grow as a programmer. I also have a few passion project ideas that I’m already itching to work on, but those’ll be on the backburner for the near future.
Can you share any tips for others looking to learn code?
Best tip I have for people looking to code is to realize that code is literally everywhere, in every industry and corner of the world. Even if staring at some Ruby code doesn’t set your soul on fire, think about what does and I guarantee you there will be some nexus between that and coding.
Also, don’t freak out about which language you’re going to learn or where you’re going to learn (but also don’t rush into anything that requires a massive financial commitment without doing your due diligence). Just pick any of the popular languages (Ruby is a great one!) and get going! The freeIntro to Ruby courseon Learn.co is a great place to dive in.
Below, you’ll find another one of Gabe’s Sonic Pi demonstrations.