Live data from Hacker News

Ask HN: I'm an incoming freshman to college for a CS major, what should I know?

news.ycombinator.com

231–240 of 278 posts

Re: Ask HN: I'm an incoming freshman to college for a CS major, what should I know?

#231
TL;DR. I would say find an internship or programming job ASAP. Practical experience in the field is generally more beneficial than classroom learning.

Pro Higher Ed: Programming classes are great for repetition and rote memorization. I had one class that was 70% Bash and VI (not VIM) - just the basics. Labs were agonizingly mundane, drilling the same commands over and over, but now at my job I'm considered an SME (subject matter expert) on random Linux servers because the basics were drilled into me. I was hired as a developer, but my general understanding of system led me to become more valuable

Pro Maybe Not Higher Ed: My sophomore year our IT department was hiring for two student programmers, and I was accepted (though including me, only two applied). However in my first 3 weeks of training I think I learned, in the field, 90% of what was taught for my junior and senior years (Web design, database design, SQL, data structures, and the most important (since I was hired after my senior year): institutional knowledge.

Working in a professional environment, even as an intern or student, you get to learn how project timelines and management work, how businesses calculate/expect returns on their requests (and maybe react to critical successes of failures), analyzing and modifying legacy code bases, integrating, deployment workflows, source management, how frustrating it is when vendors have terrible APIs, bureaucratic nonsense and pace, etc. All of this is critical knowledge you need at some point, so get it early (and pad that resume). If you can publicly contribute or distribute code/solutions via GitHub or whatever, that's an asset for sharing with employers (if it's semi- decent).

I will and ask you a question I ask student developers in interviews: "In what field do you want to be working in in 10 years". I get answers like "Machine Learning", "AI", "Web Development", "Networking", etc. All CS categories. So I push back and say: "Ok, but for what purpose?" and list off some broad options "education, health, entertainment, gaming medical, financial, legal, political, industrial, environmental, etc?".

Very few have a good answer to that question. They "like to code", or say "anything really". I encourage everyone to look at CS a tool towards a cause or a goal. Find a field, locality, or business you believe you'd like to one day make an impact on, and keep thinking about how what your lessons can contribute to that.

But again, please look for real-world experience.

Re: Ask HN: I'm an incoming freshman to college for a CS major, what should I know?

#233
post #230

Earlier quoted context omitted.

You mean once they worked at FAANG, saved up enough FU money and then left? Yeah, I'm sure they are much happier.

No, many left within 2 years.

The average for Google is 3.2 years. For most, that is not FU money.

Re: Ask HN: I'm an incoming freshman to college for a CS major, what should I know?

#234
1) Care but don't care too much about your classes. Job recruiters and interviewers don't care much about what you specifically take, but they like seeing a CS, math, stats or physics degree. Shoot for 3.2 (maybe just 3... opinions vary) to 3.5. My school had options to do a BA (fewer hard requirements) or BSci (more hard requirements) in CS; in hindsight I would have just taken the BA. I think no one (or at least no one I think is important like FAANG or other bigco's) cares about the distinction, just get a bachelor's degree. Point is to give yourself some free time to enjoy college while also making sure you have a good GPA.

2) That said... you should still work on a technical pedigree. So put some time into each new field you discover (ie webdev, cybersec, systems programming/lowlevel stuff, machine learning, or other fields) to see what you like. Exercise your curiosity and imagination. As long as you land good internships and finish college with a few interesting projects to pad the resume, it should be very strong once you graduate.

3) I have no good advice for landing internships at top tech companies (FAANG) but you should shoot for one every summer, even freshman year (yes, getting to FAANG is doable in freshman year). At least do it for the shiny company name on the resume. Good prep would involve some combination of project work (in or outside of class... maybe a group project?) and the typical prep like algorithms.

4) Have fun and be social in college. Go out and do shit with your friends. It'll build your soft skills.

Re: Ask HN: I'm an incoming freshman to college for a CS major, what should I know?

#235

1. A large (and growing) chunk of the industry considers object oriented programming to be absolutely terrible, but that's what they'll teach you in college. Learn functional programming and data-oriented programming in your spare time before your mind has completely set into OO. Make each of the three approaches intuitive. It will be way better for you down the road, and it will help you actually evaluate which appr…

> What if you develop RSI and lose the ability to type large volumes of text?

4. Never ever let an employer work you to the point that you get RSI. Let them fire you first.

5. Ditto your mental health.

6. Learn to say no.

Re: Ask HN: I'm an incoming freshman to college for a CS major, what should I know?

#236
1) Consider taking a year off before you start to build things on your own -- I regret not doing this, and I don't know anyone who took a gap year and regretted it. If you've already gotten admitted, you can probably defer, especially given COVID.

2) Start showing up to grad classes, research seminars, and lab meetings from day 1 -- the experience of understanding, analyzing, and critiquing cutting-edge research with the help of grad students and professors who know what they're talking about is the most valuable intellectual experience research universities have to offer, and you shouldn't wait till later in undergrad to start.

3) When you find people you want to spend time with, actively make time to do that. Organize events to bring your friends and other interesting people together in a low-pressure social environment.

4) Look for people to work with whom you trust implicitly to (a) have your back and (b) make progress even when you're asleep.

5) Learn how to write by writing a lot and posting it publicly -- college gives you a built-in audience and lots of sources of constructive feedback.

6) Ignore what people think of you to the extent possible, and take more social risks than you're comfortable with.

Re: Ask HN: I'm an incoming freshman to college for a CS major, what should I know?

#237
post #230

Earlier quoted context omitted.

No, many left within 2 years.

The average for Google is 3.2 years. For most, that is not FU money.

Just long enough to open the doors of any other job interview and bail to a company that doesn't shuffle them and their team around the office like game pieces in a never-ending re-org, a company that makes actual products instead of surveillance advertising systems (as the latter is impossible without the former), or a company that makes decisions not to work with oppressive governments based on more factors than if it will earn more than the potential PR damage will cost.

Re: Ask HN: I'm an incoming freshman to college for a CS major, what should I know?

#238
For school: Get enough sleep, especially before exams. Work practice exams. Turn your work in on time (even if it conflicts with #1.) Take interesting classes outside your major. Go to office hours and get to know faculty members and grad students. Cultivate interests and extracurricular activities outside of CS.

For getting a job: get a campus research (or other) job during the year; take project courses and put the projects and skills on your resume; join github (and learn to use git) and upload code you wrote; contribute to open source projects (also consider Google Summer of Code possibly); do hackathons and "programming" competitions; build your own web site; apply for summer internships (and/or research programs if you want to go to grad school); apply for scholarships and awards if you can.

As another idea, writing an app and getting it into an app store could also help you with getting a job later on, and it could even be a job on its own.

Re: Ask HN: I'm an incoming freshman to college for a CS major, what should I know?

#239

In my experience, social skills tend to be far more important than ability of knowledge when it comes to getting a job. Personal connections are also very useful when it comes to finding internships and graduate jobs, I had a B- grade point average and still managed to get an internship that led on to full time work when I graduated, purely by knowing the right people (completely by luck in my case) I'm not a bad pro…

You guys really exaggerate how much people lack social skills in our field. Most people have perfectly good social skills (at least those I'm friends with). Someone that exceeds you in technical skills is gonna snag that shiny internship away from you AND have the social skills to boot.

Re: Ask HN: I'm an incoming freshman to college for a CS major, what should I know?

#240
1. Use your uni time to build up a portfolio as well as your grades. Bonus points for anything that is being used in practice to solve a real problem for someone other than you, because that's one kind of thing that a business can make money with. If you have time for any side-projects, include them - obviously include any coursework/projects too. I got my first job because of a combination of doing well at uni, and working as a teaching assistant where I got fed up with a complicated excel-and-email-based system for tracking people's engagement and grades, and I wrote a database application with a web UI to make everyone's life easier. Back in those days CGI (common gateway interface) was all the rage and XHTTPREQUEST hadn't been invented yet, but it did the job. The interviewers were impressed that I'd already written "real code" and that set me apart, because one question they're trying to answer is "what will the candidate be able to do" and a good answer is "here's examples of what I've done already".

2. Learn how to build a web-based database front end application properly. This is a kind of bread-and-butter job that's not the most interesting thing in the world on its own, but is fundamental for a lot of things that create business value. There's a whole stack of technology behind this, and it pays to know what's going on "under the hood" of tools like ORMs, "reactive" JS frameworks, dependency injection etc.

3. Spend some serious time on at least one thing that is not CS.

4. On the CS knowledge side, algorithms/data structures and compilers are two things to take seriously to the point where you've achieved mastery, not just passed the class (even with a good grade).

5. Learn and use tools. At a not-too-bad uni I've still seen students in their penultimate year e-mail ZIPs of their code to each other ... version control, continuous integration, unit testing, linting etc are all things that happen in professional software development, but (mayby I'm just being Europe-centric here) especially at some good unis, they think this stuff isn't worth teaching and students can just find it out themselves. Knowing all this stuff is a huge plus in an interview, but even before then, it will make your life easier when you're doing coursework projects.

6. There are situations where an IDE is the right tool for the job and you shouldn't turn your nose up at it. Find one that suits your taste and learn how to use it, things like debugging, "go to declaration" or "find usages".

7. Finally, decide where your personal moral compass lies. Some people want to write AIs for self-targeting missiles, other's don't; same for "ad tech". You want to work in a sector and company that's a good culture fit for you.

Post reply on HN