Skip to content

Instantly share code, notes, and snippets.

@Riizade
Last active July 6, 2023 18:46
Show Gist options
  • Save Riizade/71924071b600803c5c558437df332729 to your computer and use it in GitHub Desktop.
Save Riizade/71924071b600803c5c558437df332729 to your computer and use it in GitHub Desktop.
Advice for current students pursuing Computer Science and/or Engineering degrees with the intention of beginning a career in software engineering/computer programming.

Preface

This advice pertains primarily to university students with the intention of beginning a career in software engineering after graduation. Your mileage may vary in other contexts.

Do Not Stress Out About Grades

For most of your life, you've probably been in a formal education system that prioritizes grades over everything else.

Great! Get good grades if you can! Pay attention in class and do your best to learn your class material; it will probably be much more important than it seems to you now.

With that said, once you're in industry and you've had one (1) single job; nobody will ever ask for your GPA again. I took my GPA off my resume, I've never heard anyone talk about a GPA in a qualifications context, and I don't even know which schools my colleagues went to.

When I was in university and attending the career fair, several organizations had cutoffs at the 3.0 GPA mark. Several more asked for your GPA explicitly if it wasn't on your resume, but didn't make the cutoff explicit, if they had one. Google made me send them a notarized copy of my transcript from the university in order to apply for an internship. I had a less than 3.0 GPA for a large chunk of university and I still managed to do 4 internships.

It's just because it's all they have to judge you by right now. You don't have a ton of work experience, people to vouch for you, connections in the industry to refer you, or a portfolio of successful and impressive multi-year professional projects (I mean, if you do have any of those things, you're way ahead of most students.)

Don't tank your grades just because you can, but just recognize that it's not particularly important, and if you're not crushing it academically, it's almost certainly not going to permanently affect your career. So just chill out a bit and focus more on learning the material and not acing the tests.

Friends are Extremely Important

If could re-do my college experience and change only one thing, I would focus more on building and strengthening friendships.

They're a major factor for a huge number of extremely important aspects of life such as mental health, happiness, isolation, support networks, etc. But you're mostly here for career advice, not life advice.

Friends are absolutely one of the most important aspects of a successful career.

  • They will give you referrals to their companies, guaranteeing you an interview
  • They will give you inside information on company culture and upcoming problems and stressors, allowing you to more easily select good companies
  • They will fan out across the industry and gain experience in various fields, and if you want to switch disciplines or brush up, they can point you in the right direction to skill up and reach your goals
  • And of course, having people you genuinely love to communicate with during the workday makes every job way more bearable

You will make friends after college: at work, during hobbies, while traveling, whatever. But college is a great opportunity to meet lots of people with similar schedules in a similar age group and to find shared connections over hobbies, interests, etc, which typically becomes more difficult as adults in the work force.

Make friends. Maintain your relationships. Reconnect with people. Way more important than getting the right internship or a perfect GPA.

Life is Not a Pipeline

The tendency for many university students is to view school and work as a pipeline where you move gracefully through life stages.

  • Your performance in K-12 education determines where you go to college/university.
  • You go to college/university and your performance there determines your job.
  • You work your first job out of university and it sets the tone for your career.

The above can be true, and if it all works out and you perform well at each stage, great!

But if you make mistakes and blow it, it's fine. Not everyone works at a top-tier company right out of university. Sometimes it takes a few years. Sometimes you switch careers slightly and end up becoming a project manager, an engineering manager, or a machine learning researcher. You have a lot of opportunity to redefine your career and course-correct even well after graduation. Getting a bad GPA or even kicked out of school doesn't somehow bar you from ever working from a top-tier company.

So do your best, but realize you don't have to be perfect, everyone's journey is different, and chill the fuck out.

If you want more specific advice about getting a job at a "top-tier" tech company, see my writeup here

Learning to Learn

It's very disappointing to me that for all the years we spend in school, we're not really ever taught how to study or how to learn. I'm not an authority on learning and I can't promise this information will be useful to everyone, but here's essentially what I believe as an adult that has helped me learn ~2 new languages and a huge amount of random-ass information about dozens of fields.

With these things in mind, let's go over my recommendations.

Use Spaced Repetition

Load your course materials into a spaced repetition flashcard system like Anki or SuperMemo, or use flashcard decks other people have created. Do this even if the course isn't a particularly flashcard-able course. Configure the new cards and reviews such that you end up doing 15-30 minutes of studying per day. Study the flashcards in small gaps of time while you're on the bus, waiting in line, right before you go to sleep, or whenever is convenient, with the goal of finishing all the cards it gives you each day.

Using them won't feel like you're learning, but I promise that the 4th or 5th time a card comes up, you'll be like "oh, easy, who wouldn't know this?" and you'll forget what it was ever like to struggle with the content on that card.

If a course is particularly not flashcard friendly, try to review lectures/videos/whatever every few days; maybe as background noise while you walk around campus or play videogames or something. Being exposed to something 4 times in a low-focus setting is almost certainly better than being exposed to it once in a high-focus setting.

The implied corollary to this is that if you instead cram study twice before the test, you won't have seen the material enough times and slept enough times to solidify it in your mind, and no matter how much time you spend on those two cram sessions, it won't be enough.

Our brains throw away a ton of information. In order to convince our primitive lizard brains that information is important, it has to see it multiple times and be forced to recall it. After 4-5 times of doing that, the brain submits and goes "okay, this must be important for survival."

Got 'em. Stupid brain.

The Internet is for Learning, Use It

YouTube, Coursera, and public course materials from Harvard and Stanford are probably better than your professor's lectures. Learn from those, watch videos at 2-3x speed, and use them as podcasts when you're out and about. Learn when it's convenient for you, not when you're dead-tired and just dragged yourself to lecture at 8:30am.

It is extremely frustrating when a professor forgets to cover some material, or explains something incorrectly by accident. I had a Calculus professor whose handwritten y, x, d, 1, 2, 4, and 9 all looked exactly the same, even from the front row. That class was so, so difficult. I should have just watched some Salman Khan videos and skipped the lectures.

Use your course's syllabus and materials to figure out what you need to know, and study on your own. You'll have the luxury of picking from dozens of different explanations, some of which are extremely high quality and have interactive simulations that show you each step of an algorithm or whatever it is you're learning.

Here's some shit I found for learning Computer Science concepts with 10 seconds of Googling.

Check Stanford and Harvard's public course materials. Search YouTube. Search Coursera and Udemy. This was doable when I was in school, and the amount of quality, clear, concise explanatory content out there grows every year.

Get ahead of your course material and use that to help with the next piece of advice.

Avoid Stress by Doing Assignments Early

Do projects and classwork early. If you start late and you underestimate the amount of time it'll take, you're screwed and you're stressed. If you start early, it's fine.

If you start late, it's really easy to get into a mode where you're constantly stressed out, and you decline to go do fun things because you should be working or studying, but then you're too stressed to do those so you end up scrolling on your phone and you go to sleep frustrated with yourself, having denied yourself both fun and productivity. If this has happened to you, trust me, finishing things early is the key to a stress-free college experience.

It's hard to get into this habit, especially with the chaotic schedule of a university student, but it is totally worth it. You can spend the same amount of time on your homework, projects, studying, etc, but the difference is that if you start early, you finish and have completely stress-free free time to do all kinds of stuff, and if you start late, you're constantly overworked, overstressed, and exhausted.

Additional Resources

  • See the rest of my advice here
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment