Permission to Struggle
Welcome to the Behind the Tech newsletter! One of my favorite things about working in tech are the interesting conversations that I have with scientists, engineers, entrepreneurs, and creators making tech or using it to do new and innovative things. I’m so consistently inspired by these conversations that I’ve tried over the past few years to share some of them with you all. My podcast, has been one way to share those conversations, like the recent discussion I had with MIT PhD Ben Bloomberg and Grammy Award winning artist Jacob Collier, about technology, art, and creativity.
In addition to the podcast, I’m going to use this newsletter to distill and share some of the most interesting bits from those conversations. I thought that I would start with something that I wrote a few years ago, advice to a young man beginning the study of computer science who reached out to ask:
Is there any advice you can give someone starting in this field that will help them thrive?
This is what I wrote:
Mason,
Thanks for reaching out. First off, my Dad was in the Army in Vietnam, and my Grandfather served in the Navy in WWII. You have my appreciation and gratitude for your service.
My biggest pieces of advice to you, and the things that have helped me out over the years, are: be curious; be confident; be persistent; have a plan; and don't be afraid to take intelligent risks.
The hardest one of these 5 things for me was being confident. I grew up in rural central Virginia at a time when computers were scarce, and where the schools weren't really set up to help incipient computer scientists get their start. My parents hadn't gone to college, and the most likely thing for me to do when I graduated high school would have been to go into construction which is what my father, grandfather, and great grandfather had done. I chose a different path. But, for a very long time, I felt like an imposter on the path that I chose. I felt like I didn't belong wherever I was: in the internships that I got; in graduate school; at academic conferences where I was presenting papers I had written; and even at Google and my startup AdMob.
I think that the biggest reason that I felt like an imposter was that I was ambitious, and was always pushing myself really hard, trying to master difficult material, or putting myself into situations where I was surrounded by a lot of other capable folks and doing things at or beyond the limits of my experience. I hadn't accepted that pushing myself this hard was hard. No one ever told me that it was normal to struggle a little bit with hard things. I was constantly convinced that I was the only one struggling, which just made the struggle worse.
A good story to illustrate my "imposter syndrome" is from my freshman year in college by which point I was convinced that I wanted to become an expert in programming languages and compilers, go to graduate school, and eventually become a professor who taught these subjects at a good University. At the time it seemed to me that a natural first step would be reading and understanding papers from prominent journals like ACM Transactions on Programming Languages and Systems (TOPLAS) and Proceedings of the SIGPLAN Conference on Programming Language Design and Implementation (PLDI). I remember the first issue of TOPLAS that I picked up had papers in it with titles like "An interval-based approach to exhaustive and incremental interprocedural data-flow analysis" and "win and sin: predicate transformers for concurrency".
I looked at these papers as an 18 year old first year CS student and was totally lost. From my vantage point at that time I could barely conceive of a version of me who would be able to understand this material, much less master it. But I had more stubborn in me than self-doubt, so, I kept reading and attempting to understand the papers in these publications, very slowly at first, stopping to read some of the references that I needed to understand before I would have any hope of comprehending the papers themselves. Over time I got faster, and required less background research to fill in the holes in my understanding. After a few years I felt less incompetent. By my first few years of graduate school I was publishing my own papers in peer-reviewed conference proceedings (although funny enough, never TOPLAS or PLDI). And by the end of my graduate career I was being asked to sit on peer review committees for conferences where I would have to read stacks of submitted papers relatively quickly, provide critical feedback to the authors, and give my recommendations to program committees about which manuscripts I thought were publication worthy.
It took years of hard work to get to that level of mastery, but the task wasn't impossible, even though I thought it might be at the beginning.
Giving yourself permission to struggle with hard things is important. It's normal. Everyone encounters difficulty, and overcoming difficulty usually implies struggle. The only folks who don't struggle are those who don't challenge themselves enough, or those who give up too easily. So push yourself and embrace difficulty when it comes. Nothing worth doing is easy.
As you study computer science, you will find that some things, e.g., acquiring a new skill, being able to complete a meaningful project, tracking down the root cause of a pernicious bug, developing a new algorithm, proving an especially tricky theorem, or having enough impact in your job to be recognized by your peers and your company, can take a long time and require a lot of effort. Having the persistence to stick with these challenges until you've conquered them is more often than not the path to a career filled with fulfilling and distinguished accomplishments.
Curiosity can be a hard thing to cultivate if you don't have it, but, being interested in lots of things, especially in the field of computer science, can be an extremely important trait to have. Computer science is a broad field, and one that changes constantly. If you are not curious about things beyond the narrow slice of the world of software that you're focused on for your work, your hard-won skills can become irrelevant without you noticing. Being curious about what's happening around you and in the industry at large, and acting on that curiosity to learn and grow can help you stay on top of your craft, and open up opportunities that you might never have if you allow your skills to ossify.
Finally, having a plan for what you want to accomplish over a multi-year time horizon can be an amazing asset for you. It can help you focus when you're struggling. It can help you use your time well. And it can even help you figure out which risks are worth taking. For a very long time, from age 16 through 30, my plan was to be a computer science professor. Having that plan helped me not be distracted over the long years I spent in grad school, and informed which risks I took and didn't take. A very short while after I joined Google, my plan was to be a head of engineering at an important Internet company. (I had no idea what that meant, but it was my plan anyway!) That plan helped me decide which opportunities to pursue, which holes in my skillset to fill, and which risks were worth taking, particularly in terms of taking on new challenges and roles.
It's totally ok, and natural for your plan to change over time. Even if it is going to change, having a plan can be a very, very useful tool, and the difference between a life where you feel like you're being tossed around by forces beyond your control versus feeling like you're driving and that your destiny is mostly in your own hands.
Hope that helps. Good luck.
-Kevin