I got my start in programming when I was bored in math class one day and started fiddling with my TI-86 calculator's BASIC programming functions. Simple programs quickly morphed into graphic intensive games. My teacher was not enthused, but I was HOOKED!
The next year I eagerly signed up for my first programming class, where I was introduced to C++. While others were busy joking around on AIM during class (remember AIM?), I tore through the work like a madman! I ended up finishing the year's work months ahead of schedule and spent the rest of the time working on a clone of the Legend of Zelda.
In college, I ramped up my programming skills. Most of the course work revolved around Java, although some work was done in C/C++ as well.
While there, I regularly joined my classmates to represent the school in regional programming competitions. While the code that I wrote there was a far cry from production-ready, those competitions did teach me to work under pressure and find creative solutions to problems.
By senior year, my skills had advanced to the point of being able to build solid software. I constructed a LAN-based poker client as my final project.
My first engineering out of college was at Plex Systems. Known for their "Manufacturing Cloud", they're a leading provider of SaaS ERP software based outside Detroit, MI. I spent 4.5 years there.
Plex is where I grew from being a programmer to a true "software engineer". I learned how to deliver software at scale, I learned how to work with other developers on large projects, and I learned that my former method of copying an entire codebase every night was in fact a poor source control solution.
Up to 2017, I had lived in Detroit my entire life. Call it a quarter life crisis if you must, but that was the year that I woke up and realized just what a bubble I had been living in. Thanks to a frugal five years spent working for Plex, I found myself with the desire and ability to venture outside of that bubble.
That fall, I worked out an arrangement with my manager to permit me to work remote for a month from Colombia. The trip was a life changer! I speak conversational Spanish, which helped me get around and make local friends, several of whom I still talk to today.
When I got back home, I was already pondering my next travel adventure. A few months later, I left my job at Plex, sold anything in my apartment that wouldn't fit in my car, and set off on what became a 13,000 mile road trip through the US and Canada, a three-month tour of Mexico, and a five-month journey around South America.
All good things must come to an end. Though it might be hard to believe, traveling the world can get tiresome. After a little more than a year on the road, I found myself more interested in developing my Android apps than on seeing yet another ornate 16th century cathedral.
Not wanting to give up completely on travel, I began looking for full-time remote development work in the summer of 2018. In July, I joined Novi AMS, a fully-distributed startup that makes association management software.
While the pace of my travels has slowed considerably, I've taken full advantage of the freedom that remote work offers, having worked from various locations in Canada, the US, and Mexico while still based in Detroit.
I've been with Novi AMS for four years now. I am the tech lead for the company and oversee three other engineers. Together, we've served a half-million members across the US and are growing rapidly. Hundreds of associations deploy their member-facing website through the platform.
Novi has taught me the importance of not being a "one-trick pony". As a smaller company (~15 employees total), every engineer needs to be skilled in a variety of areas. In addition to full-stack web development, I regularly tweak the plumbing of the build and release pipelines, and I monitor and provision resources in our Azure instance. I've regularly served Tier 2 support duty and am frequently on calls with prospective clients, existing customers, and third party integration partners. As tech lead, I provide technical input to the product roadmap, help scope out and lead large projects, and help mentor my fellow engineers.