Advice for students
🧑‍🎓

Advice for students

Published
September 23, 2024
Tags
Articles
Author
Stephen Wu
💡
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:
  1. optimize for ikigai & alignment.
  1. build good mental & physical health foundations.
  1. work on side projects, about things that you love, with people you enjoy spending time with.
  1. invest in the “right” career-y activities.
  1. build a habit and love of reading.
  1. 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:
notion image
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:
  1. find something you love
    1. music? game design? art? league of legends?
  1. figure out an idea
    1. it doesn’t need to be super innovative, you could ask chatgpt for help brainstorming
    2. maybe it’s to solve a simple basic pain point in your life or make something slightly more efficient
  1. combine it with some practical-ish technology that is relevant for your field
    1. React for web apps
    2. PostgreSQL for understanding relational databases
    3. Zapier, APIs, or iOS shortcuts for understanding automation
    4. Godot for game design
  1. set one or more goal(s)
    1. “I want to explore how to use React and build a full-stack app!”
    2. “I want to ship something and put it on my website portfolio”
    3. “I want to build something that gets me to work out more effectively.”
    4. “I want to learn how to use the Cursor IDE.”
  1. ideally, add other people to work with you who are also interested in the thing
    1. or simply cowork with them, setting time to work on your own projects and bounce ideas together, holding each other accountable.
    2. often there are clubs for this!
  1. 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:
  • Side projects
  • Career fairs
  • “Networking”
  • Learning how to talk to industry professionals

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.
  • Algorithms to Live By helps you connect computer science thinking to real life systems and decision making.
  • Passively consuming tech content on HackerNews or Twitter can be fun and useful too!

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 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:
  1. getting better at managing time
  1. 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.
notion image
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.

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.”