Advice for CS majors in college about uncertainty

I had a girl reach out to me on LinkedIn asking about an internship at Facebook. There wasn’t really much I could do given that there are formal channels for applying for internships and a referral by someone who does not know you carries little weight. I took a look at her resume and we had a conversation. The following was from the tail end. She expressed concern over the uncertainty surrounding the decisions she needs to make and my thoughts here apply to a broader audience, tailored specifically for CS majors in college.

her: Sorry for the delay in responding. These responses help me sooo much. I read every advice over and over again. I have NEVER seen anyone who can give me such useful and detailed suggestions.
her: I always feel confused and lost on my way to chase a higher goal and make progress. You cannot imagine how much your responses help with me, and how much they encourages and enlighten me. Thank you! Sending you messages are one of the best choices I have ever made these weeks.

me: From what I have seen with people similar to yourself, you’ll do fine, even if it doesn’t seem that way right now. Many students in your position have little to no experience even if they are fortunate enough to have a firm idea in mind of what they would like to do. A lot of the information you need to make these kinds of long-term decisions are not accessible to you at this time and even in the best of circumstances you only have enough information to plan for the short-term.In college I studied physics and was pre-med. The further I got into the pre-med process the more I felt dissatisfied with the realities of medicine in 2017 in America that in another world could have been very different. So at the time I was ready to apply to medical school I decided to tentatively pursue physics instead. I spent 2 yrs getting the skills necessary to get a PhD in physics and felt after looking into the long-term outcomes that research funding was inadequate and there was no reason to feel that this would change in a reasonable time period. It was only then that I started preparing to work in software. And even then I had unanswered questions about the field that many could not answer or lacked the experience to answer (e.g. socioeconomic implications of not having a CS degree). I started working in software on a maybe, unsure if it would be an appropriate field for me.

This kind of chronic uncertainty is unfortunately something you can’t optimize out with prior research. You will still need to dip your feet into whatever you are looking into by putting yourself in the same environment with people further along the pipeline than you. I once took an advanced electromagnetics course not because I was that interested in the subject but because the other students in the class were in PhD programs in EE and had studied physics in undergrad. It was helpful to be around them and get their sentiments on what they felt about a future in physics, how they feel about their long-term outcomes in EE, and their general quality of life throughout this process. This is probably what the value of at least one internship will be – you will get to be around actual software engineers and see what they think of their line of quality of life.

If you can focus on learning about the long-term outcomes of what paths you are interested in to see if they can provide what you are looking for / avoid what you don’t want. If you can then put yourself in an environment where you can interact with these same people to see what they think of their line of work. The difficult questions people are not going to be comfortable answering honestly directly but you will be able to get a general sense of their feelings of their industry if you are around them long enough. Although as an intern if you ask the right questions people will sometimes give you the honest answer, but they tend to be more senior and less likely to experience cognitive dissonance. Once I asked a radiologist if he would do things differently in his career if he could go back and I got a very detailed answer. Being so young, more senior people will naturally tend to want to give your advice they wish they knew when they were in your position if you ask for it. If you ask many senior people will be open to mentoring you as it requires few resources to have these discussions with you.

For technology this industry is changing so rapidly I think it is safe to assume that if you cannot get clear answers because nobody knows then it’s probably a good sign. One of my first questions was “why aren’t there old people in software engineering?” Nobody was able to answer this and it left me unsettled, and now I suspect it’s because the landscape has been shifting so rapidly. Younger people are more open towards learning new skills and new ideas because they are not tied to families or other careers like older people are. Also, due to this same phenomena older people are disconnected from peers who in these careers, making it difficult to get sound advice on what opportunities exist and how to appropriately prepare for it. Being in college majoring in CS you’re surrounded by programmers who can take a look at you programming and say “hey instead of typing in your password for git all the time you should set up ssh keys.”

There is surely an endless amount of advice I could continue to give but for someone so early in college with a traditional background (major in CS) it largely amounts to finding ways to get yourself in the same social circles as people who are more senior in the areas you want to explore further, not just for mentorship but also to get a sense of what they think of these careers. Being a student you will get opportunities that do not exist after graduation like the ability to participate in internships or programming competitions despite being relatively unskilled. Finding out certain paths are not for you is not exactly wasted time because it is still useful information to know what you don’t want. The worst mistake that could be made would be to not understand the opportunities available to you for only a limited time (eventually you will graduate and be excluded from these opportunities) and either not graduate college (that CS degree has profound socioeconomic implications in software) or only take selecting a career seriously after graduation when these opportunities are no longer available. The second worst mistake you could make would be to focus on short-term things that don’t matter and get distracted from the bigger picture. For example, it would be unfortunate to spend time on research assistantships if you aren’t even interested in a PhD when you could have spent that time doing an internship as a data scientist to get a sense of what the job is actually like. Or spending your time on graduate math courses that are at best tangentially relevant to anything in software when you could be contributing to open source projects. Deciding how you spend your time has a much bigger influence on long-term outcomes than the more complex tasks like solving a particular problem. Work smart first, work hard second.