Carnegie Mellon University

Alumni Profile: Zach Sweigart

What were you doing prior to entering the MSIT-SE program? 

I was at the University of Pittsburgh working on my BS in Computer Engineering with a focus on hardware, and taking software classes as electives. In my senior year, faculty from the MSE programs came to Pitt to give an overview of the program and brought three boxes of pizza with them. I was the only person to show up, so they gave the presentation, and all of the pizza, to me. Which is great for a college student. 

When you applied to the program what were your expectations; how did you think the MSIT-SE degree would enhance your career?

For me it was really about getting my foot in the software door, since I had a hardware background. Although I had taken a bunch of software classes as electives, I didn’t think I had much of a chance of landing a job in software without more experience and more understanding of the field. My real expectation for the program was to move from hardware to software. 

That seems to have worked! What is the reality, in what ways has your career benefited from the degree?

It really opened the door for a lot of interviews. Early in my career I worked for a company that went out of business two months after I was hired. I immediately returned to the job market and got an interview at a small company that had about 20 engineers. The first interview was a whiteboard. The second a code walkthrough of something I had built. The CEO came in during the walkthrough, looked at my resume, and said, “You went to Carnegie Mellon for a masters degree?” I said, “Yep.” And he said, “You have a job here if you want it.” 

Many companies conduct standard whiteboarding interviews, as students we stress out about it a bit. But the system design questions are really what you learn to address in the MSE programs — how to evaluate tradeoffs, what the right architecture is — and that’s the knowledge you carry over into your actual career. To go from a junior engineer to a senior engineer you are expected to be able to think holistically about these problems and I think the basis for that is what I really gained from the program. 

You’ve anticipated my next question. It’s been a little over five years since you graduated, and you have gone from a junior to senior engineering position fairly quickly.

I think that ability to advance quickly really speaks to what you learn in the program. In the software classes I had in my undergrad, the way we’d think about problems was to write some code and hope that it worked. But when you come out of the MSE programs, you think a lot more holistically. You ask, “How do I structure the system, how do I coordinate the parts, how do I work with a team?” 

Getting promoted from a junior to senior position was a lot easier than I expected. After the program, I could have conversations with senior engineers about what they were thinking about with regards to the system. As a new graduate, you find that you’re able to contribute day one. 

I took a peek at your LinkedIn profile and noticed that you tend to work for smaller companies. What is the attraction for you?

In the program you do a bit of everything: architecture, team management, process. I really enjoyed all of it. And I wanted to be able to do all of it. Talking to my friends from the program who had gone to bigger companies, they said that they were kind of siloed; they did one thing and they did it very well. Which is great for some people. But I wanted to do a little bit of everything, to try it all, and see what I liked. The first three companies I worked at were all pretty small. At Yodel (acquired by web.com), I was actually the first Android engineer there and started everything from the ground up.

And then Uber.

I ended up at Uber because they made me one of those offers that’s hard to refuse. But it was a great learning experience too. Moving to a big company put me in contact with a lot of people I could learn from. And I learned a lot about the field in general. 

I would recommend people work for both: try a big firm, try a small firm. You learn different things in each place. 

After Uber I returned to working for smaller companies. My wife, who’s in med school, and I were doing the long-distance thing for a while, flying back and forth...it gets old. So I moved to Coffee Meets Bagel, which allowed me to work remotely and live in the same city as my wife. Then I got a really great opportunity from Plaid. It was another position where I was going to be the first Android engineer and I realized that I could go back to working for a small company. Plus it gave me the opportunity to apply what I had learned earlier in my career, and do it better than the first time.

Covid-19 and social distancing aside, what are the benefits of working remotely, and in what ways (if any) does it detract from your work experience?

One advantage is the flexibility of scheduling your day. When you’re salaried, what hours you work aren’t important. People don’t really care what hours you work, just that the work gets done. You can break up your work day to fit in a doctor’s appointment, go to the gym, whatever. 

My current company (Plaid), recently hired two other engineers who also work remotely — one in Las Vegas, the other in Belgium. So, I split my day, a couple of hours in the early morning to coordinate with the engineer in Belgium, take a break to have some lunch, then coordinate with the engineer in Las Vegas in the afternoon. 

Another advantage is that I can take my job anywhere. When I was at Coffee Meets Bagel I gave a tech talk at driodcon in Romania and turned it into a three week trip where I combined travel and work. The time zones made that a little tricky; I was working from 2 pm to 10 pm. But, it wasn’t too terrible. Along those same lines, my wife is in her last year of med school and will soon start the residency matching process. If we need to move to another state for her residency, I won’t have to look for a job. 

What are the disadvantages?

There’s the danger that you’re never not at work. Since going remote, I’ve noticed that I tend to work way more hours than I did when I was in an office. As I mentioned, my wife’s in med school, and when she works a 12 hour day, I work a 12 hour day. 

There’s also the problem of feeling isolated. There can be days where I don’t leave the house and I don’t talk to anybody, I’m just on my computer the whole day. It can get a little weird. When you work remotely, you have to make a point to get out of the house: go to the gym, call a friend to grab a drink, something to get out and be more social. (Of course that was before Covid-19 and the order to self-isolate.)

You return to Pittsburgh to visit the MSE programs on a fairly regular basis to give tech talks and recruit students. What motivates you to give back in those ways?

First, I love giving tech talks and sharing my knowledge. Besides the MSE programs, I’ve also presented at droidcon a couple of times. I think it’s fun to present something you’ve worked on and answer questions and interact with a different group of people. When I was a student in the MSIT-SE program, I found the monthly talks by alumni really interesting — to find out what they were doing in their career and to learn something new on the technical side. 

As for recruiting, I tell everyone, wherever I go, the best people you’re going to find are those coming out of the MSE programs. There’re a lot of people who call everyone who works in software a “software engineer.” But the way I think of it is that the software engineer puts the pieces of the puzzle together: solving the problems, managing people, thinking about the bigger picture, how to take the tools that are out there and apply them to a real-world problem. Someone who’s going to do research, and figure out those new tools, that’s computer science. There’s definitely a role for both. A lot of businesses are missing that leadership piece, someone who can manage a team and think of the big picture. That’s why I think the MSE programs at Carnegie Mellon is a great place to recruit. 

What was your favorite class?

I loved the Architectures for Software Systems class. That was definitely my favorite. When I was there Tony Lattanze was teaching it. You gotta make sure you label your diagrams! It definitely comes in handy. 

Has that consistently been the course you’ve drawn upon, or have you seen a shift over the years?

I’d say I’ve drawn upon most of the classes. Team Software Process when I’ve been at small companies and we’re building up our process...that’s a great one to draw upon. The Analysis of Software Artifacts class because a lot of people don’t know about formal testing methods. Managing Software Development for working with small teams. That said, without a doubt, the Architectures class is the one I pull from the most. I still have the three required texts we used and I reference them pretty frequently. 

What electives did you take? Was there a pattern to what you selected?

When I was an undergrad at Pitt, I took a user interface class where we used Android. That’s where my interest in the user interface side of things started. And after taking the Methods course I knew I wanted to take the next step in deciding what to design — how do you get a system in front of a person and get them to use it in the way that was intended — so I took an Intro to HCI course as an elective through the HCII (Human-Computer Interaction Institute). I really enjoyed building something that you can put in front of someone and they can play around with it and you can see how they interact with it, see what works for them, and think about the product side of things, asking yourself, “what problem you are solving for a person.” I enjoyed the class so much I took a research course in HCII as another one of my electives.

And for my last elective I did an internship with a company — actually, I don’t think I took it for credit. Anyway, I worked about 20 hours a week during my last semester with MAYA Design; they help other companies figure out what to build. They don’t usually build actual software systems, they build prototypes. They take the client company’s idea for a product and the problems and whiteboard it, think of different ideas, and then the software engineers on staff build the prototype with dummy data so that the client can see what the end product might look like without it actually completely working. Then the company can either build it in house, or hire someone else. 

I think that being able to collaborate with other areas of the university when taking electives is great. I essentially tailored my electives to focus on user centered design, and the work I did in those classes makes it easier for me to work with product managers and designers. 

What is your favorite memory from your time at Carnegie Mellon?

That’s a tough one…maybe the project for the Methods: Deciding What to Design course. We were in the same groups we had for the Practicum Project, and I remember we were doing user interface studies. It was a lot of fun to come up with different ideas on how we could structure the system we were building in a way that it would make sense to a user. We were definitely a little behind schedule, so to get people in front of the system and test it, we bribed a lot of undergrads from Pitt, people I knew from when I was an undergrad. We were in the cave until midnight buying pizza for people who were helping us out. 

It all comes back to pizza.

Sure, that’s the best motivator for college students. I mean, pizza is universal. When I came back in February for my tech talk, there was pizza.