A little past a year after I joined Facebook, I participated in a mentorship program with Kent Beck, the founder of “Extreme Programming” and Agile. The structure of that program is that I choose what I want to work on for an hour a day, and Kent would be watching over me and my screen from another state while talking to me.
One day at the start of a session, I mentioned that I had an idea but I’m not sure if I should build it.
The idea is basically that for reflexive connections, we can save the need to fetch the mirror from the database or other service. For instance, after fetching the ID of a name (like
jyan), when asked what is the name of
1055670107, there is no need to fetch that information. The idea seemed intuitive enough and generally useful.
Kent pushed me to give it a try even though I was timid. Thanks to him, I wrote a test to describe the behaviors I wanted, updated some code to exhibit that behavior, and submitted a diff to get feedback from the experts working on the core data fetching code.
To my surprise, the main engineer working on data fetching liked my idea. After discussing the approach with him and making some change at his request (invalidating the request cache of one direction should leave the other direction untouched), I was able to push my code.
This was an eye-opening moment for me. Before this, I was in constant doubt about whether I could contribute to “core” code–surely there are experts who know why all of my silly ideas wouldn’t work. Even if I had a promising idea, I shot it down before I even gave it a chance.
This moment gave me the courage and confidence to improve whatever I felt could be improved. In the weeks after this moment, I asked more questions, explored more ideas and reconsidered age-old assumptions in the system, and as a result discovered an entire garden of opportunities. The courage to question the status quo let me optimize memcache to reduce cache misses by 90%, identify important (but previously unknown) bugs, and learn more than ever about the Facebook stack.
When in doubt, give it a chance. Who knows, you may learn something about yourself.