What’s Pinteresting About Engineering?

Tracy is a software engineer at Pinterest, where she works on backend/infrastructure engineering. Previously, she was an early employee and software engineer at Quora. She has three years of experience as a software engineer and is already one of the most recognize women in technology and engineering today. She has a LOT of followers on Pinterest.
Tracy Chou
Software Engineer, Pinterest
Tracy is a software engineer at Pinterest, where she works on backend/infrastructure engineering. Previously, she was an early employee and software engineer at Quora. She has three years of experience as a software engineer.

Getting Started at Pinterest

I had been to a couple of Pinterest’s BBQs and knew the founders socially. I wasn’t looking to leave my old job at Quora, but in the course of chatting with Ben (founder and CEO) at a BBQ, my attention was piqued when he described the great company culture at Pinterest and let it drop casually that they were hiring.

At this point, I had already been using the Pinterest product for a year or so, so I knew I really liked it and I thought it had tremendous product and business potential. Plus, the team was small and I felt like it was a good career opportunity to jump in early-stage and help build out the team alongside scaling the product. So we talked and they made me an offer and I took it.

Even when I took my first full-time job as a software engineer three years ago, I wasn’t convinced that this was the career I wanted. I’ve considered careers in fields as diverse as finance or consulting, product management or data analysis, or business school academia. When I started working as a software engineer, though, it was a revelation how fun and empowering it could be, building things that are useful to people. I don’t yet know where I want my career to go, and maybe I’ll never know, but being a software engineer right now is pretty awesome.

My favorite part of my job is that I get to use the products I build, and to build what I use. I’ve had a pretty good run so far with Facebook, Quora, and now Pinterest. If there’s some feature or experience I want, I can actually build it.

Getting Started in Technology

I first started getting interested in programming in elementary school. We had computer classes where we programmed in Logo and drew geometric shapes with a little turtle that followed instructions like “pen down”, “go forward”, and “turn right 90 degrees. (Some trivia for the curious – the following code, transcribed to Python’s turtle module, produced my favorite shape: for i in range(5): turtle.right(144), turtle.forward(100). Can you figure out what it is?)

I wouldn’t characterize my interest then as precipitating a “love of geeky things”, though. Computers was just another subject in school that was relatively interesting, and I continued on to take a couple computer science classes in high school, but even when I entered college I didn’t even think that I would pursue a degree in the field, much less a career.

A summer internship at Google, where I was working in a largely non-technical role in sales engineering, gave me two critical insights: (1) working in a technology company is really exciting, and most specifically that excitement derives from being a part of building something that changes the way people go about their lives; (2) picking a job that is close to the core competency of a company is generally a good idea.

If I had to pick a single point that was the biggest step function in my interest in a technical career, that internship was probably it. Ironic, as that wasn’t even a technical internship.

A Day in the Life of a Pinterest Engineer

I spend a fair amount of time figuring out what I should work on; for example, which engineering task (feature, bug, code refactor/cleanup, infrastructure change, tests, etc.) I should be working on, and how to do it, which involves reading existing code and talking to other engineers and a cross-section of other coworkers to figure out good approaches.

With a general plan in mind, I set about writing code. When I get my code to a good or at least reasonable state, I submit my changes as a pull request in GitHub, which functions as a request for code reviews from my teammates. This is a really useful feedback process and I usually get suggestions for changes to make my code better, which I then spend some time incorporating. At the same time, I’m also responding to other engineers’ pull requests and talking through tasks and projects with other people. Sometimes we talk about systems infrastructure questions and what is scalable, other times about the cleanest way to design code and abstractions in our code. Beyond the technical conversations, we also talk about product ideas and the implications of various product decisions and designs.

I help out with deploying code and maintaining systems – the equivalent of doing launches and supporting those launches, but we push out new code multiple times a day instead of doing big releases across larger development cycles. This means monitoring system stats and errors, and often real-time debugging of any code or performance issues.

I develop in Python, Javascript, Jinja (for HTML / templating), and Sass (for CSS). I work with Django, Flask, Memcached, Redis, jQuery, Backbone, and many other technologies. I code in emacs on a remote development server in Amazon EC2, using iPython as a shell to run and test snippets of backend code and Chrome Developer Tools when working client-side.

Advice for New Engineers

Lean into your strengths and interests. Don’t always compare yourself to others where they’re exceptional and feel discouraged; you have your own strengths and interests that are valuable and you just need to know how to leverage them.

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply