Keep on Truckin'

Published on April 23, 2016

Hello! I'm still here! Never fear, dear reader, I'd never abandon you. I've been meaning to do this post for a little while, so here we go.

It's been a month and a day since the demo night at Bitmaker where we got to show off chortal to the world at large. It's one of those things where it feels like it was ages ago but also like, yesterday. So what have I been doing with myself?

As I wrote about last time (I think), after the demo night came "Hiring Week". I had a bunch of interviews, and even a second round interview, but nothing panned out, unfortunately. It was a cool experience, and interviewing itself is a valuable experience. It's good to get some insight into what employers are looking for in developers, and into the techniques and strategies they use to try and find those developers. The interviews were pretty unremarkable from what I saw, but some of my classmates had things pretty different. Mine were mostly standard interview questions with some technical stuff mixed in. One company I interviewed with gave me a rapid-fire series of technical questions, escalating in difficulty, until I couldn't answer any more. That was kinda fun, if a bit stressful. They also gave me a short (10 minute) written test about Ruby, which I found pretty straightforward. Another company had me walk them through my final project and quizzed me on features and design decisions we made while we were working on it. Most recently I had a company give me a kind of homework assignment to take home and submit in a few days. A friend of mine had a 20-page multiple choice test, and some others had a 3+ hour interview where they had to build a game in Javascript, or write code on the spot. So there's a pretty big range, which is interesting. Some companies make decisions pretty quickly, others seem to want to have candidates come in again and again to talk to different people about different things. It's hard to predict, but it keeps things pretty interesting.

I can hear it coming. The big question. "But do you have a job yet?!" And the answer, dear reader, is, unfortunately, not yet. I had an interview a few weeks ago that I was optimistic about, but it fell through. I had another interview last week that I'm again, optimistic about, but I'm trying not to get too ahead of myself. Cautious optimism is the name of the game. A couple of my friends have gotten jobs so far though, so I figure it's just a matter of time. Finding the right place and the right company at the right time. It seems like there's a good amount of luck involved, but I think that's the way it is with jobs in general.

So what have I been doing for the past month, apart from interviewing? Trying hard to keep my coding chops up. I've spent some time learning BackboneJS, a front-end javascript framework. It's kinda fallen out of fashion, but it was recommended to me as a good first framework to learn because it's pretty lightweight and "unopinionated", as we like to say. By that, I mean it lets you kinda work with it however you see fit, rather than forcing you into certain conventions that might make things more complex than they need to be. Backbone is kinda fun, and I could definitely see the use for it, even if, for me, it ends up being a stepping stone towards learning a more modern framework like Ember or the "new hotness", React.

I've also been taking an online intro to computer science course. cs50 is the intro to computer science course offered at Harvard. It's meant for anyone who wants a base in CS, regardless of your major. It's free online, has great reviews, and is hugely popular, both at Harvard and online. It's been great so far (not that I'm very far into it) for filling in the basic, fundamental concepts of computer science that you don't learn at a bootcamp. Things like how does the computer actually allocate memory to accomplish tasks. How does an array work, for example. It also covers various algorithms used commonly in CS. Ruby is a high-level, developer-friendly, abstract language, so it comes with things like a sort method. Sort takes an array, like [1, 5, 3, 7, 4, 9] for example, and sorts them, lowest to highest, so you end up with [1, 3, 4, 5, 7, 9]. Obviously, this is super useful. There's lots of cases where you might want to sort a series of numbers. But how do you actually do that? That's what cs50 is teaching right now.

It's really interesting so far, largely because of the programming languages used to teach the course. I learned Ruby and Javascript. Ruby, as I mentioned in a previous post, is actually written in another language, called C. C is a serious, low-level language. For example, parts of various operating systems are written in C. It's a totally different language from Ruby, and that's what they use to teach the first portion of cs50. So instead of just using the sort method like in Ruby, the challenge is to actually write a function that can sort an array. I'm basically writing the Ruby sort method, which is cool. It's fun to try to solve programming challenges in such a different environment. I can generally figure out pretty easily the steps needed to solve the problem, but implementing it is much trickier in C than Ruby.

Later in the course they shift gears and teach some basic web development using PHP, which is an older language that powers a huge portion of things on the internet. It gets a bad rep among developers, but it's been around forever (Wordpress, for example, is all PHP), and it's a super employable skill. As a developer, being a programming polyglot is never a bad thing. The webdev projects in cs50 seem like things I could do with Rails already, but it'll be interesting to see how a different language will handle things.

All in all, life post-Bitmaker has been a bit strange. Days and days of unstructured free time, very few obligations, with occasional peaks of high-focus, high-intensity interviews. I think I've managed to keep myself pretty well occupied, and so I guess there's not much to do but keep on truckin'. Until next time, dear reader, and may the force be with you.