What I learned at Khan Academy
7 months ago, I stayed up reflecting on why I planned to accept an internship at the Khan Academy. I articulated 4 points that set Khan Academy apart for me and attracted me to the company that got a head nod from the fully-bearded-in-real-life Ben Kamens.
At the end of this summer, after 11 blazingly fast weeks as an intern - I wanted to share some thoughts on what I learned during my time Khan Academy and what I'll be taking away.
If you're wondering what I actually did at Khan Academy, stay tuned for a feature blog post!
^ hah! because I worked on new features :)
1. You can learn anything
I came into the summer with about two months worth of iOS experience and a little under two days of Android experience. On my very first day of the internship, I was presented with a conundrum:
- Join a relatively-new team working on launching a brand new Android product at the end of the summer with the caveat of personally knowing next to nothing about Android development.
- Join an existing iOS team working on a major reboot and update for the iOS platform.
Mike, my mentor, graciously gave me a day or two to really mull it over. I told Mike that my main objective this summer was to learn as much as I could about anything that anyone would be willing to teach me. With the opportunity to jump into an entirely new side of the mobile landscape, I made up my mind and took the plunge into the world of Android.
Looking back, I'm so glad I took the leap. The experience gave me an entirely new skillset and a chance to contribute to a high-impact and unreleased product. I couldn't think of a better way to personally experience growth mindset, but I guess this attitude and mentality just "falls out" of the mission of Khan Academy.
2. Code is Craft
A fundamental tenet (and former title) of Mike’s in-progress book, I was taught this important lesson through my interactions with other engineers on the Android team. Throughout Stanford’s computer science curriculum, we've been consistently taught that code should be evaluated on a basis of 4x% functionality and x% style. Where functionality is evaluated on a "Does it work on all cases?" basis and style is measured as a hodgepodge of high-level design, decomposition, and code clarity. Throughout my fledgling career as an engineer, I've been guilty of subscribing to transferring some of this logic over to a misguided opinion that the value of code is around 80% functionality and 20% style.
Coming out of a summer of code reviews with some of the most thoughtful engineers I've ever had the pleasure of working with, I've learned that the reality of great engineering paints a vibrant and colorful world in contrast to the black-and-white 80/20% split.
By treating code as a creative product, I realize that style isn't so much an attribute of code as it is an element of the design process and approach to the original problem. When code is designed well, great functionality and style will sort of just "fall out" as a byproduct. Writing comprehensive test cases/plans, making digestible and incremental changes, and the liberal use of TODOs, doesn't fall neatly into the buckets of functionality or style but sets a codebase up for long-term stability and flexibility.
3. Dig deeper
Throughout the internship, this was one of the most salient pieces of advice that I took away and a life skill I'll continue to develop. Asking why is a good first step to begin diagnosing the problem, but you can’t get to the root problem or misunderstanding until you’re willing to step out of your comfort zone.
Being uncomfortable with an explanation takes some getting used to, but it's a feeling that can be harnessed to push the boundaries of your comfort zone. Learning to tease out parts of a problem or concept that doesn't make complete sense is a powerful tool to dig deeper in the right direction.
Onwards!
I'm eternally grateful to the team at Khan Academy to be part of such a inspiring and driven class of interns. If you're interested in providing a free, world-class education for anyone anywhere, working with a talented engineering team, or both, apply for a Khan Academy Internship - they take interns year-round :)
Thanks to Neel, David, and Alexis for reading drafts of this. Credit to Michelle for the wonderful cover photo of post-it drawings of the Khan Academy team!