My Internship Experience at ASAPP
Hi everyone! 👋 This past summer I interned at ASAPP. I had an amazing time and learned quite a lot. I worked with Docker, Kubernetes, Kafka, Redis, Rabbit MQ, Golang, react and typescript. I was a part of the “routing team” and spent most of my time on implementing new features. This often meant writing the backend code in go and then (sometimes) writing the front-end code in typescript.
This post is just a retro and details what I learned during my time there.
1. Importance of project management & breakdown
So far I was used to working mainly independently on projects. This meant that I could get away with writing just a rudimentary plan and not care about the details because only I was going to refer to it. However, when you are working with a big group of stakeholders, you need a more concrete plan with a proper timeline. I was fortunate enough to learn about project management from Patricia. I learned about sprint planning, retro, task breakdown, realistic milestones, and OKRs.
2. Teamwork makes the dream work
I worked primarily on a team of 5 people. This meant that some times I was working on the same code-base as someone else on my team. Coordination becomes of utmost importance in this case. You need to make sure that you are both working on different parts of the code-base at a specific time so that there are no merge-conflicts.
Another important part of team-work is PR reviews. I loved the environment at ASAPP in terms of PR reviews. People were helpful, supportive and encouraging. People would focus on the broader picture mostly and if there was a stylistic issue they would ask the reasoning behind your decision in a respectable and polite way.
3. Naming is hard
This was one of the most unexpected lessons I learned but in hindsight, it seems super obvious. I worked on a feature at ASAPP which took 2 days to develop, out of which 1 day was spent just coming up with the name for a protobuf field. It took this long because that one field was going to be used by multiple teams across the company. The most important take-away for me was to always block out some time in a project timeline for coming up with field names.
4. Challenges associated with owning a feature
I was fortunate enough to get an opportunity to own features during my time at the company. This meant that I came up with the details for how a feature will be implemented, how the data will be communicated across teams and then actually implementing the feature.
The most challenging part was acting as a bridge between multiple teams and coordinating the release schedule. For example, I was working on a backend feature which relied on a machine learning model. I had to make sure my feature was released only after that model release was done by another team and that the feature flags were turned on.
5. Benefits of organizing a CTF
During my time at ASAPP, the security team organized a company-wide CTF. This was super useful for multiple reasons. Firstly, it made sure the engineers who were building the main product at the company were aware of basic security risks which can occur and how to mitigate them. Secondly, it allowed a certain level of healthy competition among teams and allowed me to bond more with my team. If you are a manager, CTFs and hackathons might seem like a time-hog but the benefits far outweigh the time spent on organizing one.
P.S: My team got the second place at the company CTF ✨ ✨
As a bonus for reading this far, here is a picture of me and a good chunk of people who I worked with at ASAPP.
The internship was amazing and I learned a lot during my time there. Before planning on going back, I will try to search for a slightly different kind of place. Maybe, a fin-tech or a hardware company. Let’s see where life takes me!
Also, if you happen to work at a fin-tech or hardware company and are looking forward to hiring an intern let me know! ❤️