Engineering

The things we built: Meet our 2018 summer intern class

Every summer for the past six years, Asana welcomes a new class of technical interns who work on a variety of projects over the course of several months. This year was no different, with 17 technical interns working directly alongside our engineering teams this summer.

Before our class of 2018 interns returned to school, I caught up with a few individuals to find out what they built at Asana this summer and get their input on what it’s like to be an intern here.

Meet our 2018 interns

Our interns this year hail from University of Waterloo, University of Pennsylvania, University of Illinois, Purdue University, and Stanford University.

Jameson enjoys running and badminton, tried and quit fortnite, and began climbing with other Asanas over the summer.

Karinna (far right) travelled across Asia, visiting Thailand, Taiwan, and Korea before joining Asana.

Kevin (far left) runs, climbs, and plays the violin in his free time.

Hilda (back row, sixth from the left) loves anything to do with aviation and alligators.

Henry enjoys playing board games and bouldering.  

Amy (first row, fourth from the right) likes to rock climb, play card games, and do competitive programming.

Jonathan (back row, third from the right) enjoys DDR-like rhythm games, running, and has experimented with developing Minecraft replicas.

What projects do interns work on?

Interns at Asana aren’t just “interns.” We consider them to be core members of the team like any other full-time employee. This means that instead of working on low-risk projects on their own, they contribute directly to the goals of our different product teams. Here are just a few technical projects our interns worked on this summer.

Jameson worked on the Core Experience (CX) team. CX focuses on simplifying Asana’s UI and making it effortless to use the product. Jameson worked with the team to create a new homepage for the app, which will help surface important information to users and clarify Asana’s structure. Since this is a major piece of new UI, Jameson had the chance to work across the entire Asana stack: from designing the CSS, to implementing the React components, to changing the data model.

This involved working with many different teams, including our User Experience researchers to determine user needs, the Stability team to ensure the data model changes were performant, and the Security team to ensure the data saved was not exploitable. Jameson also drove writing a design doc where he specified the architecture of the necessary data model changes.

Karinna spent the summer on the Android team, which is responsible for all development on Asana’s Android app. This summer, the team was focused on capture: making it easy to get information into the app so that all your work is tracked in Asana. As part of this, Karinna worked on a new comment composer for the Android app. This exposed more functionality to the user, making it easier for them to add more metadata like attachments (through a full screen gallery), and mentioning other users.

This involved researching libraries, investigating ways for us to build this ourselves, and eventually forking an open source library. She also worked with the team on releasing WYSIWYG editing for tasks, which involved architecting new reusable components and moving existing components to a Model View Presenter pattern.

Kevin contributed to the First Experience team this summer. The First Experience team focuses on making it easy for new users to understand the product and collaborate with their colleagues from day one. Kevin spent the first half of the summer focused mostly on revamping our in-product education framework. The new system gives users a guided tour of the product tailored to their specific role.

Kevin initially worked on connecting the framework to Asana’s data model, making it possible for each user to receive a unique set of education steps and allowing engineers to customize the display of steps. He later spent time implementing one of the tours that is delivered to over 70% of new users, teaching them about primary actions they can take.

In the latter half, Kevin worked on a visual overhaul of the new user setup experience. Kevin also took advantage of our “offsprint” system to work on interesting projects outside of First Experience. He completely overhauled the graphing capabilities of our error-reporting tool, Airpedal, allowing engineers to have a much more detailed view of exactly when, and on what releases, errors occurred.

Hilda worked with the Data Science team this summer. Her project was to make our machine learning models less of a black box. Our Data Science team uses machine learning to come up with scores that predict how a customer is going to act. For example, we have a model which determines how likely it is that an account is going to leave Asana, also known as churning. These models are quite accurate, but it’s difficult to communicate their results to other teams as the underlying machine learning algorithms don’t make it easy to determine what factors were most important in making a prediction.

Hilda worked on creating a layer on top of models, which identifies the factors a model found important for each sample that it scored. For example, instead of just having a likelihood an account is going to churn, this explanatory layer would output that the account has very few users who assign tasks and this makes them likely to churn. This required a large amount of research, as making a model “understandable” depends on the audience and the model itself. The first half of her internship focused on understanding the theory behind this, and running experiments to evaluate the accuracy of different approaches with our models. The second half focused on implementing this layer in the existing Data Science pipeline.

Henry helped us scale our infrastructure as part of the Stability team this summer. The Stability team works on making sure the site stays up. This includes proactive work to scale all of our backend systems as well as reactive work to resolve problems before they cause downtime.

Henry worked on moving Cluster Config, our global server settings, from memcache to S3. Previously, when memcache got overloaded, we’d try load Cluster Config and fail. We have some fallbacks, namely Zookeeper and an RDS database, but they can’t take the same load that memcache can. This meant when memcache was overloaded, our fallbacks would also get overloaded, which meant our servers would not be able to retrieve configs and our fallback systems would go down.

Henry moved this config to live in S3 instead, and built a syncer service which runs on the machine, monitors Zookeeper for changes to the config, and download this config from S3 to the local file system. This means web server processes could load the config from disk instead, decreasing latency and load on our other services. Henry was also involved in the operations side of this work, helping troubleshoot some related downtime.

Amy worked on the Monetization team, the team responsible for maximizing annual recurring revenue. Their work includes everything from creating trial versions of Asana to running experiments on how we can make our premium offerings most attractive. As part of this work, they manage the backend infrastructure for billing at Asana. The first project she worked on was solving one of our largest customer tickets: viewing the last invoice. This involved changing the UI, as well as integrating this UI with our backend payments provider. She also worked on the data model changes required to make it easy to add new premium tiers to Asana, which gives engineers working on features in those tiers a framework that lets them easily define when their features are available or not.

Jonathan contributed to the Portfolios Team, a team developing features that allow cusotmers to keep track of the status of multiple projects at a time. After building some simple views for features on Portfolios, he started working on extending Custom Fields, which let users add arbitrary metadata to tasks in Asana. For Portfolios, we wanted to be able to add these to projects. This ended up being quite complex, as it involved a data model change, significant generalization of React components throughout the app, as well as integrating with LunaDB, our way of getting reactive data from our databases.

He became the expert on the team for this work, with other teammates consulting him before working on related features. While working on this, he also came up with the idea to build a toast framework. In the app, toasts are notifications that display in the bottom left side of the screen. While working on a toast for Portfolios, he noticed that every toast was implemented a little differently and had different functionality.

There were also bugs: if you navigated away from a page, sometimes a toast would disappear. To fix this, he worked on a client-side service to unify toasts across the product: Instead of implementing a new toast-management component for each view, you simply pass toast contents to the service and it handles the positioning and lifetime of the toast elements. He worked on this during Asana’s off-sprint, time given to each engineer to work on things they feel are important outside of their normal program work.  

What does mentorship look like at Asana?

Every intern gets support and guidance from several mentors during their time at Asana. Our mentors play a key role, from connecting interns to other team members and coaching them through challenges to identifying opportunities to help them maximize their success. Here’s what this year’s intern class had to say about mentorship at Asana:

“I think my team definitely has been very integral to me growing as an engineer and more specifically their focus on me as an engineer. The focus of the mentorship is: ‘Take your time. We want to invest in you as an engineer because if we do, you’ll be more effective over time.’ I think this seems obvious now, but I don’t think a lot of companies practice that mentality.” – Karinna

“I think one of the biggest things that I’ve learned is how to work well with other people. In other internships that I’ve had, I’ve been very siloed: I have my project, I have what I’m doing. The difference here is that other people are working on what I’m working on, and this means I’m able to learn how to work with people.” – Kevin

“Before I even joined, my mentor started discussing with me what I wanted to work on, making sure I could have a project where I’d be able to see the impact right away.” – Hilda

“My work helped me be both be less afraid to break things now, but at the same time, more careful about changes I’m making. It taught me to pay more attention, slow down, and try not to gloss over details that seemed irrelevant.” – Henry

“A lot of this internship has been learning how to learn: how do I learn in the most efficient way possible, especially in such a short amount of time.” – Amy

“Whenever I have a question, I can always turn to my mentor and get a good explanation. He’s very encouraging and supportive.” – Jonathan

To read more about mentorship at Asana, see Engineering mentorship at Asana.

What is it like to work at Asana?

At Asana, we treat company culture like a product: it’s designed and built by a team of people, who each contribute to a different area of responsibility. For us, it’s important that our interns are able to engage in our company culture at large and get a sense of what it’s like to work here full time. Here’s what they had to say about Asana’s culture:

“It feels comfortable to me. You get the impression that everyone is available to chat and offer their thoughts in whatever context, and I think that’s very liberating. You feel like you’re part of the same team.” – Jameson

“I think Asana has one of the most mindful cultures that I’ve experienced. And mindful means a lot of different things here. It means acceptance of everyone. It means criticizing processes, not people. It also just attracts really nice people. I love hanging out with Asana interns.” – Karinna

“I can ask anyone questions, and I feel like what I have to say is being respected and people actually want to hear my perspective as an intern.” – Hilda

“Asana is very good at getting work to be efficient through clarity. This affects everything, from how we plan for things to how we specify our mission.” – Amy

“At no point in my assigned internship have I felt like my opinions were valued less than someone else on my team. I’ve always felt like I was a member of the team from the start.” – Jonathan

To read more about how we think about making Asana a great company for new grads, see Advice to engineering new grads: Don’t start your career at just any company.

To learn more about our university program and see open positions, visit our University page.

Would you recommend this article? Yes / No