After being interviewed and successfully being offered careers at the top five companies in Silicon Valley, including Google and Airbnb, Xiaohan Zeng shares his experiences on life as an engineer, alongside a detailed reading list for students wishing to take a computer science course at university.
1 | Describe what you do on a daily basis as an engineer?
The day usually starts with a team stand meeting, recapping what went on the previous day. Most of the day is spent on coding and code review, with occasional meetings, discussions, and deploys. Coffee breaks are also essential, during which I enjoy talking about books, movies, and other things.
2 | What made you choose a path within technology and computer science?
I think it’s family influence.
When I was a child my parents bought me a popular science book series titled Millions of Whys, which covers topics like math, physics, chemistry, botany, zoology, astronomy, medicine, etc. I remember getting up early on the weekends and sitting in my bed relishing them. That book series kindled my interest in how this universe works.
My dad is a university professor teaching computer science, and worked as a programmer himself. He taught me how to use a computer and play games when I was 4. When I was 13, he introduced me to programming. The first algorithm he taught me was bubble sort and it was in Basic. It was the first time I realized there are so much more things you can do on computers other than games.
Although I majored in Chemical Engineering in my undergrad, during my PhD I rediscovered my true passion lies in programming, data science, and machine learning. I focused on statistical modelling for my research and also took courses on computer science such as algorithms, data structures, databases, artificial intelligence, and parallel computing. When I graduated I wanted to continue working in this field, so I started my career as a software engineer.
3 | What do you love about working in the Flux Team at Groupon?
First of all my team is awesome. Being the relatively junior member of the team, I was able to learn a great deal from veterans in the field. Contrary to what many people might think, software engineering is a field where experience matters a lot. Being able to work with and learn from my colleagues is the best thing.
And there are the projects we were building. We work on the machine learning platform, which requires us to combine knowledge on machine learning and system architecting. This means we needed to tap into many fields to be able to come up with a good system. It’s been a hot area and the work is very exciting.
4 | You have recently written an article on Medium describing the interview process at five large companies such as Google and LinkedIn. What did you take away from going through this process and what have you learnt?
There are many things that I learned from this process, but I guess the take-aways are: 1. Prepare well before you go into interviews. 2. Be professional and make an impression. 3. Remain curious and keep learning.
5 | What is some advice you would give to students wishing to study computer-science and later, have a career within the technology industry?
I think the most important thing is: Make sure you really love it.
It’s a field that can be difficult to get into and it’s really difficult to excel since there are too many smart people. Don’t study computer science just because it’s a hot area and it sounds cool to work at Google or Facebook.
Here’s a simple test: when there is a new technology/framework/algorithm that just came out, if your first reaction is excitement and you want to know more about it, then it’s right for you. If you think it’s another burden that you have to go through, then you might want to think again about your career choice.
6 | Do you have a reading list of books or resources that you think would be useful for computer science and engineering students?
I can recommend some book I have read.
In school you would read a lot of textbooks on computer science, but there are some books that you probably won’t use for a class but are really important for your skills as a software engineer. Here are some good ones:
1. Code Complete
2. Clean Code
3. Practices of an Agile Developer
For people interested in machine learning, here are some books that I really like:
1. The Elements of Statistical Learning
2. Pattern Recognition and Machine Learning
3. Deep Learning (by Goodfellow, Bengio, Courville)
Follow Xiaohan on Medium