Getting the Jokes: My First Year as a Software Engineer
By: Monica Cowan
Tags: Architectural Design, Software Development, Aec, Software Engineer, Outer Labs

Shortly after starting my first job as a mechanical engineer, I became exasperated with the repetition and slow pace of energy modeling. I turned to my mentor and told him I didn’t think I could make this my everyday experience. “Well,” he sighed, “you could always make your own program and use that.” He turned back to his monitor. I did too, but it stuck with me — the idea that I could be on the other side of things, making great software instead of struggling against the programs we used and continued to use, simply because we had always used them.

Fast forward 7.5 years or so — March 2019 — my first day as a software engineer. While I’m not writing energy modeling software, it’s been so much fun to marry my consulting engineering experience with programming here at Outer Labs, a company that builds tech for architectural design at scale. And now that over a year has passed, I’ve done a bit of reflecting on what the transition has been like. I’ve:

Essentially learned a whole new language (and not just the programming languages themselves).

Picked up a new quiver of tools.

Returned to being in the question-asker seat.

It’s been a great, humbling year, and I hope my learning can provide a view into what it’s like to change careers — especially into software engineering.

Learning the Lingo

When I started at Outer Labs, we were beginning a new project where early software system design decisions still needed to happen. It was perfectly timed for me to hop in — and not understand much. I got the individual words — for the most part — but I found myself scrambling to even keep track of what I didn’t know. My prior software experience — mostly through online courses and hacking my way through automating some of the more mundane parts of energy code compliance modeling — had not prepared me for all of the options available to us for tools. And who knew there were so many ways to test code? I sure didn’t!

In order to keep track of all of the things to look up later, I started a Google Doc (titled “Ongoing Programming Notes” which still feels like a good title to this day, as it is truly ongoing). This list serves both as a way to keep track of things to look up later, but also as a way to reflect on how far I’ve come. Luckily, I work on a team of super smart folks who’ve been gracious enough to spend a lot of time going over a bunch of the items on my list, which started with — really — what the difference is between “back end” and “front end.” Even though it can feel like I still have so much to learn, when I reflect back on basics like this that I didn’t know at first, it makes me feel like I’ve come a long way.

Looking back, it shouldn’t be surprising to me that I had to start with the basic lingo of software engineering in order to write software, given that I had an almost identical experience starting out as a consulting engineer. While I had spent my entire education in mechanical engineering, none of it focused on buildings, so I had a lot to learn about the built environment when I started working. My notes from my first day of work in 2011 show just how much I had to learn, how much jargon I had to pick up, and how prevalent acronyms were.

My actual notes from my first day as a mechanical engineer, complete with acronyms.

I had to start from the basics of the lingo, and work my way up to being a self-sufficient mechanical engineer. Software engineering is no different. There’s an entire language to learn beyond the programming languages themselves, which I feel I’ve only started to crack. Keeping track of what I’ve learned is a powerful way to remind myself of my progress.

Getting the Basic Tools

I took my first Spanish class in my freshman year of high school. Every day, our teacher started class with a new phrase written on the chalkboard. After a few months, we’d made it through our initial round of verb conjugation, hitting the regular verbs and a few irregular ones, along with a spate of seemingly random vocabulary lessons. We knew some animals. We knew some foods. One day, we entered the classroom to see our first joke written on the chalkboard:

Un pez le dice a otro: “Tu padre, ¿Qué hace?” “Nada.”*

*We all know that explaining a joke really draws out the humor, so let’s start with a quick primer on what “nada” means. It can mean both “nothing,” and is also the third person present tense conjugation of the verb “to swim.” So, this joke translates to: One fish says to another, “What’s your dad do?” “Nothing/He swims.” See? It’s hilarious!