Whenever I meet someone who’s got a really cool job, who runs a thriving business, or who has completed an amazing project, I always want to know: “How did you do that?”
I’m always curious to hear the “behind-the-scenes story”—who they emailed, what they said, how they got their first client, how they got their foot in the door—the exact steps that they took to achieve their goal.
HOW DID YOU DO THAT? is an interview series where we get to hear the REAL story behind someone’s success—not the polished, neat and tidy version.
To see a complete list of all the interviews that have been completed to date, head over here.
Name: Paul Armstrong
Location: Bend, Oregon
Profession: Senior Software Engineer for Twitter Lite
Lots of people dream about working for cool tech companies like Twitter, Facebook, Instagram, or Google. But you actually made it happen! You’ve been working at Twitter for a couple years. How did you get hired?
One of the previous startups that I worked for in San Francisco, tenXer, was acquired by Twitter about a year and a half after I left. At the time of the acquisition, tenXer was only 3 people: the CEO and two software engineers. The CEO transitioned into a Senior Director position within Twitter, and as he was trying to ramp up he was having a bit of difficulty getting his initiatives going.
One day, out of the blue, I got an email from him, that was more or less along the lines of, “Paul, Come work for Twitter? – Jeff”.
That sounds like a fairytale situation, and I suppose in some ways it was, but like anything that seems to happen overnight there’s always important backstory information to consider. For me, it revolves around an unfortunate streak of leaving jobs on bad terms and burning bridges on my way out, and the notable fact that tenXer was the first company with whom I left on truly good terms.
It was never my intention to leave things poorly with past employers, it’s just that I struggled to find the right time to walk away and could never seem to communicate with my coworkers and everyone involved in a way that allowed me to leave and remain on good terms.
With tenXer, I really cared about the company, people, product, and vision. I actually cared too much, and that was part of the reason I felt I had to move on. I spent day and night thinking about work, frustrated that I couldn’t make things the way that I wanted, feeling depressed that we weren’t attracting enough customers. I spent a lot of time talking with Jeff, my boss, letting him know where I was at, and discussing where I was going within the company and its ever-changing vision—which was pretty much nowhere.
Add to that the fact that I was newly married, and that my wife was planning a five month adventure project that would take her (and me, as her support person), away from home, and it felt like the right time to move on from tenXer. Seeing as how we were a team of only a few people meant that it wouldn’t be sustainable for me to be gone for so long, and I wanted them to have the best chance they could to get someone in my place.
I was able to communicate effectively with Jeff, who understood and didn’t take it personally, and we both moved on in our professional lives. Until a year and a half later when I opened that ever-so-short and to the point email (“Come work for Twitter?”) and I figured, “hrm… why not see what they’ve got to offer?”
Wow! That’s a pretty exciting email to get, out of the blue!
I know it sounds like a fairytale situation, and I suppose in some ways it was. But like anything that seems to happen “overnight,” there’s always a long backstory leading up to that moment.
My backstory included… teaching myself how to do software engineering (I’m completely self-taught, I never studied it in school), followed by a series of stressful jobs at various startup companies, working crazy 80+ hour weeks, burning myself out, and questioning where my career was going.
It took a fairly long time for me to realize that the “startup culture” wasn’t right for me, which, in a roundabout way, is how I eventually ended up working for a big, established company like Twitter.
Did you have a job interview with Twitter in person, or on the phone? What was it like? Did you feel nervous going into it? What, if anything, did you do to prepare?
My interview process was a bit different than the process Twitter uses today.
The first step was a phone screen, which I did with the hiring manager, who used to be a software engineer. He asked a few technical questions. Nothing out of the ordinary or particularly memorable at this point.
The second part, the part Twitter doesn’t do anymore, was a “take-home problem.” I was given the task of creating a small application, and I remember it being very open-ended. There were a few requirements, but I honestly felt it was too broad. I could have worked on that assignment for months, but they expected it would take about half a day.
I did my best, and actually ended up writing a pretty long discussion against the requirements of the application itself and including it in a README file. I wasn’t sure how they would feel about that, but I felt that I needed to explain what I was getting hung up on that was preventing me from doing my absolute best work. It turns out that I wasn’t the only person with these concerns, and this sentiment was reflected both with candidates like me and employees alike, eventually leading to the removal of this task altogether.
After that, to my surprise, I was called back for the last part of the process: the in-person interviews. These took the better part of a day in which I sat in a small room with a table, four chairs, a laptop, and a whiteboard.
I’d heard that most of the bigger companies in the tech arena drill interviewees with really complicated questions regarding algorithms that they’d never actually use, but only study in school. Or that they’d ask questions with no real answer just to make candidates fumble around and feel uncomfortable.
At first, I was pretty worried, because I’m self-taught in this field and didn’t have the time before the interview to brush up on algorithms that I had never taken the time to learn.
But before getting started, I took a moment to look at this entire process from another angle: Yes, they were interviewing me, but I was also interviewing them. I was steadily employed and I wasn’t desperate for this job. So I gave myself some criteria like: if they ask me questions that are completely irrelevant to what I knew the true job would entail, would this actually be a place that I wanted to work? Definitely not.
The first hour was spent discussing some nonspecific problems with open-ended solutions, like those you’d typically find in a software engineering interview. To my surprise, they weren’t focused on algorithms at all, but just generic problems that I would likely face on a day-to-day basis. I breezed through those and was feeling pretty good.
The second hour was lunch with one of the people that I’d be working with. It was mostly a “culture fit” thing, and we just chatted and got to know each other. It was good, again, to remind myself that I was also interviewing them as much as they were interviewing me. If I truly didn’t get along with these people, would I really want to work with them every day for 8 hours a day? Thankfully we did get along, but it was helpful (and a big stress relief) to remember that I just needed to be myself and see what happened.
After lunch, I was brought back to my tiny interview room. Two new people entered and had me add a feature to my initial take-home application. It was fairly easy, since I had anticipated this interview tactic ahead of time and had a good recollection of what I had written. I knew that they were looking to see how I actually work with a real-world problem.
The very last part was the most nerve-wracking portion of the interview. Two managers came in with my résumé and asked me questions about it from my first job all the way to my most recent. Details like, “What was your manager’s name?” “What would they say about you?” “Why did you leave?” “What did you hate about that job?” So many questions, one after another, for one long, grueling hour. It’s weird to go through years of history like that. I was definitely caught off-guard by how sterile it all seemed. But, in the end, I must have done a good job, because I received a job offer just a couple days later.
Twitter is headquartered in San Francisco. But you live in Bend, a small city in Oregon, and you work from home. Did you have to ask your boss, “Is it OK if I work from home?” Or did they give you that option right away?
Working remotely is a bit of a hot topic at some companies. I actually started working remotely partway through my tenure at tenXer, so having a reference to get hired for another company was a big help.
Going into the interview with Twitter, I made it clear that I had recently moved to Oregon and had no intention of leaving. Thankfully, most departments at Twitter are pretty open to having remote employees and distributed teams. I’ve even had the pleasure of helping a few other employees transition from working full-time at the San Francisco headquarters to being remote in different parts of North America.
Looking back on your career, what’s been one of the most challenging or discouraging moments you can remember? Like a time when you made an embarrassing mistake, or felt really unhappy at work, or… something else? What was that moment, and how did you get through it?
The absolute hardest moment in my career was when I finally had to admit to myself that startup culture was not the right fit for me.
In early 2010, I moved from Minnesota to the San Francisco Bay Area to pursue working in tech startups. I was pulled in by the fantasy that I could be the one to create “the next big thing”—the next AirBnB, the next Instagram, the next Lyft—and that any sacrifice made in service of that goal was worthwhile.
Like I mentioned earlier, I worked 80+ hour weeks, spending a majority of my evenings and weekends grinding away in the office or at home—usually on something that I didn’t even really believe in, because I thought that’s what “success” looked like.
Because of these types of working hours, I ended up without much of a social life. Work was my social activity. I didn’t know anyone outside of the office and many of my coworkers were the same way.
The common denominator between me and everyone I knew was… work. We were always either working or complaining about work. It was a toxic culture that didn’t place meaningful value on anything other than productivity. It was the kind of environment where it became a source of ego-stroking—almost like a badge of honor—to “complain” about how many hours per week you were working, or how terrible the project was.
I’d like to say that I had one life-changing moment where I realized how unhealthy all of that was for me, but the reality was much more gradual. First came the change to working remotely when I left San Francisco for Los Angeles, to be with my now wife. Getting physical separation from that world helped me gain perspective. I realized that what I wanted most was to do work that I was incredibly proud of during the day, but then be able to shut my computer at 5pm and truly be done. I wanted time with my wife and I wanted to pursue cycling more seriously. I wanted a life outside of work, and in order to do that I had to be willing to walk away from the startup world and redefine success for myself.
So, the job opportunity at Twitter actually came at a perfect time. During the interview process, it was clear that employees at Twitter are encouraged to have a life outside of work, and accepting this position gave me the incredible opportunity to experience what I really wanted: the chance to work hard during the day on a product I believe in, but not let it take over my life. And so far, it’s working!
You mentioned a moment ago that cycling is a big part of your life. In addition to working full-time at Twitter, you’re also an athlete, and you compete in cycling races in Oregon and across the country. How do you make time for all of your training? What does a typical weekday look like for you?
I wake up around 5:30am every day. Partially because that’s just when I wake up, but also because if I don’t, our cats will start crying to be fed and force me to get up anyway.
Most days, I try to eat a good breakfast and catch up on the news. Once or twice a week, I’ll skip reading the news and head to the gym for an hour.
By 7:30am, I’m typically in my home-office, at my desk, getting work done. Most of my co-workers don’t start work until 9am, so I’ve found that having an hour and a half to work before the rest of my team starts settling in is a great way to get some zero-distraction work-time in. I’ll work straight up until noon, at which time I have lunch with my wife. She’s in culinary school right now, and she’s always testing out new recipes for school projects, and I am more than happy to be her #1 food-tester!
After lunch, once I’m back at my desk, I’ll catch up on emails and do other short “housekeeping” tasks. Then as time allows, I usually try to sneak in a quick 15 minute nap. This is a great way for me to get back into work-mode, especially since I’m usually pretty tired by this point, having been awake for about 8 hours and concentrating at work for at least 5. After a quick nap, I’ll push to get one more big block of work done. I usually finish up my workday by about 3:30pm, and then I head out for a long bike ride, sometimes up to 3 hours. This works out great, because I’m usually able to get my bike ride in during the warmest part of the day, before it gets dark.
Most cycling races happen on the weekends, so those don’t interfere with my Mon-Fri work schedule too much. I think it’s like anything else in life. Whether you’re passionate about cycling, or baking, or watching cat videos on YouTube, if there’s something you really care about, you just carve out time to do it!
3 Things
If someone is interested in becoming a software engineer like you, what are the first 3 things they should do?
1. Learn by doing stuff and fixing stuff.
There’s a mountain of open source software available on the Internet. But don’t just use other projects because they work—understand why and how they work. Read the code, help debug issues, and submit patches to fix them. Even if for some reason your patch isn’t accepted, at the very least, you will have learned something that you didn’t know before you started.
2. Don’t hesitate to walk away from problems.
Software development is just problem solving. There are many ways to do it, but sometimes, the best way to solve a problem is to step back, get away, or work on something else for a while. Often times, my best solutions come to me while I’m away from the computer.
3. Figure out your own definition of “success.”
You don’t have to work 80 hours per week to be successful—and you don’t necessarily need to invent the “next big thing,” the “next billion dollar app,” or whatever.
Startup culture can seem glamorous, but it’s not right the environment for everyone. Everyone has their own personal definition of success.
For me, success means showing up to work, getting things done, feeling proud of my work, and then being able to shut down my computer and spend time doing other things that matter to me. If you’re going to spend the majority of your waking hours at work, make sure you’re pursuing something that actually feels like real “success” for you.
ONE MORE THING…
Do you have “one more quick question” that you’d like to ask Paul? Email me and tell me what you want to know! I might choose your question for my ONE MORE THING… Podcast (Coming soon!!!)
YOUR #1 CAREER GOAL: ACHIEVED
Do you need some encouragement to help you achieve a big, daunting career goal? Would you like to have a career coach/strategist in your corner—feeding you ideas that you’d never considered before, helping you figure out who to contact, and what to say, and checking in to make sure you don’t procrastinate? If so… click here to find out how we can work together. I’d love to coach you!