Steven Hao

2017 Summer Intern

Steven joined us this summer from the Computer Science program at MIT, where he is pursuing his bachelor's degree in Computer Science and Mathematics.

I worked on several projects during my internship at Meteor. For the first few weeks, I worked on the Open Source team contributing to the Meteor project and refactored the `boilerplate-generator` package to remove its dependency on external templating engines. This makes it possible for developers to remove the blaze package from their server, reducing the bundle size. Another project I worked on was fixing issues in Meteor's accounts system. I fixed a bug that mistakenly expired tokens and also investigated a bug related to the performance of large sets of tokens on different versions of Mongo. Finally, towards the end of my internship, I worked on Apollo-related projects, including Apollo Client and Optics. On Optics, I worked on frontend features that enabled searching through a list of queries. On Apollo Client, I worked on improving the performance of the query store as well as on giving the dev tools more access to the internals of Apollo Client.

Interview

How did you get into Computer Science?

The first program I ever wrote was on my calculator (TI-84). I wrote a game that would ask you what 12 * 14 was and you entered a number and it'd tell you if you were right or wrong. From there I wrote bigger games and eventually discovered Java. The first program I wrote in Java was a hangman game.

What made you choose Meteor?

I chose Meteor because of its reputation of having a strong engineering team. I thought it'd be the place where I learned the most, had the most mentorship, and the most interesting work.

What was it like working on open source?

It was a good experience working on open source. It's more writing english and writing technically (PRs, issues, comments in public forums) which is very different from working on a private repository. It's also a much more delicate process of balancing what everyone's looking for — they all have different agendas and features. It's different from what I'm used to.

What was it like working on commercial products?

It was cool, more similar to other work I've done in the past at other companies. It was interesting doing design for frontend features. It's interesting to see how the dynamic changes when there are fewer people working on a project, which was in stark contrast to working on the larger open source projects. Things go faster and people are less stringent.

I think I like both large and small teams. I'll probably end up working on a small team in the future while contributing to larger open source projects in my spare time. You can do more if you're a bigger fraction of the dev team. It's harder to make a big impact when you're one of a hundred contributors.

What's a unique challenge you worked on this summer? How did you overcome it?

I think it was interesting working on the performance issue in the Meteor repository. It was a very instructive experience where I encountered issues reproducing an issue and having to control a lot of different parameters to reproduce it efficiently. It was interesting trying to figure out all the parameters that might have been causing the issue.

Did you discover any new passions this summer?

The near presence of so many Rubik's cubes in the office caused me to think about them a lot more. They're great tools to fidget with that will continue playing a role in my life. I've already purchased a few of my own.

What surprised you the most about the team?

It was surprising to me how much of the team was remote. Around half the engineering team is not in the office at all points in time. It was also surprising to see how much they were involved in the process and in collaborative work, and how effectively the team communicates and stays up-to-date with what everyone else is doing.

What piece of advice would you give to next year's interns?

Find someone who can answer all your questions :)