The MongoDB Summer ‘18 Intern Series: the Node Driver, Inside and Out

Andrea Dooley

Culture
Facebook ShareLinkedin ShareReddit ShareTwitter Share

Rebecca Weinberger joined us this year as a Summer ‘18 intern, but this was not her first encounter with MongoDB. During her sophomore year at MIT, Rebecca participated in a web development competition. She and her team used the MongoDB Node.js Driver in their application and won their division for first time participants, so it’s no surprise Rebecca spent her time at MongoDB on the Node Driver Team.

Andrea Dooley: How did you first become interested in computer science?
Rebecca Weinberger: My older brother studied computer science in college, while I was still in high school. I always liked computers but never did any real coding. He would show me snippets here and there of what he was working on, and I thought it was really interesting, even though I didn’t totally understand it. When I went to MIT, I had a hunch that I would enjoy computer science, and it definitely was the right choice for me.

AD: Can you talk more about the web development competition? What did you create using the Node Driver?
RW: We made an app for trading products within the MIT community. For example, if you are moving out of your dorm and wanted to get rid of a lamp, you could upload a photo and an asking price, and someone could purchase it from you. It was login-secured and had a built-in messaging system. It was really easy to integrate MongoDB into the project. We had to store information about the products and the users, and because of MongoDB’s flexible schema, we were able to develop quickly and make changes later if we needed to. The experience really kickstarted my passion for building web apps.

AD: Did your experience early on working with MongoDB have anything to do with your decision to apply for an internship?
RW: I ultimately ended up coming to MongoDB because I got the sense the internship program was exceptionally good here. Just from talking to recruiters and doing research online, I learned great things about the program. I liked how fast the company is growing and the kind of work people are doing. I knew about the product but wanted to know more about the company. I remember the interview process being the most positive interview experience I’ve had. All the interviewers were very supportive. They didn’t make me feel stressed or stuck. They asked questions that were fun to solve, like how to determine if a binary tree is symmetrical, and how to reverse an integer without making it into a string.

AD: Was it a coincidence that you wound up on the Node Driver team, or did you request it?
RW: Even though I used the Node Driver before, I didn’t necessarily know much about it. I knew it provided the API for developers to use MongoDB but I didn’t know what it looked like on the inside. It was my first choice for my team, not only because I had some familiarity, but because I also knew it was a highly regarded product with high impact on the millions of people who use it.

AD: Can you speak more to the level of impact?
RW: Impact was one of the main things I was looking for in a company. I remember working on a ticket that got some attention from the community. It was a high priority bug fix, and when I put up a pull request with the fix, people from the community around the world started commenting on it on GitHub. It helped reiterate that MongoDB is open source. Every user can see what is going on internally in the driver, including fixes for bugs significant to their projects. The immediate feedback from the community is proof that the work is incredibly significant. One thing I really wanted was to ensure any work I did would not get lost or not see the light of day, and this is something that proved true throughout my experience. This was super important to me.

AD: What are some of the specific projects you got to work on?
RW: At the beginning of the internship, the codebase had a problem with the way deprecation warnings were emitted. Methods were inconsistent, hard to read, and as a result hard to change. I worked with another intern on the team, and we created a uniform deprecation function and integrated it into the codebase. It was a good starting project and efficiently introduced us to the codebase. We also worked together on a framework for running tests on BSON libraries in the browser, or client-side. These libraries were starting to be used client-side, for things like MongoDB Stitch, so we wanted to make sure they behaved correctly client-side as well as server-side. It was not intended to be a huge project at first, but it had a lot of kinks and niche bugs to work out. At some point, we had to pull in people from other teams to help. I ended up learning a ton, especially about some specific packages.

AD: Did your previous experience with Node Driver help you ramp more quickly?
RW: I remembered how the API looked on the outside when I first worked with it because I was simply calling those methods. But once on the team, I was seeing and working on the driver from the inside. For example, when I call a method and pass it an option, I can see exactly how that option is passed through the code and eventually applied to the command to achieve the desired effect. Our mentors did a really good job of getting me quickly comfortable with a huge codebase. They assigned projects very thoughtfully, so there was a natural progression through the summer.

AD: What was one of the most interesting things you learned during your internship at MongoDB?
RW: I didn’t realize how far-reaching MongoDB is until I came here. It’s used in so many places, from the sports industry to airline travel. It makes sense when you think about it, but as a consumer, you usually don’t think about the database behind the applications you’re using. Almost every website needs a database. It was so cool to see how widely used MongoDB is. As far as academic learning, I’m a lot more comfortable with writing JavaScript in the Node environment. There’s a lot of features Node has that I was not aware of, and they came into play in various ways throughout these projects.