Focus on meeting real people and understanding their problems and how you can help. Your connections during college will probably matter more than a particular test score.
Get a job (any job) during college, it shows you're employable and can navigate with the unpleasantries of being employed.
Oh! And dont’ stress too much! Enjoy the ride. Think of it all like a fun new video game. Take in the new levels with curiosity. Have fun! Many people who have jobs now would love to be in your shoes again. Embrace it, enjoy that time of life!
on programming forums (actual forums, not reddit/hn like) we've had very experienced people like
1) world class / top CTF competitors
2) nasa/esa
3) HFT @ hong kong
4) people with experience across FAANGs
Those can give you many very valuable advices that your average college friend or coworker will not be even close to be aware of.
> People who aren't successful tend to spend their time complaining online whereas you rarely hear stories of normal people success online.
That's true, that's why you need to filter out bullshit.
Job markets are inherently uncertain, even in good economies. Holding a job is also uncertain; Your future is in the hands of the executives and their decisions. Being a founder allows you to have control over your career, and yes, bear full responsibility over it all. Get ramen profitable and you are immune to layoffs.
Even if you graduate and decide you don’t want to go down the (very tough) path of a founder, you will be much more employable.
Sure, prompt studying in the right was is useful. But the temptation to spit something out you don't fully understand is huge. Part of learning is simply struggling.
Its tough, but for many of us it was a gauntlet of projects, internships, feeling like we're over our heads in a huge code base.
Focus on 1 code base at a time.
More useful to add to an existing code base than to code up some one-off project and name it "Jasper" (idk why CS student love derp names from their microprocessor. "I made a SSH wrapper and called it Turtle" )
Find mentorship from people who can teach architectural concepts.
Good luck!
I'm sure that during your studies, through serendipity, you'll find great opportunities to pursue that you couldn't possibly imagine right now. Give yourself the greatest surface area for luck to find you.
Since you posted this here on HN I can already tell that you're the type of person who will not be short of opportunities and already has a good surface area for luck to find you.
Good luck!
Put the required effort into the course to pass it, but not much more. Except for the topics that genuinely interest you - go deeper on those than anyone expected. Prioritize your own understanding of a topic over external metrics.
Email or visit your lecturers to ask questions. Email the authors of papers you read.
Start building a portfolio and/or [micro]blog. Even a "hello world" github repo acts as a proof-of-humanity when you're applying for jobs in a few years time.
Your GPA is harder and harder to change (for better or worse) as the years go by. And the courses get more demanding and/or academically challenging, so set a solid foundation early.
By the time I graduated, computers were cool again.
Predicting the job market is like predicting the stock market. You don't necessarily know where things are going to end up, and simply being reactionary will lead to sub-optimal outcomes.
Learn things that are hard to do, or you wouldn't finish if you weren't coerced with a final grade.
One positive in the current environment is that people who actually know computer science won't be forced to toil endlessly on what are essentially CRUD systems, and can move on to solve second- and third-order problems where their actual computer science skills can pay off. We can stop reinventing (slower and slower) webpages and 3270 terminals.
Interns that I have seen be successful at Amazon do the following:
1. Show interest in the process.
2. Work really hard to unblock yourself. (You should feel like you're stuck a lot of the time. If you're not the project is too easy)
3. Learn when to get help to unblock yourself.
4. DO NOT tell anyone on the team or adjacent to the team you are on that you are not interested/ would not accept a return offer. This will guarantee no offer. Our best intern did this. (If you are skilled everything will turn our fine but it is nice to have options)
I've graduated college like decade ago and still I learn new things with the help of AI. I'm a visual learner, most of the time I ask AI to create a one page HTML with animations to explain me concepts so it's easy to remember for me. Further, there are so many great video and shorts that explains algorithms, DB internals, computer security, cryptography, etc. on youtube.
Always think critically, ask questions and never take anything as truth just someone says so or it's written in a book, it's very important to develop critical and logical thinking and clear and good communication skills and that would help you to find a job easily. Wishing you all the best and success.
Knowing the CS theory that college is trying to teach you well enough to apply it will put you ahead of your fellow co-workers when you are a senior developer. Don't neglect learning it. The people who say "I never needed to use CS for my entire career, lol" are the people most easily replaced by AI.
Don't neglect understanding how to use AI to create code but don't become dependent on it either.
Don't neglect your writing courses. Reading and writing clearly is how you interact with your fellow developers and, of course, AI. Too many developers are lousy writers and wind up stuck in the lower ranks because of it.
AI is definitely going to shape the industry, and while I agree it's hard to see how it can create more job opportunities for junior positions, since you're already decided to do CS, just learn as much as you can about anything that interests you.
It's better to be really good at an unpopular niche, than to have average skills in the hottest trend.
Today's job market sucks, yes. But, you'll be entering the job market in 4ish years, and it will be different, hopefully better.
Hard work, investigation, and problem solving are transferable skills, so even if there are no jobs for CS degrees in 4 years, you should be able to find something that just needs any science or engineering degree (there's a good amount of these types of positions).
One thing to pay attention to is building your network / address book. When you leave college, you're going to want to find a job, presumably. The best way to find a job is through someone you know who is hiring / working for someone who is hiring.
You will interact with many students... when you have a good experience with someone you think you might want to work with or who might be likely to find good jobs, be sure to get their personal contact info and put it in your address book along with some notes about what you did together. Especially be sure to get contacts for people in grades ahead of you, since they're likely to be employed when you're looking.
You want to be sure to get their personal contact info, because schools are cutting off email access pretty quick these days.
If you get an internship etc, be sure to build your address book of people there that you enjoyed working with, including other interns. Again, personal contacts, cause work emails will stop working if the person moves.
Try to cultivate the relationships by sending an email at least once every year or two.
Hey X, I was thinking about that time we did [whatever] together in [class name] with [instructor]... That was [fun/horrible]. What are you up to these days? I'm still grinding on my cs degree at [school].
It helps if you have notes about what you did together.
If they respond great, maybe have a conversation, and next time you email after a big break, mention things that came up. If not, try again in a year or two.
A few months into college is a good time to send messages to high school friends and see how they're doing, etc.
the most important things employability-wise tend to be joining technical clubs and doing internships.
the job market in 4 years time will probably look very little like todays, so keep your ear to the ground on whats going as time goes on. CS is incredibly valueable for being able to think about how things are done, so its going to be a pretty well respected degree no matter what
id also suggest joining whatever community garden setup is around your university
Focus on learning to express yourself clearly, in English and in code.
Focus on learning how to learn, how to acquire new knowledge, and how to enjoy the process. Focus on learning how to work with others, especially those you don't agree with or like.
Don't forget to have fun. There is plenty to be had if you avail yourself of the opportunities.
Mostly, focus on meeting good people, building relationships, and expanding your mind. These opportunities are timeless and besides practical skills, will allow you to continue growing as a person for years to come.
Learn how to learn. Get really good at that. That is the essence of your college experience. Perhaps consider a minor in a life science, hard technology, or other field that has good employment prospects.
Everything is software these days--it's going to be about applying software rather than pure programming skills.
Take a physics class or two. Learn how and why things work.
If your school has co-op work--do it. It raises your employment prospects at graduation.
Expect to have to consider multiple options/tracks in your career ahead. Adaptation and flexibility will be important. The world is changing quickly.
You can't study everything in college, but you will need to be ready to study and adapt in the years ahead. Good luck and do well in school.
One more thing: be social. Your network of friends will be extremely valuable to you.
This is really important. I didn't appreciate it at the time. Get to know people in your classes, not just your roommate. Join a club, or check out greek life if that appeals to you. If you weren't very social in high school, now you're in a new environment. Nobody knows you, and nobody cares about high school anymore.
If you're introverted it can feel awkward but you're rarely, probably never again, going to be in such a diverse group of people who are all about your age and stage in life. Certainly not for four years.
Because AI is trained on the web, expect the fundamental building blocks of Software Engineering to not change in the next decades. Git, Linux, HTML, JavaScript etc etc all the abondoned code on the web. Familiarize yourself with these fundamentals and you'll always be relevant.
- If you don't like programming, try to switch to a degree in something else
- If you genuinely enjoy programming, do not try to switch
- Explore specialty fields, if you're interested in one get a combined degree
I recommend keeping your eyes open and getting diverse viewpoints, with some caveats. Universities can be both fast and slow to adapt to changing trends. Your professors will undoubtedly be trying to integrate LLMs into the courses, but what they teach you will probably not entirely hit the mark about where the industry is going. You need to be gaining your own experience with something outside of classes, even if it’s useless little projects that you throw away. Remember to have fun in college, too, but balance that with doing a little more than just trying to get passing grades.
Avoid spending too much time in cynical spaces online that have turned into echo chambers about how we’re all doomed, this career is a dead end, and other negativities. Hacker News has a diverse set of opinions represented but it’s easy to get swept up in the hyper-negative views where we’re all going to be out of jobs and relying on UBI in a couple years. Online spaces have been excessively negative about this career for as long as I’ve been doing it, with the exact reasons changing from year to year. I knew a few people who enjoyed computers but talked themselves out of CS due to job market or online negativity things when they started college and all of them discovered that every career path has its pluses and minuses. It gets easier when you have some affinity for the work, though.
Had a conversation with the other seniors in a CS 300 class one day, I would say a few of them were in the top half of the class. Was talking about software version control. "What's that?" they all said. "You know, like git", I said. "Git?" they said. None of them knew what software version control or git was.
I would suggest that if you have a class where you learn say C++, toward the end of the class, or right after the class, write your own C++ program - doing whatever you want it to do. If you take a graphics class where you learn OpenGL, write your own program using OpenGL - doing whatever you want it to do. You tend to learn these things more doing it.
A lot of people are flooding open source projects with AI right now, but that aside, also if you just learned C++ or Java or whatever, look at actively maintained open source projects on Github or Ubuntu or Debian or freedesktop.org or whatever. Look through bug reports. Try to reproduce them. If you reproduce, you can reply to the report with what versions you are using (latest is best usually) and that you reproduced it. You can try to fix the bugs too. One thing with this is - it's similar to what an intern or associate/junior SWE would be doing at a company. If you submit a pull request and it gets accepted - it is like what you are doing at a big company.
Years ago I went to a Debian bug squashing party. I didn't know if I'd know anyone there, but getting there I did know one guy who did IT work in my city. Anyhow, a lot of the people there were pretty good. I remember a fellow named Daniel talking and he seemed to know a lot. Plus others. Then someone else walked in and everyone started saying "Pablo is here". It was a fellow named Pablo who was doing a doctorate in computer science at Columbia, They were all looking toward him and curious what he was working on. It seemed like they thought he was one of the most knowledgeable person there, among a group of knowledgeable people.
The point of this is - it was a group of people who were pursuing technical knowledge, and who respected technical knowledge. This guy Pablo from what they said was very devoted to this, and they respected him for it. This kind of social reinforcement is important too - it's talked about all the time, how being in San Francisco or YC or whatever with like-minded people pushes people ahead. I have seen it in many circumstances. Being part of one or more social groups like this focused on getting technically good and eventually trying to get to be a SSWE in a FAANG or whatever is something that helps. It can be easier to find in some places than others, but there are hackers everywhere.
And as others have said - do it yourself, put off using crutches such as AI until you understand the process.
You mean in addition to, I hope.
If you want a developer’s career, studying CS in college is the best way to get there. Full stop.
If you have the time, financial, and emotional resources (school isn't stress free!) then having a minor or double major in a specialized field will (obviously) make you more attractive as a candidate for a development role in that field.
I have had a rocky but reasonably successful software dev career built off a CS degree, it's definitely possible
That said I don't think anyone should try and be "just a developer" anymore. The skills are too easy to learn for anyone who is motivated. The most successful dude I ever met in software was a tradesman that thought up a way to automate a lot of the work that went into providing estimates for his clients as a sales tool, taught himself C# and built it.
The code was garbage, it was buggy and messy and half the calculations were probably wrong in the end, but he still sold it to a competitor for millions. :)
I think a lack of experience outside of CS and Software really holds a lot of software devs back from building great and/or valuable things, because you can't have great ideas if you don't have a variety of experiences to draw from
https://htmx.org/essays/yes-and/
TLDR:
- Knowing how to do things with computers will likely remain useful in the future
- Learn fundamentals using AI as a TA rather than code generator
- You must write the code
- Learn skills beyond just CS, such as communication & business
- Plan on using personal contacts for a future job, the hiring market is busted
Grades are important but in today's AI-driven job application processes having a 4.0 is less important than knowing somebody at the company.
The ACM curriculum focuses more on kernels, OS, and compilers rather than the application layer. It's great for understanding principles, but making money often happens at the application layer. Everyone's aptitude is different.
Programming has many layers. Don't get discouraged if you hit a wall in one area.just move around and explore different layers. You'll definitely find one that suits you