Engineer Q&A: Alex Milstead, Backend Engineer, San Francisco
By: Alex Milstead
Tags: Software Development

I’m taking part in this Q&A as part of an effort to introduce the world to the Engineering team at Optimizely. If you’re interested in joining, we’re hiring Backend Engineers (and DevOps) in San Francisco and Austin!

Tell us about yourself! What’s your name, what do you do at Optimizely, and how long have you been here? Tell us a bit about your trajectory to get here.

Oh look, a Grand Canyon!

My name is Alex Milstead and I lead Optimizely’s Application Backend Infrastructure team. I’ve been at Optimizely since August 2014 and if I had to put my finger on it, I’d say my work is probably best described as improving the overall application architecture and general infrastructure for Optimizely’s stateless web application services.

When I first started at Optimizely, my role was centered around contributing to our customer billing management code base. After a quarter or so I began to put my hooks into Optimizely’s overall technical direction by driving a re-architecture of our REST API Gateway and working closely with our DevOps team to set internal standards and conventions for how we build and deploy stateless web applications using Amazon EC2.

Before Optimizely, I primarily focused on fixing “boring” application architecture and design problems through modernizing in-house code bases with Open Source and community driven frameworks (think things like server-side template rendering, relational database access, and internationalization). Before that, I studied Computer Science at The Georgia Institute of Technology, specializing in Media and Information Networks.

What’s it like to be on the Application Backend Infrastructure team?

It’s a whirlwind — Optimizely has a lot of code! On a given day, you could easily find yourself wading through bespoke eight year old monolith development tools, debugging a recently deployed EC2 docker-based application, or exposing a new proof-of-concept web service to production traffic inside a secure PCI environment.

The Backend Infrastructure team mostly targets opportunities for improving and hardening the application design and/or infrastructural support for a variety of Optimizely’s web application services. In short: you’re a little bit product, a little bit frontend, a little bit backend, a little bit DevOps, a little bit of everything, really. :-)

My role in particular involves identifying areas of improvement for our existing services as well as opportunities for introducing new software (to build or buy?) to fill a gap or enhance the overall stability and resiliency of our systems, then prioritizing that work to align with Optimizely’s general business and product direction.

What are you working on this quarter?

This quarter I am working on improvements to our internal Disaster Recovery service. We use Google App Engine’s built-in Google Cloud Datastore offering and while it has managed export/import APIs, the API in itself doesn’t quite hit the mark for useful managed backups. Our internal service manages automating the Export/Import API usage as well as exposing a way for us to restore partial data collections from a backup in addition to full snapshot restores.

Another project I’m involved with this quarter is planning a data migration effort for a subset of the data in Optimizely’s monolith application. As we continue our path towards a Services Oriented Architecture, we believe it is supremely important to isolate independent services in their entirety (i.e. data is included). This migration project seeks to provide an internal tool for easily migrating data out of our monolith and paves the way for easier full-service migrations and management in the future.

What do you work on here that you are most excited about?

I would have to say that the thing I am most excited about is securing Optimizely’s future as a platform.

A big part of my job is to help figure out the best ways to make Optimizely an invaluable platform for all things experimentation. In particular, our continued investment infrastructure and SOA affords us the opportunity to take all of the amazing software we’ve built internally and turn it back out for new and existing customers.

Experimentation Driven Development is a really powerful way to build software (check out our Fullstack offering!), and being part of a shift in the way we all think about building software is pretty darn exciting to me.

So when you’re not slinging code at Optimizely, what do you enjoy doing outside of work?

Programming Stuff: I recently toyed around with building a kernel (spoiler: it’s complicated), sometimes I force myself to use parts of the Python standard library I’m unfamiliar with (most recently the 2.5+ generator API), I have a hobbyist interest in game development engines and their networking backends, and I’m always eager to try out new tech whenever it pops up across the internets. Currently on my list of things to check out are: OpenCensus, Envoy, and Katran.

Picking flowers at Front Porch Farms in Healdsburg

Non-programming Stuff: I live with my partner in the Mission district in downtown San Francisco. If you haven’t heard, it’s amazing for food, so living there puts us a stone’s throw away from a TON of the best. This is my lame way of saying “I’m a foodie”, so here’s my plug for restaurants I would really urge you to check out: Hoffman’s, Californios, and Rintaro. Besides that, I love escaping to Guerneville or Healdsburg (more great food there) just north of the city, and every now and again my partner and I will resurface on a Monday after a weekend binging Netflix originals or otherwise comically bad TV shows. Also, Alamo Drafthouse always has really fun movies to go see.

What’s unique about engineering at Optimizely?

Transparency and collaboration.

Optimizely’s leadership (eng and non-engineering) goes to great lengths to be transparent about the company’s direction, progress, and problems. They’ve also set the expectation of individual developer empowerment — every engineer’s opinion matters here, and it’s just as valid as all of your co-workers’ opinions. Leadership never misses an opportunity to remind us that they are open to feedback and that our decisions can (and regularly do) drive our business just as directly as product decisions can.

Every engineer I’ve had the opportunity to work with is incredibly talented and an absolute joy to work with. The people are really excited to build software here and that passion brings an energy and excitement to every project that I touch. For better or worse, there is never a dull moment and most of the time this place feels like it’s the most fun you’ve ever had building software.

What advice do you have for people trying to break into your role?

I have two pieces of advice I’d like to give:

First, know that there is a lot more to learn in your role than how to write better code. Building software involves working together with lots of other people and people are complicated! No amount of programming experience will prepare you for things like prioritizing technical debt against ever-shifting product scope and priority; or being able to provide feedback in a code review that doesn’t come off as pedantic or overly opinionated. Your day-to-day involves all kinds of problems that cannot be solved with just a few lines of code.

Second, don’t fret over projects or code feeling unfinished or dirty. It’s going to be there tomorrow when you wake up, and probably a few days after that. If you let these kinds of problems dominate your entire life inside and outside of work hours, you’re going to hit burnout fast. Remember you thought this was fun at some point and try to let it be again.