It was three years ago today that I sat for a day of whiteboard interviews in a tiny room at Bazaarvoice with a series of terrifyingly smart people. When the interviews were over, we had cupcakes — it happened to be my birthday. A few days later, I had an offer; a few weeks later, I flew back to Austin for my first day, staying at a rental house where the chickens who greeted me were like a warm sendoff from my Bocoup friends. A year later, after working remotely and making the trip back and forth every few weeks, my family and I moved to Austin.
The last time I had the same job for three years, I was still working in print, and so it's a remarkable sort of thing to look back at all I've learned since that day three years ago. These have been among the most transformative years in my software career, full of profound lessons in what it means to create, support, and maintain software at scale, with all the rich experience and inevitable technical debt that comes with a company that's been in business since before I started working on the web.
I've worn several hats at Bazaarvoice — software engineer, team lead, inadvertent manager. I shaped the technical underpinnings of brand new products; stabilized and hardened products that were built to meet a deadline, with the assumption that quality and maintainability would be bolted on later; watched products that were assumed to have a shelf life of months live on for years; and helped improve the operational stability of an acquired product while melding it with the Bazaarvoice ecosystem. I made plenty of mistakes, too — technical mistakes, strategic mistakes, people mistakes. None of them are appropriate fodder for a public retrospective, of course — let's all just agree that manually deploying custom code for your biggest customer is as bad an idea as it sounds — but I hope I've learned from them enough that I'll manage not to repeat them.
I thought I knew a lot of things when I started: that whiteboard interviews were universally useless; that CS degrees were generally overrated; that client-side developers didn't need to worry about algorithmic complexity; that I could continue to excel as a front-end developer without concerning myself with where the data came from; that client-side applications were the future; that devops was someone else's job; that Java still existed mostly so we could make fun of AbstractFactoryClassBeans.
Somewhere along the way, I stopped feeling quite so precious and exceptional about being a front-end developer, and started to embrace being a software engineer who happened to understand the front end better than most. And one day I realized I was actually becoming a big kid: solving problems across teams and products; connecting dots that I was uniquely qualified to connect; developing and operationalizing systems and tools that extended far beyond the browser; and communicating clearly and persuasively about challenges and tradeoffs and solutions. Eventually, I earned the right to claim a seat at that big kids' table without apology, and I hope I have treated that seat with its due respect.
It's time for me to hit the reset button, to visit the world outside my new comfort zone, and see what the next three years have to teach me. I'll say goodbye to the amazing folks at Bazaarvoice in mid January, take a month off, visit a hero, hopefully do some writing. My new role, tackling the front end at Indeed, starts in February.