Some general advice for students!
This advice is partially geared towards university computer science students interested in technology roles like [Software Engineer, Product Manager, Data Scientist, Data Engineer, Product Designer] at a modern tech company, but much of it is generally applicable advice too.
general advice
Typically my advice for students boils down to:
- optimize for ikigai & alignment.
- build good mental & physical health foundations.
- work on side projects, about things that you love, with people you enjoy spending time with.
- invest in the ârightâ career-y activities.
- build a habit and love of reading.
- donât be an NPC!
A note on advice:
- advice is always contextual and simplified â and wonât always be relevant for you.
- find the ones that resonate and revisit them â itâs okay if not everything resonates.
- find lots of sources! read lots of ideas!
optimizing for ikigai & alignment.
ikigai
The popular characterization of ikigai (a reason for being) is something like this venn diagram:
Finding your ikigai is finding the intersection of what you love, what the world needs, what you are good at, and what you are paid for that suits you the best.
- What you love â you find intrinsic enjoyment and excitement in doing the work
- What you can be paid for â you receive extrinsic reward for doing the thing to help with your finances & life
- What you are good at â you have a skillset alignment with the type of work, and are interested in getting better at it
- What the world needs â you bring value to other people and have a general feeling of contribution to a community
I think generally when talking to people about their career fulfillment, the happiest folks have all four of these criteria met to a strong degree.
Another framing is seeking out opportunities where you have both intrinsic and extrinsic motivations. Another attribute you might value earlier in your career is future growth and learning potential.
The more of the attributes that are âcombosâ â the more you are intrinsically and extrinsically motivated to do the thing well â the more likely you will do well.
Example actions:
- Iâm working on a side project about something I love that I think is impactful that helps me learn React.
- Iâm taking on an internship which helps me pay for college and helps me learn.
- Iâm spending my time around people who I really admire, and Iâll learn a lot from them.
- Iâm combining something I love (art & design) in my job at a company like Figma.
Ideally, in a few years, you get to:
- Iâm working at a job that I love, with people I enjoy spending time with, working on projects and impact that I align with, in a way that helps me grow and meets my financial and personal goals.
This may involve being very intentional in:
- navigating to new environments (finding friends, jobs, clubs, projects)
- cultivating your environment (building habits, asking questions, deepening relationships)
- developing your attitude (cultivating gratitude, journaling, reading)
- working hard to get the jobs that you align with (investing in career-y things, see below)
Alignment
While doing a given activity, consider:
- am I excited to be here?
- am I surrounded by people who I admire and want to be more like?
- are the vibes good? does this line up with my values?
- does this path help benefit where I want to go in the future or help me grow?
If none of these criteria are met, this is probably a misalignment smell.
Itâs important to draw out: âam I doing this because I really want to do this or because other people are telling me to? am I doing this because it seems like the default, pre-determined route and thereâs high friction to changing it?â
Over time, youâll build a better barometer for what feels aligned and what doesnât â and this intuition will hopefully help you navigate towards a more aligned, happier, fulfilled life. đ
Â
building good mental & physical health foundations.
This might mean:
- eating well đ
- getting enough exercise and sleep
- therapy, making sure you go to doctor appointments, figuring out medication
- finding hobbies and friends that bring you joy and meaning
- asking for help and advice from friends!
This might also mean taking some trade-offs, things like:
- drawing work-school-life boundaries that keep you happy and healthy
- spending less time with people or involvements that arenât bringing you happiness
- taking extra student loans to pay for a meal plan that helps you eat better
- eating healthier, going out less, drinking less
Without solid physical & mental health foundations, it is quite hard for everything else to come together.
Personally, I really love using Daylio as a daily journal to keep track of your happiness and health and habits. When things arenât looking so hot, itâs usually a signal that I need to switch things up. Also Sleep Cycle (iOS) is great :).
This seems like a rather obvious point, but I think most people are underinvesting in their health and donât do much until things get really bad.
Exercise, sleep, and diet makes a world of difference (like +30% happiness, +50% energy, +50% better outcomes kind of difference) but itâs easy to ignore.
Would recommend checking out Huberman podcasts generally on this đ.
Â
working on side projects about things you love
Side projects generally are helpful:
- as signal for employers for experience, interests, and values
- to explore new subjects and ideas
- to build experience, insights, and intuition
- to create something useful
- to have fun
Often, itâs hard to keep motivated on side projects with all the competing interests of schools unless you:
- care a lot about the result of what youâre building
- are very curious about the technology itself
- are working with other people who motivate you or depend on you
So a general process of starting side projects might look something like:
- find something you love
- music? game design? art? league of legends?
- figure out an idea
- it doesnât need to be super innovative, you could ask chatgpt for help brainstorming
- maybe itâs to solve a simple basic pain point in your life or make something slightly more efficient
- combine it with some practical-ish technology that is relevant for your field
- React for web apps
- PostgreSQL for understanding relational databases
- Zapier, APIs, or iOS shortcuts for understanding automation
- Godot for game design
- set one or more goal(s)
- âI want to explore how to use React and build a full-stack app!â
- âI want to ship something and put it on my website portfolioâ
- âI want to build something that gets me to work out more effectively.â
- âI want to learn how to use the Cursor IDE.â
- ideally, add other people to work with you who are also interested in the thing
- or simply cowork with them, setting time to work on your own projects and bounce ideas together, holding each other accountable.
- often there are clubs for this!
- carve out real time, consistently, towards making this happen
What you build doesnât need to be perfect! Just bias towards building things.
Once youâre done, put it on GitHub, your resume, your personal project, or even youtube! This then becomes an artifact that you can point at that demonstrates your skills.
Here are some projects I worked on during college! Some of them were just a few weekends of messing around.
Â
investing in the ârightâ career-y activities
Generally, career-y activities include but are not limited to:
- Resume editing, resume reviews
- see https://careercup.com/resume for pretty good advice here
- Side projects
- Career fairs
- âNetworkingâ
- Learning how to talk to industry professionals
- Interviewing and mock interviewing
- Cracking the Coding Interview is still quite good and relevant
Iâm not going to get into each of these things, but itâs important to understand that:
- Some baseline amount of commitment is required, and this amount depends on how ambitious you want to be.
- Jobs wonât land in your lap just because you have a college degree.
- Companies like Google, Facebook, etc, have literally millions of applicants a year.
- If a company hires 10% of its applicants, your âcandidate packetâ needs to beat out the other 90%.
- Often, quality > quantity.
- You could apply to 400 places cold applying and get nowhere.
- Often, the right connection via a career fair, finding the right role, the right side project and the right tweet, or a referral from somebody youâve worked with before are all far better routes than cold applications (by a hundred times the efficacy of cold applications).
- Preparation is key.
- Having some idea of what an interview looks like and practicing for that, preparing questions for the interviewer, preparing some talking points â will net you a huge increase in your interview pass rate
- If some part of your job application funnel isnât working, assess and improve it.
- Letâs say youâre getting no interviews at all despite applying to tons of places. Your resume is probably weaker relative to other candidates, and/or youâre applying via very poor sources.
- Letâs say youâre not passing your interviews. You could probably use some mock interviewing practice and review why you didnât pass them!
Â
building a habit and love of reading
I think reading is one of the single most important things that you can do for your life.
I personally really love non-fiction and memoirs!
One framing of non-fiction that resonates with me is: some people with skills & ideas & knowledge youâd like to have, have spent thousands of hours distilling the most important things they know into a well-reviewed, highly edited book, that many others have found useful.
Thereâs this saying that âyou become more like the people you spend time aroundâ â and books present an opportunity to spend time exploring the headspaces of very cool, interesting people.
Some recs:
- Atomic Habits is usually a good gateway book to non-ficiton reading for folks, because it helps you set up the mental models to understand habits and environments and incentives to then build a greater book reading habit.
- The Pragmatic Programmer is one of the best books written on programming đ.
- Designing Data-Intensive Applications is one of the most famous books for systems design, useful for backend leaning engineers (tbh I have not read it).
- The Courage to Be Disliked is a nice introduction to Adlerian philosophy.
- Algorithms to Live By helps you connect computer science thinking to real life systems and decision making.
- Memoirs: Greenlights (Matthew McConaughey), Anthropecene Reviewed (John Green), Maybe You Should Talk to Someone (Lori Gottlieb)
- Passively consuming tech content on HackerNews or Twitter can be fun and useful too!
- Substacks: Astral Codex Ten, bookbear, The Pragmatic Engineer, Escaping Flatland
General reading tips
- To read non-fiction, itâs generally helpful to be in a specific sort of headspace where youâre interested in the specific subject, open-minded, and curious.
- Sometimes a specific book might not resonate with your current headspace, and thatâs okay â you can always revisit it later.
- You do not need to read books one at a time. If youâre not interested in this moment in that particular book, pick it up again later.
- Fiction: you probably want to read one book at a time, so as to not mix up plots and details.
- Non-fiction: it really doesnât matter if you pick up a book months later. You can skip through the book and read it non-linearly if you want too. Lots of points are probably repeated a lot.
- Highlight!! And record quotes or notes in kindle, notion, or readwise.
Time and attention are finite resources â and itâs super easy nowadays to lose hours and hours to social media and content aggregators. (I use one sec to help with this).
Trying to replace some of that time with reading can be really beneficial for your life đ.
Â
donât be an NPC!
Cultivate agency.
Agency is usually defined as something like: your ability to take action on your goals and influence yourself and your environment.
A crude way of looking at it is "your ability to not be an NPC" (i.e. in a video game).
As a player character, you create your own path, according to your beliefs and values and goals. If your goal is to go beat the game, you can go do that. If your goal is to go complete a sidequest, you can go do that too.
As an non-player-character, you are beholden to the whims of the world around you, constrained by limitations on your programmed decision tree and pathing. As an NPC, youâre just like, âwelp, this is the world I live in and the cards I was dealt.â
The Gen-Z version of this term is probably âmain character energyâ â which has both positive and negative connotations. Thereâs also the general trend of âmanifestationâ â which may sound like hippie pseudoscience stuff but I think thereâs some merit in these ideas.
I think much of cultivating agency is done by gradually changing the story youâre telling yourself â what youâre capable of, what are your limitations, what is your future â the other part is going out and doing the thing you want to do.
This might mean: taking your inner thoughts, pulling out the constraints that youâre telling yourself, and then figuring out how to overcome them.
- âIâm not a good student / Iâm not smart enough / Iâm not accomplished or ambitious enoughâ
- âIâm lazy / I donât have as much energy as everybody else.â
- âI started programming too late / I donât know what Iâm doing / Everybody else is more suited to this than me.â
- âThis is just the way things are / This is just the way I am / This is just the way things will be.â
All these imposed constraints contribute to self-fulfilling prophecies and identity.
Not all constraints are overcomeable, but most constraints are largely created by the stories that you tell yourself and a self-imposed inertia.
Practically, this might mean some combination of journaling, meditation, therapy, mantras, and reminders. Talk to your friends about your problems, and help each other solve them. đ
additional faq
does GPA matter? how hard should I try in school?
It depends. Generally, you should try hard in school in a way that aligns with your goals and interests.
When companies evaluate students, theyâre weighing a lot of different factors: GPA, school, internships, projects, target background experience â generally through the studentâs resume.
GPA is one of the factors not the most important one. For many companies, a student with a 3.0 with some target internship experience vs a 3.4 with no internship experience will often be preferred.
Typically, a rule of thumb is that the larger and more traditional a company is, the more they care about GPA (think: JPMorgan & Chase, Nationwide, GE) compared to other factors.
The smaller and more modern a tech company, especially if theyâre in, say, SF or Seattle, the less they care about GPA (think: startups and unicorns) compared to other factors.
The more quantitative the company or role is (e.g. a algo trading firm, or financial company), the more they might care about GPA and other academic accolades.
Note: in most modern tech companies, GPA often does not play a role after the initial resume screening, as interviewers do not typically take into account GPA when evaluating candidates and focus on the interview loop performance.
Additionally, GPA weighing can be pretty asymmetric, e.g. a 3.6 vs a 3.9 difference may not really matter as much as a 2.9 vs a 3.2.
Companies may have some cut-off as well unless there are extraordinary circumstances, since it helps them narrow the applicant pool easily. Often these cut-offs are between 2.9 and 3.2.
Generally if you have better things to do with your time, I think you should shoot to find a Pareto principle point where you put in a reasonable amount of effort in school to get an optimal result.
If putting in 1 hours/week for a specific class you donât enjoy guarantees you a B but spending 10+ hours/week for a class guarantees you an A, and you could use those 9 hours every week for other things with higher expected value (e.g. working a part-time job, working on side projects, being a part of a club that makes you happy), then you should probably do the later.
Also⌠trying harder in school and getting better grades is easier if you are taking classes you enjoy. One of my regrets was taking AI NLP classes with teachers I did not think were engaging because I thought itâd be better for my career when I couldâve done a video game development capstone instead, or even volleyball or ping pong or something⌠đ.
Generally, GPA doesnât really matter at all after your first few years of your career. You end up moving academics to the bottom of your resume and are able to use your network more deliberately.
Â
is it bad that I started learning programming late?
No! Most of my coworkers at every engineering job that I have had did not start programming till college. Some did coding bootcamps or career transitions.
But it is generally important that you enjoy what youâre doing, and you see a future for yourself in it.
Computer science is a very accessible field in that so much knowledge is available online. And LLMs like ChatGPT have made this even more approachable.
You can build a whole full-stack app in a summer from scratch with no programming knowledge.
In many other academic fields, knowledge and experience is gatekept, and youâre basically unable to gain much experience without an REU (research experience for undergrads) or similar role. In CS, you could build entire apps, games, and websites at home. In Chemical Engineering, you generally need to be part of a lab to get experience.
âŁ
Thereâs always more to learn â and over time you will realize how much you donât know! đ
see more: .
Â
isnât the job market terrible right now? (in 2024)
In 2024, the tech job market is, by many metrics, worse than it was pre-COVID in 2019. There are ebbs and flows in economies and in life.
Worrying too much about averages and letting that define you is more of a problem than the phenomenon itself :-).
It is likely that in your life that you have overcome many averages.
Maybe you worked hard to become top of your class. Maybe you didnât come from as good of a high school compared to your college peers. Maybe you got really good at a sport or hobby. Maybe you overcame difficult academic and familial hardships. Maybe you clinched that A in a class where many others did not.
Just like those other averages you have overcome â you can overcome this one. đ
Â
what if i never get an internship?
Software is an interesting field where you can demonstrate hirability signal without a typical path (especially depending on the atypicality of the company).
It is likely that your dream job company has taken candidates without any typical CS internships and sometimes without even a relevant CS degree.
Spend the summer building, creating, learning, doing, reading.
There are many environments to cultivate the same degree of knowledge and intuition and experience as an internship, often with much more freedom and flexibility.
Google Summer of Code. Take Udemy classes. Watch YouTube videos. Use ChatGPT. Recurse Center. Learn ML from Karpathy. Make stuff. Contribute to Open Source projects.
Doing an REU (research experiences for undergraduates) is often just as good as an internship.
Then make that work legible â put it on your resume, make a youtube video, add it to your github, present at a conference.
Â
what if I just donât like it? how do I know if software is right for me?
I think itâs important to identify whether:
- you do not like programming and computing and would be rather doing something else.
- or
- you do not like the specific jobs, projects, teammates, classes, or environment you are in.
Iâve definitely had roles in software where I did not vibe and it felt tedious. Iâve also had roles where I loved my work and was excited every Monday to get to work.
Part of getting this outcome is navigating towards more aligned jobs and finding the right team and projects.
Over time, you will get a better sense of how to do this! And temporary conditions of teams / projects / whatever you donât love will pass.
One cool thing about software is that it intersects with every other field.
- Love music production? Work for Spotify or Ableton
- Love gaming? Work for an indie gaming dev company, Roblox, or Xbox.
- Love reading? Work for Goodreads or Kindle or Readwise.
- Love running? Work for Strava.
- Love sports? Work for the NBA or MLB or whatever.
You might not have the career agency to get this job immediately, but you can build towards it over time.
See the next question too â maybe itâs a matter of finding the right fit!
Iâve also met many folks who didnât get programming at all at first, but came to love the problem solving, breadth & depth of the subject.
Often this is just figuring out what parts of the field that you enjoy and then doubling down on it! It is truly such a vast field. See more: Graphs of knowledge: computer science.
Anyways, after trying out many classes and projects or internships, if you find yourself really hating it, itâs not unreasonable to go try something else!
If you really want to do something else, and really think that youâd be better at it and itâd lead to a more fulfilling life (a la ikigai) â then commit to that thing and go do it.
Â
what role or discipline or field should I do?
short answer:
- for any role or discipline or field, attempt to explore the ones that interest you in a low-risk, easy way, and then commit to just doing one, and you can swap later!
- do this asap!
in side projects:
- if youâre interested in design, learn some figma, try to re-create and modify your favorite apps (spotify, etc), and then build a portfolio with it!
- if youâre interested in embedded systems, get started with a github roadmap repo!
- if youâre interested in mobile apps, go build a mobile app as a side project!
in internships:
- Internships are also low-risk ways to try a new discipline or role, especially if youâre earlier in college and have more internship or co-op semesters left.
- Several folks I know did a CS internship and then a PM internship, or vice-versa.
- Note that itâs likely that there are more CS internship roles than designer, DS, PM internships combined at many tech companies.
- You can also attempt to find PM-y or Design-y or DS-y things to do while being a CS intern, especially at a smaller company!
- For example, you might design some UIs, or run some SQL statements or write some product docs, and learn from designers / DSs / PMs.
After trying this out, hopefully you have some more signal to either rule a discipline out or focus in on some particular discipline.
Itâs possible to defer worrying about this till later (with the mentality of âI guess Iâll find out in a few years from nowâ). But it is much easier if you do explore these spaces earlier and have a clearer idea of what youâd like to do. đ
Â
what if I have no time to do any of this?
There is a surprising amount of time to be gained from:
- getting better at managing time
- doing things faster
Getting better at managing time
This might mean something as simple as finding efficient commuting routes, or decreasing social media use, using calendars and to-do lists religiously.
This might also mean saying no to things that are probably fun but not the best use of your time..
Time-as-a-resource
I think a reasonable attitude to have as a student is to see time as a resource or a currency.
Would you spend $5 for that hang out? Sure, if itâs with somebody you care about and enjoy spending time with. But no if itâs with folks that you arenât really close with and donât enjoy.
Saying no to things, and preserving your time capital for net positive utility things helps you invest in the things you need to. đ
(Later, itâs helpful to drop this time-as-a-resource paradigm when/if it no longer serves you.)
Doing things faster.
Often, the time it takes to do something will expand to the time you allocate to doing it. (aka Parkinsonâs Law).
Meaning, if you set aside an hour to do a specific homework, you might end up spending the whole hour.
But if you allocated yourself 30 minutes (kinda like a speedrun-sorta-thing), you might actually complete far more than you expected with reasonable accuracy.
This strategy applies to literally any task â homework, doing the dishes, laundry, working on software, applying to jobs, etc.
Try doing it faster. (And always check your work.)
You will get faster at doing things.
Often, multi-tasking is the reason why you are slower.
Context switching is costly. Multitasking by simultaneously watching TV, scrolling through TikTok often creates a self-perpetuating cycle, eventually becoming your default mode.
You probably donât ask for help quickly enough.
I think a reasonable rule is that if you have not made legible forward progress in 15 minutes, go find an alternate strategy or an external resource (a friend! chatgpt! a website!), or just go and take a walk.
Some students may suffer from the opposite problem â they ask for help too quickly and too often â and may defer to Chegg or ChatGPT or something â and then donât build enough intuition themselves in solving problems.
Â
what if I have no money to do any of this?
My general advice is:
- If you are not receiving any loans at all but do qualify for govât subsidized loans, consider taking them. Unsubsidized loans that have an interest rate of <8% are still decent too.
- Part-time jobs are a great way to make extra money. Theyâre extra beneficial if theyâre relevant to CS.
- Most student jobs are really flexible and often allow you to do homework during it (especially desk jobs like at the library or office assistants). Ask students in the current role how much downtime they get.
- Look into minimalism, frugal living, and personal finance tips.
On loans
Often, students have hang-ups about taking loans because theyâre worried about being burdened paying it for a long time. Maybe youâve had family financial issues.
But if youâre presently burdened by finances as a student, and therefore canât pay for meals, medication, transit, clothing, etc â then these burdens will almost certainly cost more in the long-term than taking some loans will.
Pretty much single startup takes loans in the form of venture capital. They are funded by VC because the backers assume that the investment will pay off.
Letâs say you take about $20,000 in loans over 4 years, and this lets you pay for housing without working 20 hours a week, eat well, and generally have a better time in school. This can help set you up for a software engineering job paying more than enough to pay off these loans after just a few years!
Invest in yourself â even if that means taking some loans so you can focus on academics and eat well and have time and autonomy to invest in career-y things â and it will pay off.
other relevant quotes captured by much better writers
âSomething I wish someone had told me as a kid is that the only real âruleâ for work is that you have to be able pay your rent and not hurt anyone and not break any laws. And within those confines you can do literally anything, hopefully something you find personally fulfilling. And the world is so wonderful and open and weird. I grew up in an environment where I was made to feel that if I got a single B+ on a report card nothing good would happen in my life because no colleges would accept me and then I would never get a FAANG job and I would die alone. Internalizing that logic helped me work hard but I also think it made me neurotic and fearful in ways that took a long time to undo. What I believe now is that if youâre creative and willing to work hard thereâs a lot of different paths to success.â from âactually everyoneâs life is weirdâ by Ava
âMost subject matter is learnable, even stuff that seems really hard. But beyond that, many (most?) traits that people treat as fixed are actually quite malleable if you (1) believe they are and (2) put the same kind of work into learning them as you would anything else. âŚMany other supposedly fixed traits can likewise be altered. Some other things you can learn: confidence, charisma, warmth, tranquility, optimism. Someone recently asked me how one might go about learning charisma, and the answer was really boring: by reading a few books, watching many hours of charismatic people interacting with others, and adopting a few of their habits. This is surely a plan of action most people could come up with if they didnât have the notion that charisma is innate lodged in their heads.â