You've reached the end!
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.
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
- 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
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.
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
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!
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.
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.
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
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.
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.
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.
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.
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.
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
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.
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.
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.
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)
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.
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!
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.
Jobs, internships, networking, and software engineering courses are critical. They let you speak like someone with much more experience. You don’t want to come into a questionable market with only raw CS skills. You will learn the CS, that is a given by your degree, so hone the critical people skills and how to work in a team. In a downturn no one wants to hire an unknown, so you need to be able to show that you aren’t green.
Internships with companies that are known to hire their interns are also a very good idea, even if it’s a “boring” company. These can be competitive, you gotta put that effort in.
Another good route in your later college years is also underpaid work assisting grad students or professors doing grant work. It shows you can apply what you learned, no one really wants to do it, it builds professional relationships, and it’s real job experience.
All of which to say: the market is frothy and irrational, but you have a lot of optionality around timing your entrance.
Turns out I bought what's probably the largest investment in my lifetime at the bottom.
The industry will change in the next four years. What I didn't realize in 2002 was widespread broadband internet would arrive and change everything. Revision to mean is a thing, and I wouldn't expect the 2010's boom where tech moved to take over every corner of our lives, but it will still be there, and the systems take proper care and feeding. Remote work is equalizing global tech wages, but the talent's gotten better and the pie's gotten bigger.
If you don't have a passion for tech, pick a different major because you'll spend the next few years questioning your choice. If you stay with it, look for other areas in your life you enjoy so you can plan out a minor or double major. If you plan it right, you'll be able to reassess in three years and possibly pivot to math, actuarial science, electrical engineering, or mechanical engineering with only an extra year.
Learn data structures and algorithms. Understand finite state machines and context free grammars. Learn at least some mathematics. Discrete math, Boolean logic, and statistics. Learn how operating systems work, networking, databases, compilers, machine code, low-level details like registers and the cache hierarchy. Learn more obscure programming languages: like Lisp, Prolog, Haskell, and Forth.
You probably won’t use those in your day job, but they will open your mind to fundamentally different ways of thinking about problems. Honestly, just try to learn as much as you can about as many different areas of computer science as possible. Don’t worry about learning version control, the latest web frameworks, or working with AI, at least not until the very end.
You want to come out of college with two things: the ability to learn new things quickly, and having a wide breadth of knowledge to draw upon. As someone who regularly interviews candidates, that’s what I’m looking for more than anything else.
Also, these may seem like separate subjects but there is some overlap especially once you work with things like databases in production at some scale.
If you can, learn a bit of machining. You're going to be in a place where you can pick up a ton of skills unrelated to your major, with almost no effort. Plus those can be completely ungraded, and at your own pace, so there's no stress. (Again, quite valuable at unexpected times, and fun!)
As you make friends, take the effort to keep in touch with them, it doesn't have to be pushy, just don't succumb to the natural tendency to follow "out of sight, out of mind". (I've done that too much)
*Build what you want to use.*
You'll have significantly more reason to keep going with the project you can show off later if it personally matters to you, relative to focusing on just a tutorial or a curriculum. Whatever that is will give you demonstrable project management experience, total freedom on what the scope of that looks like for as long as its primary user is you, and excuses to dig into a bunch of new subject matter and tools that aren't beyond just what you're currently being instructed to do.
The overall development of your skillset when you do have a job will actually depend a lot on your ability to find other excuses to tinker on new tools, languages, etc that you don't get to do so with at work.
If you extend this to fixing things that you personally find annoying, you can also end up with valuable open source contributions.
*Know your rights.*
You don't have to tolerate everything you encounter in the workplace, just to have a job. Whether that's bigotry, or wage theft, or workplace cultures that tell you that you shouldn't talk about those things. Businesses frown on you doing it, obviously, but the reason that culture is able to persist is in part because we all collectively allow it.
It's trendy for bosses to trash on Gen Z for what they view as a lack of professionalism, much like how there are written examples of "kids these days" going back to the times of ancient philosophers... but it's important to recognize that "nobody wants to work anymore" also has written examples dating back centuries, and that the onslaught of articles about how Gen Z is unemployable are contemporary with tech company leaders encouraging young people to work for free.[1] You're not uniquely terrible, this kind of talk isn't new, and there will always be someone telling you that you're being unreasonable by having basic standards -- whether it's about 996ing, or adherence to pay transparency laws, or relocating to a place that can lay you off in 3 months, or one-way video submissions, or... Anyway. It really isn't just your "attitude," and you are in fact being gaslit. Not every hoop you're being asked to jump through is about "bar-raising," and while Canonical for example is famous for making jokes about how you can go somewhere with lower standards, and linking to the US government, it's also genuinely insane to ask "what would your high school classmates say about you?" as a question on a job application.
On that note, whatever your opinion of cops, regulatory bodies exist to help you. Their jobs are to address abusive and harmful behavior by businesses. Your experiences with them may vary, but employers aren't exempt from rules just because they might regularly act like it.
And even if you don't choose to take the step of going to them, knowing what you should and shouldn't have to put up with is also a filter for the kinds of places where you do and don't want to spend your career, the kinds of people you do and don't want to spend it working with, and the kind of colleague you ought to be to those around you.
It also means nagging your public officials to pass measures that would improve your conditions. (Ideally together, alongside the kinds of colleagues that you do want to spend your career working with.)
Their job is to represent your interests and help you with your problems. You don't have to listen to those officials call that the "complainer class"; those are people you can, and should, replace.
Low-hanging example impacting your generation: the fact that businesses hold you all up as examples for why we shouldn't do anything about the minimum wage -- and that they're allowed to say, out loud, that they should be able to pay you less because you're younger, and pay everyone else less for the entry-level jobs you all would have right now -- is only possible because our age discrimination laws don't cover anyone under 40. (I'm assuming US here.) That makes it worse for everyone else in a lot of other ways too -- for instance, the hustle culture we push on people in their 20s disproportionately harms anyone with additional healthcare or caregiving needs (whether you're older, or you have a disability, or you have kids, or you're caretaking for any of the above...)
A functioning minimum wage is actually a hedge against abusive bosses everywhere, regardless of whether you have a "good" job. So are accessible healthcare and housing. So are unions.
*Find good colleagues*
See above.
More broadly, find people that you can trust with your professional issues -- whether the problems are about your workplace, or whether they're about the tools you're working with.
Internet research is useful, but you should also have some actual personal connection. Your coworkers aren't your friends, but some of them could be, and at a bare minimum you should care about functioning work environments for each other so that you're not the only one caring about them for yourself.
This does not explicitly mean "spend time in an office." Onsites are valuable, but "culture" is how you treat your staff, and you don't have to be around each other all the time to do that.
It does mean you should hang out (physically and otherwise) in spaces that are related to your work but not actually your workplace. At least occasionally, you should meet people that do what you do (or something adjacent to it), including but not limited to the people you directly work with, in spaces your employer doesn't run.
Community isn't something your workplace should own, and will also regularly surface tools that you haven't encountered before.
Several of my favorite colleagues are Internet friends, and several of my favorite tools are finds from HN and places like it.
*Talk to startups*
If you can get in at a small enough company, you can get your hands in a lot of subject matter outside of what you're formally trained in. If you find something genuinely mission-aligned, or a place that values work-life balance more so than a corporate job, or something else that makes it better for you than just a job, it can also be a great way of finding good colleagues.
*Freelance*
You don't actually have to wait to start doing useful work that makes you money. Your probably already have enough of a skillset to fix things for the people around you. This is the same as with side projects -- a useful way to get experience with stuff that's outside the scope of your primary work.
For a personal example, my first open source contribution actually happened in the course of solving a data recovery problem for one of my friends.
*Technology work != technology company*
You can solve tech problems for people in other settings. Lots of small businesses don't have internal staff who thoroughly understand how their systems work, and rely entirely on their vendors for support. Or they're overloaded with manual tasks that you can automate. Or they don't know how to get actionable data that gives the business or its leadership a sense of direction.
You don't have to work for a big tech company in order to have a tech career. You don't even strictly have to use them for everything.
*Do not depend on cloud services*
Using them is fine, and they can be immensely helpful when you need backups, but your whole workflow should not depend on a tool that can rug pull you at any time. It's important to store as much of your work as possible in an open format that isn't dependent on any one client. I particularly encourage you to use Markdown wherever you can.
You especially should not depend entirely on cloud services for your password manager -- use something open source, that you have the option to self-host if things ever go sideways. Go read some of the stories of what happens if your whole Google account gets banned; they're mundane nightmares.
[1] https://fortune.com/2024/07/20/squarespaces-cmo-cold-called-...
On top of all that I'd add perhaps having a side hobby in learning about AI research/developments and harnesses (Claude Code/Pi/OpenClaw/NanoClaw/Hermes/etc) and auxiliary systems like vector databases and graph databases. Being an AI wrangler could be the equivalent skill that 'big data' processing was previously. Even just being able to speak competently on these could be an edge.
jschveibinz•6h ago
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.
RhysU•5h ago
SoftTalker•4h ago
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.