GrooveStomp's Gemini Capsule

----

A New Career Direction: C++

The first programming language I learned was Pascal. I mean, I didn't *really* learn it; I did a short course in high school with it and basically just threw everything over the fence to my teacher at the end of it; so I didn't get much out of it. After that it was C++. C++ is the language I used when I started working professionally and I continued to use it for the entirety of my first two years at EA. When I returned to EA for another year on contract I used it for a little bit; but the focus was primarily on ActionScript at that point. Since then I have dabbled with and used a great number of other programming languages, professionally and otherwise. I also started following Casey Muratori and his cohorts and developed a strong distaste for C++. In 2015 I decided to go "back to basics" and learn C. I had always assumed I knew C since I did C++, but I was never really clear on the differences. I was one of those people who said C/C++ assuming it didn't really matter. I remember hearing a story from one of the senior developers from Radical Entertainment back in the videogame programming course I did in University about a guy who interviewed for them who went on and on about how crappy C++ was and how he preferred C. I remember thinking that was ridiculous at the time, not knowing how or why anyone could come around to that position.

So here we are in the tail end of 2021 and I have decided I'm going to pursue C++ again. This isn't the first time either. In 2019 I started debating this choice with Justin H. Jones, and I had a friend connect me with one of his C++ programmer friends at Amazon working on client devices there. For various reasons, mostly personal taste related to the intro here, I decided against completely following through. That didn't stop me from starting to write a gameboy emulator in C++, though; a project I wound up abandoning.

My Abandoned Gameboy Emulator

At the end of 2020 I was growing frustrated with the particulars of the devops role I held at Commit and decided that yes, now was the time to focus on C++. I started reading "The C++ Programming Language" and revived my Gameboy emulator. I applied for any C++ role I could find and did at least one interview. The problem there is I was at the end of my rope and had to make a change as soon as possible. My previous employer also expressed interest in re-hiring me and I remembered having a very good, highly productive time there in 2019 along with good compensation. So, I got antsy and I went back to my former company, letting the C++ thing slide. So I guess from that perspective, this C++ stuff is a continuation of the end of 2020; it's just that I got distracted by my new role at Mogo that I started this year.

My plan is to get through "The C++ Programming Language." I have another book or two on more modern C++ that I may or may not read through depending on how this first book goes. I feel like I still have a solid foundation in C++; it's more just getting accustomed to the new features introduced since 2007 or so. These are mostly smaller things; but I think the "flavour" of modern C++ is quite different. I also want to develop my own opinion about this more modern C++ based on any exposure I can get. Things like how to organize code to positively impact compile times, how to manage data hiding, how to approach data-oriented design; that kind of stuff. Certainly TC++PL pretends that C++ has no overhead and is the ultimate tool for expressivity and low-level programming, but there are signs throughout the text otherwise. Things like "within 25% of C" and the consistent repetition of "C++ is elegant" and so on. Anyway, I digress.

Outside of reading, I also plan to do some legitimate C++ programming. I have a specific project in mind I'd like to pursue; but probably a lot of small C++ programs as well. RachelByTheBay uses C++ in what I assume is a fashion similar to how Sean Barrett uses C for writing small personal programs. I'm also curious to check out RachelByTheBay's 'bb' build tool. I think consistent work at this stuff (likely interleaved with reading texts) should give me a decent refresher and have me prepared for doing interviews again.

RachelByTheBay Writing

RachelByTheBay C++ Depot Build Tool (bb)

Sean Barrett Advice for Writing Small Programs in C (Youtube)

I had considered doing Java a few times in the past. This idea was mostly driven by the majority of my experience being in web development, and Java being a common "performance" oriented language used for web dev. Of course, I never had a strong background in Java and never developed a taste for it. I think most performance tuning there also revolves around really understanding the JVM and working around the garbage collector. It's obvious to me now that the kind of programming that interests me is more likely to be available if I am writing C++. Even if my first forays back into C++ don't present the opportunities I'm interested in (professionally) then at least I can leverage that more modern professional experience with the language to get more interesting gigs.

This decision to refocus on C++ and pursue a lower-level, more performance-driven development role feels good, it feels right. I haven't felt this good about my prospects and my career direction since I last made this decision at the tail end of 2020; although this time I have a little less despair to go along with it. I can't say I've *ever* felt this good about my career direction since I accepted that first job offer from EA out of University.

Published on October 18, 2021

----

↩ Home

RSS Feed