M.S. Information and Computer Science, 2006
Why did you choose this degree?
As an undergraduate at UCI, I started working with Dr. Andre van der Hoek on some research projects. I really enjoyed the projects and research direction, so it was natural for me to continue that work at UCI as a graduate student.
What has been your career path since graduating with an M.S.?
After getting my Masters degree, I joined Google Inc. as a software engineer on Picasa Web Albums. I’ve since moved across several teams and offices and am now a tech lead/manager on an internal tool in the Google Irvine office. While I enjoy being a software engineer, I have also considered switching to be a product manager within Google, but ultimately wanted to stay technical.
What do you enjoy most about your current position?
My favorite part of the position is the amount of flexibility that I have. As a tech lead/manager, I can still code (in fact, I’m expected to code), but I can also spend a large part of my time reviewing requirements, mocks and technical design. I’m also able to do project management and think of ways to improve overall team process. Finally, as a people manager, I get to spend a significant amount of time helping people’s career growth and ensuring people are happy doing what they are doing. Basically, I get to do a little of everything and never be bored thanks to the variety.
What does a typical work day look like for you?
This changes based on what phase of the project we are in. Some weeks I’d be coding 80 percent of the time, while there are other weeks where I don’t code at all. Normally, I would say that I get in in the morning, catch up on emails and then have several hours of meetings back to back. These meetings can range from 1-on-1s to meetings with product managers and UI designers to design the latest features as well as long-term roadmap meetings. We don’t have a lot of status meetings, except for short daily stand-ups that last 15 minutes. Most of my meetings are very active with lots of discussions to keep you engaged. The afternoon usually is a little slower where I have time to catch up on design docs, triage bugs and do code reviews for others. Occasionally, I’ll have some time to code as well.
What was the best part of your experience at UCI?
I think the best part of my experience at UCI was the focus on the different aspects of software engineering. It’s not just about hardware or algorithms, but it really allowed me to explore all the different aspects of engineering from the development process to human-computer interaction to law/policies.
In what ways did your studies prepare you for your career to date?
It’s hard to pinpoint one or two things that prepared me for my career. I think you really have to think of it as a holistic experience and the breadth of topics that we were exposed to. Certainly algorithms and data structures helped build a solid foundation for programming, but so did introductory software engineering courses that taught you UML diagrams and how to identify use cases. I think the most important thing is building up the common language with other engineers, knowing what agile process is, or what class diagrams are, design patterns, etc. These all help you communicate with your coworkers on a daily basis.
What would be your advice to incoming students who might want to follow a similar career path?
Take your time to explore the different aspects of software engineering. It’s not all about programming or algorithms (though they certainly help and are what a lot of companies look for in an interview), but try to provide a complete package. You need to have a keen product sense to know what features your users want and how to make it useful as well as usable just as much as you need to understand how to program it. Also keep in mind with cloud infrastructure, you don’t need to know the details of everything, but rather understand how all the pieces fit together. Most importantly, don’t let any one aspect of computer science scare you! Just like intro to computer science taught you, it’s all about abstraction– start at a high level and slowly break down the pieces you need to learn about.