Skip to content

On learning Go (and transitioning from JS)

I’ve been thinking about writing out why I went looking for a Go programmer position, some feels on making the transition from focusing on JavaScript, and maybe some thoughts on programming languages in general.

Why the change?

The why feels very simple to me: the problem domain that I enjoy working on tends to have a lot of Go programming in it, with that problem domain being cloud computing (hence working on enabling it with HashiCorp).

It was very fun working in full-stack JavaScript at IOpipe, but in reality, I wasn’t full-stack much at all, and I wrote a bit this last summer about how I just wasn’t feeling working on problems in the browser anymore — I like interface programming, I simply prefer my interface to be the command-line or an API 🙂

Also: trying to explain to people the kind of programming I do/prefer to do started to get exhausting (and most definitely complicated the job hunt) with “you write JavaScript, so you must be a front-end developer.” FED is a very deep and broad topic, somehow at the same time.

What I’m afraid of losing

I’ve been thinking about something my friend mrb said on the internet recently:

Source: https://twitter.com/mrb_bk/status/1103337766702718976

That really struck a chord with me as to what I’m fearful about in what I’ve gotten myself into is … I feel like I walked away from a programming toolkit where I had (have?) this.

At the start of my professional programming career, I loved to dabble in languages and called myself a polyglot (still do, maybe). I think programming languages are a super interesting form to express ideas about how we should interact with computers. BUT I didn’t fully appreciate what mrb is talking about here until the last couple of years, when I really sunk into programming full-time on lots of different problems in JavaScript.

So, I’m going to miss it. I also miss knowing CSS, which I (dare I say) used to be pretty damn good at, but currently, have no idea how to lay out a simple webpage in “web standard” forms.

What I’m excited about

I’ve been thinking about how awesome being a beginner is, and also, the joy of unearned confidence.

Being a beginner, while I’m a little embarrassed to disclose the things I learn (I could get over this … because what, everyone is supposed to come out of transitioning/learning a new language fully formed magically somehow? No! Make mistakes, get messy!), it’s so cool that everyday there’s “oh well, that’s new to me” happenings.

HOW NEAT

And unearned confidence? There’s some boldness that I tap into when I’m beginning something, and I’m terming that unearned confidence, because I heard that somewhere recently. My mindset goes: I’m going to do this anyway, I’m not necessarily going to be super great at it (as far as deeply knowing a language goes) but that’s cool! Be bold! Showing up matters.

Also! I’m excited to be working [one of] the lingua francas of distributed systems … while of course, plenty of languages are in this space, as mentioned earlier, I’m excited that there seems to be an intersection of this language with this problem domain.

Is this like, a super big deal? [switching]

Not really! People change programming languages a lot over the course of a career, I presume. Some people go deep on a language for decades. I think both are great!

But I feel like people have sometimes made a big deal out of switching in the past, with some sort of “oh boo $PRIOR_LANGUAGE, that noise is so over” and I thought I could offer my experience as something is very not that.

I love that I got to know JavaScript so well, and as a language, it’s still very handy to be able to write in and express my ideas quickly using that “mind meld.” I am sad that that’d likely to go away and/or the language evolves, but also excited to learn new things.

One Reply to “On learning Go (and transitioning from JS)”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.