What's your advice for future CS students?

github logo ・1 min read

Hey developers out there!

I guess at least some if you went to university and studied computer science or software engineering. What are your tips and advices for those of us who are also planning to do so?

What parts were especially hard for you?

What do you wish you've had paid more attention to when you look back?

Please share your wisdom with the next generation! :)

Feel free to fill the comment section with any advice you have, also related to internships, semesters abroad or something like this.

twitter logo DISCUSS (25)
markdown guide
 

Quick thoughts:

  • If you can get courses where you happen to be going on basic set theory and graph theory without needing a bunch of prerequisite courses, try to make a point to take them. Both are exceedingly helpful for understanding a lot of common data structures and algorithms used very widely in computer science. Statistics is also a good math course to pick up as an elective, but that's more because of it's general utility in any engineering focused field, not just CS.
  • Make certain you get an internship. Even if it ends up being unpaid at a company you really don't like. Almost nobody wants to hire a CS student who has no applied experience, and an internship is a good solid way to get such experience. Alternatively, do everything you can to make (useful) contributions to FOSS projects (this gives you a similar demonstration of practical experience you can put on a resumΓ©, which one is better depends on where exactly you're applying, but a lot of big name companies still seem to favor internships over FOSS contributions).
  • Try to make a point to learn to use version control software, even if you have to do it on your own time. One of the biggest complaints I here out of people hiring developers is that the new hires have no idea how to use version control properly. Git is probably your best bet here, as it's very quickly becoming the de-facto standard and it also has reasonably good tutorials and supporting documentation. The aforementioned graph theory will help with this too (many of the large-scale VCS operations are easiest to explain in terms of manipulating a graph representation of the sequence of changes).
  • Learn to use Linux or BSD. The likelihood is consistently decreasing that you will not need to know about UNIX-like environments when you eventually get a job as a developer (pretty much, unless you're doing only business software or bare-metal embedded work, you will almost certainly have to use Linux or BSD at some point).
  • Diversify your skill sets as much as you reasonably can, especially if you're in the US (for some reason, a lot of universities here still seem to think that all you need for CS is Java and C++, which is horribly wrong). This is especially important for employability, as it's becoming rarer as time goes on for any given project to only need one or two languages.
 

Thanks! Especially the last point you mentioned is something I'm really curious about! Right now I just wrapped my head around WebDev and I enjoy it. However, I often feel like there are so many cool fields and technologies out there I never tried myself at!

 

Even finding a specific field that you do well with, you can often still diversify pretty far within that field.

For example, if you really enjoy web development, you might look into learning other web frameworks you've never used before, both client-side (React, Angular, Vue, Svelte, Ember, etc) and server-side (ASP.NET Core, Django, Rails, Laravel, Phoenix, etc).

Aside from what I mentioned above about projects more often using many different technologies, this makes it more likely that you'll have the set of skills needed by any given employer in your field of choice, and also shows them that you're willing to continue to learn when you need to.

 

I would say that Git will help you to save your University projects, upload them on GitHub, don't lose them! You'll miss them if not.

 

And you can always attach your projects to your CV then which would prove your experience and knowledge :)

 

I disagree with the internship part. Here in the UK, an industrial year or internship is often a wasted year and as someone who did a 3 year degree and found a job a week after University finished I've never had any issues finding a really good job. It's a developers market right now and there are shortages everywhere so scrap the industrial year / internship and go straight into the working world. The sooner you start earning the sooner you get the real developer salaries

 

I guess it's a matter of cultural perspective. Here in the US, it's somewhat challenging to get a job as a developer right out of college unless you either live in a highly tech focused city (like San Francisco or Seattle) or had an internship, especially if you went to a university that isn't known for it's CS program. Things have been shifting, slowly, away from that state of affairs, but I know quite a few people here who went to college to become developers, and haven't been able to find jobs relating to that at all even multiple years after they graduated.

 

I think of internships as little real world tests. Take BackEnd Development for example. Maybe I'm super into it and like doing it besides my study, but it is really something I want to do all day long for years? Through the right internship I can quickly validate that decision for myself!

It's also more common in Germany to do an internship for only one semester or even in your semester holidays, which are like 2,5 months.

I think it heavily depends on the company you're working at! Google and some other big players also offer 10-week-long internships to give you a first impression of the different roles there. I think that's not only helpful for your future decisions but also a big plus in your CV!

I did an internship in a small app-agency a year ago, having absolutely zero experience in real development and being just capable of writing HTML and CSS. In just four weeks full-time work on my own project (a prototype for some idea of the agency) I gathered a huge knowledge about JS, Webdev, databases and so on!

They even asked me if I was interested in dropping out from school to make my way as a self-taught developer there.

Sometimes it's not just about "being employable" asap, but more about learning and experience!

I also know a lot of graduates that started with way higher salaries than their competitors, just because they had work experience!

 
  1. Stay curious. There is a lot of learn, now and in the future. Staying curious will only help in the in school, and after it.

  2. Go beyond the curriculum. Odds are your school wont teach you a bunch of different languages (JavaScript, Python) nor will they teach you a bunch of different tools you may need (like git, github, Linux). Also, doing more to show off only helps down the line when you graduate. Build stuff if you have time, save all of it with the idea of showing it off when you go on the job search.

  3. Try to be a jack of all trades as reasonably as you can. Not specializing will only help keep more doors open, staying flexible helps you learn and grow faster than if you stick to just one thing.

  4. Some math is overrated. I had to learn calculus and physics, yet haven't touched either since graduating. If you don't plan on going into anything related to physics, you wont ever need this knowledge.

  5. Some math is critical. "Computer science math", IE data structure, and algorithms is the single most important thing to learn from school. It applies in all code, all languages, and all use-cases.

  6. Be a team player. Learning how to work with others is an excellent time to learn team dynamics. Odds are you will end up working with other people, so learn to be nice πŸ˜„

  7. Take advantage of the schools networking and job opportunities. This is hands down the #1 reason to go to school, as colleges usually provide services to help with the job search. Take advantage of job fairs, internship opportunities, scholarships, and networking opportunities. This is the closest thing to a "sure-bet" way of getting a job or at least an internship. Don't expect to be 100% hire-able when you graduate, but getting experience before graduating sets you a head above the rest.

  8. Finally, enjoy it! Going to college/higher education seems like it will take forever, but before you know it it will be over. Stick to your guns, work hard and stick it out. (Usually) no one forces you to go to college, and its totally fine to not go through with it, but ask yourself if not doing it is worth it. Computer Science is all about learning, why not get something official out of it?

 

I think I'm already going beyond the curriculum as I'm tinkering a lot with web technologies like React, graphQL and so on. I'm also quite familiar with git & GitHub already.

However, I really look forward to university as I hope to gather a solid, independent foundation of skills and knowledge to build on top of!

 

Sounds like your on the right path, and have the right mindset for the career. Even if college doesn't go over everything you think you need to know, it will give you context to a lot you already know, or never thought about.

If you already use git and github, definitely put all your work, projects, notes (if you take them) on it. Not only does it give you more practice, it also gives you more to show off later. Don't worry about it being "not up to par", no one expects you to be uploading perfect code if your just starting out haha.

If you get to choose some classes, and want to focus on web development, I suggest looking into classes related to web development and networking if available.

 

As a CS student myself, I would say:

  • Think twice. Are you a gamer? That doesn't mean that your meaning in life is to work in CS. How does the graduate profile look like?
  • Do some research. Talk with people that are studying CS, that already have their title, and with people that drop off, that are working as devs after leaving college. That will really help you to set your priorities.
  • Learn more. Don't just stay with the classes, there is a lot more out there.
  • Network. Make some friends. If you end up alone, helpless and bored, you'll drop off.

edit: I forgot, start a blog!

 

I often feel like I'm literally the only CS-interested guy who isn't interested in gaming (shame on me)!:D

Last summer I worked as a WebDev intern for an insurtech agency in Cologne, Germany and next Summer (right before my study begins) I'm going to do another one, also WebDev.

I really want to go to university because I

  1. am interested in the underlying concepts of programming
  2. like maths a lot
  3. want to learn how to work in a scientific way
  4. want to understand the "bigger picture"
  5. don't know what exact role in CS fits the best for me (who knows, maybe I'm more of a data science guy?)
  6. want to gain knowledge in other fields through my minors (economics, psychology)

I often thought about the pros and cons of going to an university or not and I always ended up to at least try it, as it's basically free in Germany.

 

Well, to me it seems like you are a good fit for CS! Graphs, algorithms, and a scientific approach are the things I like the most. I struggle with math, I can't just sit all day long applying theorems... but sometimes I do... (freaking Physics!). Oh and yeah, we had a teacher that said the first day in class: "Who's here because of game development? Well we won't be writing games. We won't do that." πŸ˜‚ Many hearts broked that day

 
  1. Persevere. There is always something to learn, no matter how much experience you have. Persevere through the challenges and keep up a positive attitude!

  2. Failures = Steps to success. Don't be afraid to fail. Learn from your failures. Without them, you won't know what to avoid and what to do to get you to finally succeed.

  3. Learn source control. Normally not taught in school. It's crucial for professional work.

  4. Learn soft skills too. Written and verbal communication skills, ability to work well with people, being collaborative are all skills that will earn you a promotion faster and will generate more $$$.

  5. Learn project management. Software is complex and majority will require adequate project management. Again, extra $$$ if you can do this.

 

Thanks a lot Cristina! I think especially your 1st and 2nd advice does not only fit for CS students but for everyone who's into learning new things! I like it!

 

First 2 will ensure your success in any endeavor for sure! Always important no matter what field you go into 😊

 

As a Systems Engineering student, i would look back in keeping my programming side projects as a way to learn how to code and work without the fear of doing mistakes, since that's a good way to learn.
Try to rush the science and non CS subjects first so you can learn by doing if you land a job while studying in all the programming stuff.
Work will demand you to learn even more useful stuff, but don't feel overwhelmed and take it on your own pace

 

Yeah that's exactly my strategy of choice: Cracking every bit of math-related and sciency stuff as early as possible to build my real world skills on top of that!

 

I'll keep it small and simple.

  • don't be afraid to go on your own. I see a lot of people, i did it also, thinking: "i'll just finish this module and than I will know more and then I will be able". Start learning on your own, and when it gets difficult and you are hitting the wall, try harder.
  • Socialize. All those people around you are also trying to get a job, learn something, know someone in some company. When you need tips, help, introduction to someone being good with others will help.
 

Yeah, I really want to meet motivated peers and who knows, maybe we'll build something cool together!

 
  • You're going to need to teach yourself / research just as much as or even more than what your professors will teach you if you are to succeed.
  • Practice - just like any skill, practice is the only way to get better. This coincides with my first point. Go beyond completing your school assignments to get that practice in.

Good luck!

 
  • Travel to a 3rd world country
  • Get a CS degree for cheap
  • Get an experience at an internationally known company for a year or two
  • Return back to your country
  • Enjoy the money since you're not drowning in debt

~ Tips based off of my experience

NOTE: This path requires you to study harder but hey, you're not in debt :P

 

I live in Germany and I don't really think that studying somewhere else could be cheaper in any way. As German citizen, the semester fees range between 90 and 300 euros, already including public transportation in your university's area.
Based on your parents' income, Germany offers you an interest-free student loan to cover your living cost and the by far coolest thing about it is that you just have to pay back 50% of it afterwards, the rest is paid by the government after you graduated.

However, your story sounds so damn cool! I did an apprenticeship in banking and often thought about doing an microfinance internship in a third world country! If you ever write an article about your time over there, I'd be happy to read it!

 
Classic DEV Post from May 10

What do you wish you knew about Developer Relations?

A conversation... what do DevRel professionals wish devs knew about their job? And what do devs wish they knew about DevRel?

Louis profile image
22-year-old student from Germany who fell in love with coding and the tech industry after pivoting from a traditional career in banking. Currently digging through FrontEnd Development!:)