Gerard O'Neill


If you want a super comprehensive account of all of my work experience, you can find that on my Toptal profile. However, I'd much rather tell you about my software engineering journey and philosophy.

Origin Story

When I was around eight years old, my parents put the "family computer" in the corner of my bedroom. Because of that decision, combined with the constant commercials on TV about AOL and various websites, it didn't take long for me to start exploring the digital realm. Every day, I would start up the computer, suffer through the awful sound of the dial-up connection being established, and peruse Yahoo's search index.

I really liked the world wide web. Around the age of ten, I wanted to make a website of my own, so my father exposed me to GeoCities, and I got going immediately. I made a few different websites, each one as ridiculous as you can imagine, given my age and the time period. Within a couple of years, however, I got wanted to break free from the shackles of GeoCities and other WYSIWYG offerings, and to make real websites. Once again, my father provided some guidance by buying me a book on HTML, which I read cover-to-cover.

I was obsessed with making websites. Over time, I also got really into using CMS and forum solutions to power my websites. My favorite was the woefully insecure PHP-Nuke, but I experimented with plenty of other ones, such as Joomla, Drupal, phpBB, SMF, etc. This obsession led me to taking web development courses in high school, which I aced with no issues. There was no question that this is what I wanted to do for a living.

I arrived at Rutgers University knowing that my degree would be in computer science. I even read through a whole book on Java over the summer in preparation for the intro course. However, I didn't fully appreciate the theoretical nature of the field, which led me to neglect my studies. "I know how to code," I would say to myself. I did well in the intro course, which was mostly programming, but performed terribly in my data structures course.

The Wake-Up Call

My attitude didn't change until my second year when I stumbled upon the websites of a few of my peers. I learned that some of them had already had internships and already had experience building websites in PHP, Ruby on Rails, etc. Most of my web experience up to this point was with building static websites with some jQuery sprinkled in. It was at this moment that I realized how far behind I was. Not only were these peers doing better in class, but I didn't even have the excuse of being a more experienced programmer like I thought I did.

For the next few years, I had an almost-singular focus on becoming the best I could be. I took my classes more seriously, joined the computer science club, and started attending hackathons. I got summer jobs and internships, worked on side projects, and even become a teaching assistant for the intro computer science course. My final year was perhaps the most stressful and productive year of my life, as I commuted 3-4 hours to/from New York twice a week for a part-time job at Thrillist, all while being a full-time student and taking free online courses on Coursera and Udacity. I wanted to be the most attractive interviewee possible in order to land an amazing job.

And I did. I got several offers, but decided to join Etsy in Brooklyn, where I worked from 2013 until 2016. These were extremely formative years, and while I could've earned more elsewhere, I really think Etsy was probably the best possible place I could've worked for my first job. I was taught not only how to program well, but how to be a good software engineer. I learned about A/B testing, feature flags, proper deployment techniques, etc. Most importantly, I learned what it meant to have a good engineering culture: blameless post-mortems, shared responsibility, the importance of well-built systems and processes (not only technical, but also in the workplace). I really enjoyed my time at Etsy and look back on those years with much fondness.

Making Moves

However, all good things must come to an end. My then-girlfriend-now-wife got a job offer in her hometown of Los Angeles, and Etsy wasn't the most remote-friendly employer. Thus, I moved to LA and joined Trello in 2016, where I worked until 2021 (note: Atlassian acquired Trello in 2017). Having a decent amount of experience under my belt already, I learned less of the fundamentals at Trello, but I had a great time and learned a lot nevertheless. Etsy was a place where a lot of custom software was built (their PHP framework, A/B testing and feature flag framework, deployment solution, etc.). Trello, however, used many more off-the-shelf solutions, which helped keep me up-to-date with more immediately transferable skills. It was at Trello where I also really honed my front-end skills, since that was what I was hired for.

In 2021, my wife and I decided to move to Amsterdam, and since I didn't want our residency to be tied to my employment, we applied for a special visa available to Americans which allowed us to live in the country as long as we started our own business. Thus, we started a boutique software consultancy and now work as freelancers.

Despite already having quite a fruitful main storyline, I've also engaged in many side quests throughout my career. While at Etsy, for example, I taught two part-time courses on front-end web development at General Assembly. While at Trello, I took on a few contract gigs on the side, and was also a mentor for the now-defunct Viking Code School. I spent years volunteering for an animal rights non-profit, where I led the engineering team.

Thanks for taking the time to read my story. In addition to providing a more contextual account of my experience, I wanted to really drive one point home: software engineering is not simply my career, but a true passion of mine. I have a real fascination with the field, and an intrinsic drive to produce the best software that I can. This is why I still work on side projects, learn esoteric programming langages like Racket, and solve LeetCode problems for fun. I have a strong distaste for poorly-produced software, and as a result, I make every effort possible to only release working code. If you ask anyone I've ever worked with, they'll tell you that my stuff simply works. All of that is to say that if we ever work together, you'll be working with more than just an experienced engineer; You'll be working with someone who genuinely enjoys the work and wants to do the best job possible, not only for you, but for himself.