Software engineers design and build software products. Their day-to-day work consists of developing new features, sorting out bugs, and working on new versions. To find out more about this role, we interviewed Jesse Huang, a software engineer at Microsoft.
Q: What is your job title?
My formal title is Software Development Engineer I.
Q: Where do you work?
I work at Microsoft on Azure Stack Hub. That’s a hybrid cloud product that Microsoft offers. I’m on the Telemetry team, which is in charge of collecting and managing internal performance data, so we can provide Microsoft with insight on how the product is performing. They leverage that data to make improvements and informed business decisions.
Q: Can you explain a bit more about what Azure is?
Yes! It’s like the equivalent of AWS from Amazon. It’s cloud computing. The vast majority of all modern tech infrastructure lives on cloud computing solutions, like AWS or Azure.
When the internet was first getting started, people would run small-scale servers on their own computers, but what Azure and AWS do is provide these servers as a service. You can rent these servers out and use them as your own. So if you’re a software company, instead of maintaining your own servers to store information, you can just say, “I want to purchase this type of server from Microsoft or Amazon.” Then, you can use those servers for whatever you need to do. Today, a lot of software runs in the data centers that pertain to AWS or Azure.
Q: Did you have a different job before this and, if so, what was it?
This is my first job out of school. I’ve had internships at Citi and Boeing, but being a full-time engineer at Microsoft has been very different. Both of my internships were centered around an intern project. It was small in scale and independent from what the rest of the team was doing. As a full-time employee now, my work is very entwined with the work of my colleagues.
Q: How did you get to be in the position you are currently in?
A company as large as Microsoft is always hiring new engineers. I applied through university recruitment, which takes place in the early fall semester of school. I was placed on a team after I went through the interview process and got accepted.
Everyone’s first day is N.E.O. or New Employee Orientation. That’s a day where all the new hires for that particular day are ushered through a lot of events as an introduction to Microsoft.
Q: What are your main responsibilities as a software engineer on the Telemetry Team?
As the Telemetry Team, we are responsible for the Telemetry product within Azure Stack Hub. Who does what amongst our team isn’t strictly defined. More senior engineers will take ownership of larger parts of the product and larger features. With that said, any person on my team can be given work on any part of the product, depending on what needs to be done.
I’m on a team of six people, which is pretty small by coding standards. Like everyone on the team, I write code as part of new feature development. I also manage other processes in our product. For example, I’ve taken ownership of a lot of product build processes within Telemetry. So if anyone on the team has questions about a particular thing that I own, then they would come to me. That’s the same for each member of the team, and we all have a good idea of who is the best person to ask for what. So if part of my work touches on a feature that someone else is the expert on, then I can go to them for any assistance that I need.
Q: Does your team use Agile or some other type of methodology?
Yes. We have Scrum meetings every three days. We don’t follow the Agile process to the tee, in that meetings aren’t capped at 15 or 30 minutes. But we do meet regularly to discuss what we’re working on, and we do keep track of our tasks on a sprint board. We also have larger blocks of time where we are expected to deliver certain things. Microsoft is kind of quirky in that we name our semesters after elements, going down the periodic table to a new element every six months.
Q: What do you like about being a software engineer?
A lot of things! I really love the collaborative aspect of programming. I think there’s a stereotype of software engineers being antisocial, but that hasn’t been the case on my team. I’ve noticed that it pays off to be as approachable and friendly as you can because the problems that we face require a lot of collaboration. Sometimes you will be tackling a problem that touches on a subject matter you just have no idea about. But if you know who is the expert on that, then the problem-solving process becomes very straightforward. And if you’re very friendly, you generally have an easier time getting the right knowledge that you need from whoever has it.
I like my team a lot. I have an understanding boss who is really good at her job. And my coworkers are very friendly and approachable. They’re very eager to collaborate, so I appreciate my day-to-day. I’ve noticed that in a lot of jobs, so much depends on the team that you have. So I am fortunate to have a team that I like.
Q: What is hard about being a software engineer?
When you have a complex product with a lot of intertwined features and components, there’s a lot of opportunities for things to go wrong. I’d say that debugging and fixing these errors is the hardest part of my job and it actually takes up the majority of my time, as opposed to writing code for new features. Hunting down an error requires a lot of persistence and you have to look at a problem from many different angles since there are so many different things that could go wrong. Oftentimes, there are very many things that have gone wrong. So you get into this cycle of, “OK, I’ve nailed down the source of this problem. Now that I’ve fixed that, another problem has been revealed and I have to fix that.” You just have to be persistent and not get discouraged by the errors that you have to fix.
Q: What skills are important for software engineering?
There’s a lot of skills that you wouldn’t put on a resume. I could say I use C# and the .NET suite, which is a programming language and its associated infrastructure. But I didn’t know any of that before I went into this job.
The important skills are more subjective. I’d say one of the most important is the ability to learn and pick up new things quickly. Every month I’m learning something new. It’s a constant process of learning about new things in our product, and you have to be able to adapt to new challenges quickly. And with that, asking the right questions and being unafraid to approach people is very important. A lot of the time you’ll be dealing with something that is completely unknown to you, but someone within our organization is an expert. They know exactly what you’re trying to do and can give you the exact fixes. So being willing to explore the larger organization to get the answers you need is also critical.
Q: Going into this job, did you know a different coding language and then had to pick up C# when you started?
Yea, I think honestly, once you know one language really well, it’s pretty straightforward to pick up the rest. You just have to spend enough time with them. I interviewed with Python—I’d never touched C# before—but it was fairly easy to pick up. There are exceptions of course with really wacky languages but, for the most part, you can learn the languages as you go.
Q: What advice would you give someone who wanted to start a career in software engineering?
Of course, having a computer science or software engineering degree will definitely help with getting your resume in the door, but it’s not necessary. I know a lot of people who did not major in computer science and not necessarily even STEM. There are English majors and journalism majors who have gone on to have very successful careers in computer science.
I would say, for the way interviews are structured, you just have to practice a lot of Leet Code. Send out a lot of applications—hundreds if necessary. Interviewing is tough and nobody likes it, but if you’re persistent, it does pay off.
Q: Anything else you want people to know about being a software engineer?
As a software engineer, and as a software engineer at Microsoft, you can find everything from very stressful, high-paying jobs to chill jobs with a really strong work-life balance. It depends on the team that you’re on, the company that you go to, the product, and your role of course.
Switching jobs in software engineering is common. One fortunate thing is that we have a lot more freedom than most other professions to choose what kind of work life we want.
There’s also this undertone that you can sense. Some people say that if you want to make the most money possible, you should switch jobs every two years. That’s completely unappealing to me because I wouldn’t want to always be in interview mode. However, some people are looking for that.
Bonus Q: What else do you like to do outside of work?
At the risk of sounding too ‘tech bro-y,’ I’ve gotten really into strength training, so I spend a lot of time at the gym. I’ve also gotten into challenging all of my more shameless friends to rap battles, to everybody’s collective embarrassment. It’s extremely cringe, but I have no shame so it’s great!