Alumni Q&A: Jessica (Morrise) Wise on the Misunderstood Skillset of the Software Engineer
Based on July 2020 interview
- ACME Class of 2016
- Google, Software Engineer
- Tech, Consumer Internet
- Software engineering is much more than sitting down and writing code—it may include reading what others have written, researching different technologies, writing up what is going to be coded and why we need it, and discussing ideas with your teammates.
- To get into Google, you need coursework on algorithm theory (ACME, CS concentration, Data Structures) and interview preparation (read up online about algorithms question).
- Testing (writing unit tests for all of your code) is highly valued at Google, but isn’t extensively practiced in ACME.
Tim Riser: Can you share a little about your story and background, and where you’re at right now?
Jessica Wise: I started out as a mechanical engineering student as a freshman in college. I did that for several years but decided that I might not actually want to work as a mechanical engineer. The ACME program was in its second year, so I decided to give some of the classes a try. I realized I missed programming and I missed proofs, which were not things I got from mechanical engineering. I decided it was a better fit and switched over after waffling about it for a while in my last year of ACME. I got an interview at Google and decided in the absence of any other non-developer job that I would take a job as a software developer and see how it went. Since then I’ve stayed at Google. I will have been working for four years in August.
Tim Riser: What drew you to your current work at Google?
Jessica Wise: I knew that being a software developer was a solid career option, but in college I wasn’t especially sure it was what I wanted to do. I was sort of procrastinating my job search a bit, but I applied to like a handful of developer jobs. My major consideration was location. I was interested in being in a particular area of the country on the West Coast or in the Pacific Northwest. I didn’t apply to Google, but they reached out to me through LinkedIn. Hey, it’s Google—awesome! So I went for it. At least two other people in my cohort got pinged by the same recruiter on LinkedIn at the same time. I can’t remember there might have been more I can remember. The fact that I got interviews and then eventually job offers drew me to it, plus I enjoy programming and felt like I was pretty good at it.
Tim Riser: Have you run into other people from BYU at Google?
Jessica Wise: I work with a handful of people from BYU in my office. They’re not on the same team, but I know them in my office. Early on I knew that I would enjoy doing on campus interviewing. I like talking to students and I also really wanted to go back and visit people. As soon as I could, I figured out who did that and asked them if I could go on the trips and was able to go. I think I’ve done either three or four recruiting trips to BYU now. The last one was about a year ago.
Tim Riser: What do you think students in ACME commonly misunderstand about the work you do?
Jessica Wise: Probably the most common misconception is that all you do is write code. There is this imagined picture that you get to your desk, fire up your computer, code for eight hours, and then leave. There’s actually a great deal that must be done around writing the code. I spend a lot of time reading stuff that other people have written, researching different technologies when trying to decide whether I can use a particular technology or not. I also spend a fair amount of time writing, describing what is going to be coded and why we need it, comparing it to other alternatives, and explaining why this is the best alternative. That kind of work takes at least as much time as actually programming, if not more. There’s also a component of talking to other people, comparing your ideas with your teammates, overcoming disagreements, and having meetings. If your product has to interact with some other product, everyone has to agree about what it’s going to do. In some cases, the implementation is complicated and involves some like fancy algorithmic stuff. In many cases, the implementation is not terribly complicated at all, and instead the hard part was getting such and such team to agree to give you quota to use their system.
Tim Riser: Can you give me a little bit of a tour of your time at Google, including the teams you’ve been on and the products you’ve interacted with?
Jessica Wise: Sure. I’ve been on two teams. I initiated the switch because I didn’t feel like my first team was a great fit and also because I wanted to get the standard software engineer experience and I felt like I wasn’t getting that on my first team. My first team worked with a lot of different products like People and Sharing. I specifically was on the test team, so we did things like write integration testing tools. For example, on the Google contacts app, I would be working on automating firing up an Android phone, opening the contacts app, doing things with it, and verifying that it did what it was expected to do. While doing that work, I felt like I was missing a bunch of big pieces, and there were a bunch of tools that I should know about. I wasn’t even sure what those tools were at the time. I just felt like I didn’t know a lot of stuff and something was missing, so I switched to my current product, which is an API owned by an API in Google Cloud for detection of sensitive information. I won’t go into much detail, but it is a public API. Our API scans streams of stored text for sensitive content and alerts the user as to what kind of stuff it found.
Tim Riser: Who uses the product?
Jessica Wise: Our customers are mostly large businesses, as that’s who the customers are for nearly all Cloud products. They have a large number of files or tables or database records, and it’s too many to look through by hand. These businesses want to detect what kind of information is in those and they want to use some sort of smart detection of person names, credit card numbers or other sensitive information they could be responsible for. Essentially, we are helping them classify their data.
Tim Riser: What has your team been focused on?
Jessica Wise: My team owns the entire product, which means we get quite a variety of things to do. On one end, I’ve had assignments where I was adding a feature to the product that users would be able to notice and interact with. That feels abstract, so let’s do an example. A recent feature that I worked on was smart scanning of PDF files. You can’t just read a PDF file, you have to throw it into a library, parse it get all of the relevant data out, and then after that you can read it. I implemented support to help users scan their PDFs directly. On the far other end, I’ve worked on machine provisioning projects. Someone noticed that our machines weren’t using memory optimally, and we needed to provision them differently. I figured out how to do it. That’s not something that a user would ever hopefully notice, but it’s still something that you have to work on. There are all sorts of projects in between like database management and code refactorings of old code to make it better.
Tim Riser: How is your team at Google set up?
Jessica Wise: I can speak for the teams I’ve been on, which are sort of similar. I directly work with about six or eight other engineers. There’s one or two people who are management who generally used to be just regular engineers themselves and then started managing people. Google tends to have managers be very familiar with the technical stuff, which is nice. You generally have the freedom to work on what you want. Your manager won’t say, “Hey, you have to work on this—too bad. If you don’t like it, here you go.” If you want to work in a particular area, you can ask to do it. And if you’re not happy with the thing you’re working on, they’ll generally let you try something different.
Tim Riser: How could an ACME student best prepare to work at Google?
Jessica Wise: If you really want to be a software developer at Google, you should probably go for the CS concentration. You have to take data structures, which are definitely needed for interviews. I think that the classes in the CS emphasis will give you a solid enough background to do fine along with ACME. You do unfortunately have to prep for interviews. I say unfortunately because interviews aren’t that great of a representation of what you actually do your job. But as long as Google keeps using algorithms interviews, you have to study for them. The good news is that I found ACME to be great interview prep. The algorithm stuff was not super difficult to prepare for after having been in ACME for a year. You’ll still want to study and read up online a little bit about what will be covered so you’re not totally taken by surprise. Try practice questions and prepare like that. I do think that ACME was good interview preparation.
Tim Riser: How should students navigate choosing a location and team during the Google interview process?
Jessica Wise: Generally, you’ll likely be interviewed for a particular location. You’ll get an offer for a certain location. If that’s not the location you want, your recruiter does have some incentive to want to hire you. It’s not like if you make a little bit of a fuss the recruiter will think you’re too complicated and throw you out. If you got all the way through the pipeline and the recruiter does want to get you hired, you do have leeway to say “Hey, I actually am curious about this other location. Could I go there instead?” That’s actually what I did. I started out in Mountain View and then around the time of my on-site interviews, I switched to Seattle instead. I was fine to start out in Mountain View because I thought I had no chance of getting in, so I thought it didn’t matter where I’m getting hired to. The same goes for team matching. They match you with a team or three, and you have interviews with the managers of those teams to decide which one to be on. If you don’t like any of the interviews, you can push back and ask if they have more options—although they might not have more options, especially if hiring is slow or something, but you can ask.
Tim Riser: What skills, technical or otherwise, have been most useful for you and your career?
Jessica Wise: The obvious ones are knowing how to program, et cetera. One that might be less obvious is that knowing more than one programming language before you start working is very helpful, even if it’s not the language that you’re going to use. Honestly you probably won’t use Python in your job. You might if you’re a data scientist, but it’s not super likely if you’re a software developer. Knowing more than one programming language makes it easier to pick up another one in the future. It becomes easier to get the hang of mastering more than one language and it’s easier to pick up three. At work I code in Java, but also frequently have to read stuff in other programming languages I don’t really know very well. I’ve tried to develop the skill of being able to understand the gist of those even without knowing the language. Technical writing is useful because the job requires more writing than you might expect. People don’t normally think of debugging as being a skill, but it very much is. When you get some weird error, being able to have the persistence to figure out why and where this is coming from and what you can do about it rather than just throwing your hands up in the air. If you graduated from ACME you probably developed that already. I remember in the beginning when I was learning to code, that was sometimes something of a struggle.
Tim Riser: What are some things that are valued at Google, that you didn’t really see valued in the ACME?
Jessica Wise: Probably testing. I know I’ve talked about this on recruiting trips before, but Google has a really strong testing culture, which is great. It’s sort of understandable as a student that you’re not going to write unit tests for all of your code that you hand in as homework. That is much more valued at Google than it is in ACME. However, that’s not the case everywhere, like at my sister’s job at Intel. She says there’s a lot less testing, and I wonder, “How do you know that your code works?” So this point about testing is firm-dependent.
Tim Riser: As you’ve been out in industry interacting with colleagues from other backgrounds, how well would you say ACME prepared you to succeed as a software developer?
Jessica Wise: First off, it was great preparation for interviews, which enabled me to get there in the first place. it gave me confidence in reading and understanding papers and research literature. By the end of the ACME, I felt confident that I could like look at some paper describing something and figure out how to implement whatever was being described. And I think that that’s a skill that I gained from ACME specifically—not something that I just had to begin with. The exposure to machine learning in ACME is surprisingly useful. I say surprisingly, because you would imagine every software engineer Google is a machine learning expert, but it turns out that lots of people haven’t had much exposure to machine learning and think of it as a big black box that we can’t know the inner workings of. They’re smart, and it’s not that they’re not capable of learning about it, but many people have not needed to know much about machine learning besides what the inputs and outputs look like. I feel like ACME had a pretty good introduction to machine learning that has enabled me to like I feel like I understand enough of what’s going on. Of course, if I was designing machine learning models I would have to study and know even more than ACME covered.
Tim Riser: After four years at Google, are there any topics you wish ACME had covered?
Jessica Wise: I wish the statistics coverage it in was better. I also have a bit of a dearth of statistics knowledge from before ACME. Most people were made to take a stats class at some point and I somehow skipped that. With the ACME stats textbook still under development and the pace of the class being quite fast, I felt like I didn’t have a good intuition. Within the past year, I supplemented by going on Khan Academy and viewing their stats videos to teach myself things I was certain I should know that I did not yet know.
Tim Riser: What advice do you have for ACME students considering software engineering positions?
Jessica Wise: If you love math and you’re going to miss Banach spaces after you graduate, you shouldn’t be a software developer unless you find a field you really like. Unfortunately, I don’t know immediately what software job lets you be a software developer who cares about Banach spaces. If you generally like problem solving and figuring things out, but don’t necessarily need to be doing differential equations at your desk, then you should consider software engineering. I feel more into the second group, which is why I was willing to consider it.
Tim Riser: Any other things you wanted to share?
Jessica Wise: I wanted to make a note about my master’s program. I just finished my master’s degree at UW—University of Washington. I was in their applied math master’s program. I believe another ACME graduate, Allison Tom, is in the same program and was in several of my classes. Much of the material had already been introduced in ACME, and it almost felt like a little bit of ACME 2.0, which could be good or bad depending on what you want. At times it was good, at times it was less exciting because of that. Especially in this COVID-era, the University of Washington is well set up to do distance learning. Even though I’m in Seattle, I very rarely went to class. I mostly watch lectures online and it was a seamless experience. If you want to do a remote masters and having it be an ACME 2.0 is a plus for you, then it’s a program I would recommend.
Tim Riser: Thanks for bringing that up, and for sharing your perspective with us!