My Advice for Computer Science Students 07-21-2017, 08:21 PM
#1
Since many of us here will be or are currently pursuing this field or related fields, I thought it might help to post this here. This thread is just going to be a few pieces of information that I wish I had done differently with my time or just things I wish I had known. If anyone else with experience wants to add or anyone has any questions about anything, feel free to share! I have most of my assignments from college and books if anyone wants examples.
DO get internships!
School only teaches you so much. You'll learn a lot of theory and complete many assignments, but you will not gain much of an understanding of how things operate in real-world environments. Employers like to see it on your resume and you don't want to jump straight into a job out of college with no experience. This brings me to my next point.
DO build a portfolio!
An internship + a solid portfolio will put you way ahead of your competition. I can't stress how many employers ask to see your portfolio during the interview process, and it's great if you can show them some side projects that display your curiosity, passion for the industry, and ability to self-learn.
DO utilize your professors!
I do realize many CS students tend to be anti-social and reclusive, but you're spending way too much money and wasting a huge opportunity to not ask questions. If you don't fully understand something, don't be okay with kinda knowing it, get it clarified. Stay after class. Set up a meeting. Get to know your professors and tap into the knowledge they're there to share. Not to mention you'll probably find out that they help a crap ton with your assignments if you're willing to bite the bullet and talk to them about it. Save your grades and talk!
DO build a network!
No, not a computer network. A social network. Be friendly with one another, ask each other questions and collaborate. Become friends with many of them as these are the rare people that share your passion whereas others may criticize and shun. The greatest benefit to this is post graduation. Getting a job isn't all sunshine and rainbows like many people may make you believe, even in the tech industry, so having contacts in the industry that like you and can refer you is HUGE! Like seriously huge. I'm emphasizing this because this was how I got my first job and foot in the door, with the help of a classmate.
DO practice interviewing
I'm not the first to say it, and I sure as hell won't be the last, the tech industry interview process absolutely sucks! Sure, you may have friends in business majors setting up interviews left and right and hoping one of them likes their personality, but for most tech jobs, you need to PREPARE! They're not just going to be asking you about life and your biggest weakness, you may be going through several rounds of technical interviews that may last a hour(s) each. You may get a random phone call and asked a technical questions to see how you handle a problem on the fly and how you attack the problem with that pressure. You need to be ready to code under pressure and without an IDE in front of you in front of a panel of judges. Buy some practice books and practice problems until you can do them in your sleep. There are also many online resources that will help. No, you're not going to immediately know every question and have the most optimized answer, the trick is to utilize the interviewers and ask them questions. Talk your way through the problem out loud and let them hear your thought process. They want to help guide you through problems, they're not there to see you fail and laugh.
DO learn version control
If your curriculum goes over this with you, fantastic. Mine never did and I wish I had. I don't know many companies that don't utilize some form of version control. I recommend learning git and learning how to use github. Many job applications expect you to know this and a github can easily be used for your portfolio. Learn it early so you can start building your github, employers often ask specifically for this.
DO NOT avoid public speaking/social opportunities
This may be the hardest one for some of you, but you'll greatly benefit from this. This can be gained from continually speaking up in class, asking questions, talking with professors, public speaking class, making friends, and practicing interviews. If you're comfortable being a code monkey your entire career, then just ignore this and that's fine too, but if you want to progress and advance, you're going to need to be able to communicate effectively and fluidly. You'll be a step ahead of many developers if you're good at this, not to mention many leadership opportunities open up.
DO NOT be afraid of math
I know many people don't like hearing this, but math is a large part of computer science. While a high-level knowledge of math technically isn't required to graduate, you'll only benefit from it. Optimizing algorithms may come easier, solutions to problems may make more sense, and not to mention several topics such as network security/networking and computer architecture require you to apply mathematical principles to come to solutions. It's important to be comfortable with it.
Some other tidbits of advice:
If you can afford it, buy hard-copies of your books. I find myself a lot more productive not having to use an e-book, not to mention I still use almost all of my books as references. Pay attention in class and don't use answers you found online. Many CS courses will help tremendously in the real world, as long as you challenge yourself to complete and understand things on your own. Pay attention in Data Structures, attempt to gain a deep understanding of each structure and the pros and cons of each one. Don't go through the motions. Being able to decide on these on real projects and knowing how to implement them is a valuable skill. Also, learn to comment your code.
Some helpful resources:
http://www.firsttimersonly.com/ : Get started on contributing to open source without the scrutiny. Will look great on resume.
http://noexcuselist.com/ : Learning resources.
http://www.freetechbooks.com/ : self-explanatory
http://ambitionbox.com/ : Interview preparation
https://www.tutorialspoint.com/ : One of the best learning resources
https://web.archive.org/web/201407281952....md#python : More free books
https://leetcode.com/ : Great site to practice your coding abilities
DO get internships!
School only teaches you so much. You'll learn a lot of theory and complete many assignments, but you will not gain much of an understanding of how things operate in real-world environments. Employers like to see it on your resume and you don't want to jump straight into a job out of college with no experience. This brings me to my next point.
DO build a portfolio!
An internship + a solid portfolio will put you way ahead of your competition. I can't stress how many employers ask to see your portfolio during the interview process, and it's great if you can show them some side projects that display your curiosity, passion for the industry, and ability to self-learn.
DO utilize your professors!
I do realize many CS students tend to be anti-social and reclusive, but you're spending way too much money and wasting a huge opportunity to not ask questions. If you don't fully understand something, don't be okay with kinda knowing it, get it clarified. Stay after class. Set up a meeting. Get to know your professors and tap into the knowledge they're there to share. Not to mention you'll probably find out that they help a crap ton with your assignments if you're willing to bite the bullet and talk to them about it. Save your grades and talk!
DO build a network!
No, not a computer network. A social network. Be friendly with one another, ask each other questions and collaborate. Become friends with many of them as these are the rare people that share your passion whereas others may criticize and shun. The greatest benefit to this is post graduation. Getting a job isn't all sunshine and rainbows like many people may make you believe, even in the tech industry, so having contacts in the industry that like you and can refer you is HUGE! Like seriously huge. I'm emphasizing this because this was how I got my first job and foot in the door, with the help of a classmate.
DO practice interviewing
I'm not the first to say it, and I sure as hell won't be the last, the tech industry interview process absolutely sucks! Sure, you may have friends in business majors setting up interviews left and right and hoping one of them likes their personality, but for most tech jobs, you need to PREPARE! They're not just going to be asking you about life and your biggest weakness, you may be going through several rounds of technical interviews that may last a hour(s) each. You may get a random phone call and asked a technical questions to see how you handle a problem on the fly and how you attack the problem with that pressure. You need to be ready to code under pressure and without an IDE in front of you in front of a panel of judges. Buy some practice books and practice problems until you can do them in your sleep. There are also many online resources that will help. No, you're not going to immediately know every question and have the most optimized answer, the trick is to utilize the interviewers and ask them questions. Talk your way through the problem out loud and let them hear your thought process. They want to help guide you through problems, they're not there to see you fail and laugh.
DO learn version control
If your curriculum goes over this with you, fantastic. Mine never did and I wish I had. I don't know many companies that don't utilize some form of version control. I recommend learning git and learning how to use github. Many job applications expect you to know this and a github can easily be used for your portfolio. Learn it early so you can start building your github, employers often ask specifically for this.
DO NOT avoid public speaking/social opportunities
This may be the hardest one for some of you, but you'll greatly benefit from this. This can be gained from continually speaking up in class, asking questions, talking with professors, public speaking class, making friends, and practicing interviews. If you're comfortable being a code monkey your entire career, then just ignore this and that's fine too, but if you want to progress and advance, you're going to need to be able to communicate effectively and fluidly. You'll be a step ahead of many developers if you're good at this, not to mention many leadership opportunities open up.
DO NOT be afraid of math
I know many people don't like hearing this, but math is a large part of computer science. While a high-level knowledge of math technically isn't required to graduate, you'll only benefit from it. Optimizing algorithms may come easier, solutions to problems may make more sense, and not to mention several topics such as network security/networking and computer architecture require you to apply mathematical principles to come to solutions. It's important to be comfortable with it.
Some other tidbits of advice:
If you can afford it, buy hard-copies of your books. I find myself a lot more productive not having to use an e-book, not to mention I still use almost all of my books as references. Pay attention in class and don't use answers you found online. Many CS courses will help tremendously in the real world, as long as you challenge yourself to complete and understand things on your own. Pay attention in Data Structures, attempt to gain a deep understanding of each structure and the pros and cons of each one. Don't go through the motions. Being able to decide on these on real projects and knowing how to implement them is a valuable skill. Also, learn to comment your code.
Some helpful resources:
http://www.firsttimersonly.com/ : Get started on contributing to open source without the scrutiny. Will look great on resume.
http://noexcuselist.com/ : Learning resources.
http://www.freetechbooks.com/ : self-explanatory
http://ambitionbox.com/ : Interview preparation
https://www.tutorialspoint.com/ : One of the best learning resources
https://web.archive.org/web/201407281952....md#python : More free books
https://leetcode.com/ : Great site to practice your coding abilities
(This post was last modified: 07-22-2017, 06:23 PM by Nil.)
"If you look for the light, you can often find it. But if you look for the dark, that is all you will ever see.”






![[+]](https://sinister.li/images/modern/collapse_collapsed.png)





















![[Image: 4GNsK67.png]](http://i.imgur.com/4GNsK67.png)







![[Image: a319ef9581853.560e3236d2b0b.png]](https://mir-s3-cdn-cf.behance.net/project_modules/disp/a319ef9581853.560e3236d2b0b.png)

