Research engineering: A bridge between software engineering and research

 

Alp Yakici
Rice University
Houston (29.7° N, 95.3° W)

 

featuring Peter Tang, Research Engineer, IBM, Houston (29.7° N, 95.3° W)

Peter Tang received his bachelor’s of science degree in bioengineering at Rice University in 2018. During his undergraduate studies at Rice, he worked at various research labs, such as the University of Texas MD Anderson Cancer Center as a bioinformatics researcher and the University of Houston as a brain machine interface researcher. After graduation, he joined IBM as a software engineer and worked on the Watson OpenScale platform. He later transferred to IBM Research, and he is now working at IBM Research – Cambridge as a research engineer. In our conversation, we discussed his research interests and the differences between software engineering and research engineering. We concluded our conversation with his recommendations on how college students can gain hands-on experience to be successful as research engineers.

In his current position, Peter works in a large team of 12 people. His team has one manager, four research staff members, and seven research engineers. When asked about the work distribution in his team, Peter says “when it comes to bringing out features, everyone has a say in it, but when it comes to more academic topics, it requires more [scientific] background, and [research staff members] come up with an idea and champion it.” Even though Peter’s team works on long-term projects, he says his daily routine is very fast-paced. His team conducts triage meetings twice a week, where they assign tasks that focus on different areas.

One of the most important takeaways from our conversation is the difference between being a researcher and research engineer in the industry. According to Peter, research engineers usually hold a master’s or a bachelor’s degree and “build engineering systems for researchers.” Researchers, however, are “PhDs who come up with theories, [publish] papers, or [manage] small-scale projects.” As a research engineer, Peter’s day-to-day tasks involve building large-[scale] software [systems]“ for [researchers] to make [their projects fit] into the real world.”

Another important takeaway is the importance of extracurricular activities – even if they end up becoming one of the “tedious and boring” ones. Peter recalls the research projects he disliked, but the experiences he gained through those projects helped him shape his priorities and taught him how to communicate with researchers and managers. He suggests that “you have to communicate and let both sides know what your purpose is and try to optimize the mutual interests.”


Highlights from the interview:

What were your parent’s expectations from you, and how did they shape your career choice? 

Both of my parents are architects and my mom is more of an artist.  My mom’s side of the family has lots of artists. When it came to me, they never really had any expectations other than being an architect. And, I hated that. I told them in middle school that I didn’t want to be an architect at all.

I got into Rice to study genetic engineering because I found it interesting to edit the genome. My friends did not have any influence in my career choice, either. It has always been my choice.

During the freshman year, I started working at a genetic lab. The projects were so slow, experiments took forever; I had to wait for five days for a result and only then I could start a new experiment. I’ve realized slow-paced projects are not for me. Then, I took Comp 140 [Computational Thinking] course and I fell in love with it. That’s what made me become more interested in computer science. I stuck with biology because I was still interested in biological systems and how to optimize them, but I think of computer science more as a tool that can be applied to many different fields. Biology or human physiology was a field that I wanted to apply [my computer science knowledge] to. 

Now you are a researcher at IBM.  What field do you do research, and how did you end up becoming a researcher at IBM?

I would correct the term researcher because I’m more of a research engineer. There is a difference in the industry. Research engineers usually have masters or undergraduate degrees and build engineering systems for researchers, who usually have PhDs and come up with new theories, [publish] papers, or [manage] small-scale projects. As research engineers, we build large-scale software [systems] for them to take their projects into the real world. As a research engineer, I build systems to help the researchers showcase the capability of their products or build prototypes to help their thought process.

And how did I end up being a research engineer? I got accepted into IBM as a software engineer in the Watson Department. At the time, they had a new software platform called Watson OpenScale, which is an online machine learning model-monitoring platform. My team was physically located right across the hallway from IBM Research. So, I started talking to people from there and I told my manager about my remote goal of going back to the graduate school and asked for help. My manager suggested I look for a side project. He used to be a researcher; so, he connected me with someone he collaborated with in the past. That’s how I started doing more side projects, and it eventually led to a full-time position at IBM Research.

What keeps you motivated about being a research engineer?

There’s so much to learn and so much to build. I would like to use a quote from my manager when she first told me about this position. She said, “when you accept this position you’ll expect to build things that no one has ever built before. You will not know what you’re going to build the next day because no one knows the answer to it.” Because these are the questions that people come up with to solve things that have never been solved before, I have so much flexibility in what I want to build, and why I want to build it that way. So, it really develops critical thinking of why a system should be some way or how should I build this thing to make it robust and also enable a good user experience. I’m also learning a lot of new skills that I’d never touched before. Before, I was using MATLAB for machine learning purposes. It was useful in academic work but not in the industry. I’m now learning Fullstack, the CICD, Python, deep learning, and many more skills that will be useful for my career whether I stay in the industry or go back to the graduate school. Also, the people I work with are smart, and I’m learning a lot from them every day. Especially the researcher I work with sends me articles and “how to” guides such as “how do you become a hacker?”, “what are the ethics of hacking by yourself?” or “how to contribute to opensource projects?”. He’s really passionate about software engineering and Linux and motivates me to build something new or think about what to build. 

What recommendations do you have for students interested in becoming a research engineer? 

Have a curious mind, be willing to learn new things and jump into difficult problems and try to solve them. And have a passion about something that you know, you can hang onto. Research engineers are expected to implement other people’s ideas; so, a lot of times you may find your job less meaningful if you don’t put your heart into it. You should be able to deal with ambiguity sometimes. 

Do you find the work environment as a research engineer fast-paced?

Yes, I would say it’s pretty fast-paced. When researchers have new ideas, I have about a week to build something. Mostly they are small tasks; they take a day or two to complete, but some involve a lot of coding and learning about different parts of the code. In that regard, it’s really fast-paced, especially compared to the product development because in product development, every step has to go through quality assurance and user experience testing; the vetting process for product development is much longer.

There are a lot of things in my job that involve team effort. Sometimes I pursue a project in the back end and an engineer depends on it in the front end; finally, the project goes to the person who deploys it; so, we work as a team to create something. Recently, our team worked together  to build a demo product for the public, and it gave all of us great satisfaction at the end because we accomplished it as a team.

What is something you wished you had known when you were a sophomore or a junior in university?

Make sure you do some side projects and learn about different things. Because a lot of times I feel like I didn’t learn enough in school; the school was more of a paperwork and learning on paper doesn’t really help when you’re a software engineer. Nowadays, the technology is moving at a fast pace and you wouldn’t be able to learn all that in the classroom. So, explore them on your own and combine them with something you’re interested in life. If you like dancing, try to make automation in dance videos; in other words, combine your computer science knowledge with something you have interest in and that will be much more original, much more interesting.

 

Interview excerpts have been lightly edited for clarity and readability and approved by the interviewee. This article only aims to share personal opinions and learnings and does not constitute the interviewee’s current or former employer(s)’ position on any of the topics discussed.