If I got teleported back and was starting a college CS program this year, I would do a few things differently than my first go around. I would take stock of the current landscape and actually evaluate what my goals are for college, rather than drifting through at the whim of chance and inertia. Hopefully these notes give you a simple field guide to consider your own path.
Get an internship where you code, every summer (even freshman year, even if it’s not a famous company).
Being good at interviewsis more important than your classes — you can learn once you have offers solidified.
Building relationshipsis more important than your classes — college is the easiest time to meet all sorts of interesting people with interesting perspectives.
The world’s not fair - set yourself up for success, then start pulling other people up behind you.
⭐ The #1 goal to never lose track of
College is supposed to put you on track for a sustainable career, it’s the current state of the system. Some may argue the point, but from the people I know, that was the original goal. Evaluate decisions based on this criteria, rather than letting inertia have it’s way.
What is the current landscape of working as a software engineer?
Good pay by default
If you live in the U.S. and are a developer, you are very unlikely to have trouble making ends meet. Even at companies that aren’t the Big Tech FAANG, you will likely be payed on the upper side of average. Tech salaries also have a grossly high ceiling, with some people at companies like Facebook making $800k+ a year
Low stress by default
As a developer, you will not be assaulted by patients, at risk of having limbs chopped off, or many of the other stressful possibilities available to humans in other professions. You will sit at a computer and type. Life is comparatively easy. Screaming managers and threats of being fired are (to my knowledge) rare outliers.
High-pay ≠ high stress & low pay ≠ low stress
There are people with relaxed jobs making 400k a year, and people with stressful * jobs making 85k a year. Working at a high paying tech company doesn’t automatically mean you have no work life balance.
*Stressful compared to other developers, not all jobs.
Even if you hate what Facebook has created, or Google, or whoever, fact of the matter is they ain’t going anywhere, and having those names on your resume makes life easier.
Interviews are a separate game from software engineering
Many companies still use brain-teaser-ish coding questions for their interviews.
The skills you learn for building actual software systems are rarely tested in interviews. If you can Leetcode
heavily, you can get a job in big tech companies without being good at the 80% of the job that isn’t writing code. Bleak? Yes. Disappointing? Undoubtedly. Gameable? Absolutely.
School is useful for building relationships
, and learning in a supportive cohort. The best thing you can take away will be the core concepts used across many programming languages, they are language-agnostic.
Even if it’s hard for you, try to be more social than you’re comfortable with. College is the easiest time to meet all sorts of interesting people with new perspectives. Think of it as making lots of tiny bets. You won’t be friends long term with most of these people, but if you meet enough, you’ll find the diamond in the rough you’ll know for life.
🏫😩School: what is it NOT good for?
Preparing you for your best career. You’ll learn the majority of your skills at internships and playing around outside of classes. Plenty of concepts I wish would have been covered in my CS curriculum I had to stumble onto by myself.
(Can’t find the research again, so you’ll just have to take it as a hypothesis) — B students recognize the 80/20 effort to learn concepts without worrying about a GPA which ceases to matter in just a couple years. They spend the extra time gained on more important pursuits, like hobbies, building relationships, and learning.
I cannot express how little valueAs vs Bs have had on my career or anyone I know.
Apply for internships you don’t think you can get
Like mentioned previously, pedigree matters. Put in the effort so you have a chance at getting them, but don’t beat yourself up if you don’t. You can only guarantee not getting it if you don’t apply.
Prep for the interviews with the time you save not trying to get As.
Bonus:Try to work at one big company and one startup <100 people while in school. Then you’ll have a feel for what YOU like when you graduate and apply for your first full-time position.
Get an internship every summer(yes, even freshman year!)
The people hiring you for future jobs care about your experience, not GPA. Make your own life easy by gaining as much as possible.
Find jobs which let you code (ideally on a team) aka getting paid to learn, even if they aren’t fancy or pay less than something irrelevant to your career — the worry is the invisible Opportunity Cost
of not building your skills.
You should never think you are too good to do a job. Be a forever new guy. Never think that you are above taking out the trash.
- LT. Jonny Kim, (MD,Astronaut,Navy SEAL)
While it’s harder to find internships accepting freshman/sophomores, it’s definitely doable if you apply enough places. Some larger companies even have programs explicitly for the 1st/2nd years
. Sometimes the program won’t exist, but if you just ask smaller companies, they might give you a shot anyway. Be willing to get creative, it will pay off in the long run to have this headstart.
Bonus:If you’re feeling up for it, find a part-time job during the school year where you code, on top of summer internships.
🕳️ Common pitfalls
Worrying about grades rather than learning
Plenty of people with Cs or who dropped out and are more successful than the average A student. School teaches you to be good at the game of school, not life.
Impostor syndrome sucks, and just knowing about it doesn’t do much to help. Fight it for the best outcomes for your family, friends, or whatever motivates you.
One of my regrets was choosing to work another summer at a manual labor job rather than taking a chance and applying for internships. I guaranteed failure by marking myself as not qualified before even giving the companies a chance to accept me.
Rejection is a muscle, and it will be sore at first
Apply for companies you don’t think you can get into. Rejections aren’t personal, they’re often sifting through huge piles of applications. If you can push past the scariness for just a few weeks, you can set your family up for millions of extra dollars over your lifetime.
Everything in life has it’s own inertia, and if you aren’t actively choosing your paths, they will end up chosen for you.
Don’t worry if you don’t do one or all of these things, this is just one of many potential recipes with positive outcomes. Perfection isn’t required, but these concepts will set you up to have an easier road in your career so you can spend your attention
on what truly matters.
Best wishes, from your local person who has no idea what he’s doing.