DEV Community

Discussion on: What advice would you give a CS student starting their freshman year?

Collapse
 
agentd00nut profile image
agentd00nut

Put every single piece of code you write on git. Every little project, every little investigation into how to do X Y or Z in language A B or C. Make sure that anyone can follow your readme step by step and make it run the exact same way you have it running.
This shows that you know more than a few core languages, this shows that your interested in things that "don't matter" because you like computers and code and not just making $$$. It's good practice learning how to organize your projects to other people can run them, it's good practice in writing documentation, it's good practice in commenting code in places that might be confusing.

Get the proper IDE for the code you're writing.
I write * a lot * of php... I'm not saying phpStorm is the best ide but i'm saying that without something that could auto complete and give argument hints to methods i'd spend a lot more time googling how to pass things in / scrolling through code to find references / where things are declared in my code base.

Sublime text and notepad++ work for quick, dirty, fast, prototypes, after that spend the 30seconds it takes to launch an IDE!

Read.
Other.
People's.
Code.
You will learn so much from other people's code. How NOT to do things, how to do things you didn't know where possible, how NOT to comment, how to comment, how NOT to organize projects, how to organize projects... you get the idea. Most importantly this will both humble you from thinking you are good at anything and shed light on how you are good at some things.

Answer stack overflow questions
Once you have some familiarity with get a stack overflow account and make a bookmark for a feed of the newest questions related to the that you feel familiar enough with and start answering questions.

This is a good reminder that there are smart people struggling with basics.  Or *anyone* struggling with basics. 
More importantly someone will explain why your answer is *WRONG* and may give you some hints as to why.  Some people are assholes and will want to demean you for your answer, ignore that and absorb the knowledge in their chastizing!
This is the easiest way to get people to point you to free advice!

Remember that the internet tends to distill down to showing you the best produced by the best people.
We aren't all "rockstar" programmers, we aren't all 10x programmers, we aren't all redefining what it means to ________. Projects, languages, packages, libraries, programs, repositories, and technologies that make waves that get noticed in "main stream" are the best of the best... the cream of the crop.
don't get discouraged thinking "i'll never write something like that".

It's so easy to get discouraged, ESPECIALLY if you compare yourself to your peers in your class.  If you feel like there are some people in your courses that are finishes assignments as they are being handed out or are openly bragging about how easy something was, *go talk to them*... Don't just hold a grudge or develop feelings of inadequacy.

Obviously someone might just be on a power trip and not be recpetive to someone admitting that they are struggling but i bet you'd be surprised how many people would be willing to show off their work or could explain a topic in a way that makes it *far* more understandable than a book or lecture ever could.

This applies even online!  Reach out through a private channel to someone and ask poignant questions about something that you can't understand and i'm more times than not you'll receive a comprehensive answer.  People like to help and share knowledge!!

Contribute to projects, look up how others have contributed to projects as well!

This is basically the same as advice as answering stack overflow questions.

Go on git, find a project you have *some* experience in the language being used, find a low hanging fruit, read the proper protocol for making a pull request, fork, make the changes, make the pull request.

Either someone will explain why you're request isn't proper and you learn.
Or someone suggests some modifications before you can pull and you learn.
Or you make a solid contribution to a project that is project!

You can't lose!

Most importantly don't lose sight of why you got into comp sci. If you're here just for money then you might be in for a bad time down the road.
Don't forget that everyone struggles, everyone. There are days where i envy anyone who gets to be outside during their work day. There are days when looking at a monitor or touching my keyboard make me phsyically ill.
But by keeping side projects that you enjoy really true love to work on, you'll keep the spark of imagination and creativity alive in your work and that will encourage you to trudge through the 19th assignment of the semester!!!

On the opposite side of the token it's OKAY to have other hobbies and desires outside of the computer world and will make you a more rounded person for that! Definitely learn to unplug completely and just go do ANYTHING that doesn't involve a screen. literally anything that isn't infront of a screen that you do regularly will make sure you don't get burnt out!