If you are planning on being a computer science major or have already started the major, the below are some important tips that I wish I was told before my Freshman year in 2013. These tips are from a Computer Science major in my Junior year who is interning as a Software Engineer at Dell.
In high school, I was not really sure what career I wanted but knew it would be related to technology. I have always had an interest in technology whether it was the newest phones, computers, or anything that did something really cool. When I was in 10th grade, I saw The Social Network, a movie about the early stages of Facebook and Mark Zuckerberg in college. After seeing this movie, I knew exactly what I wanted to do: I wanted to be a computer programmer. I did not understand what this title entailed more than fast-paced coding looking like a hacker villain. In my senior year of high school, I took an intro to computer programming class and it was a real shocker to me. Coding a project in C# was a completely new experience. Writing out math functions or simple Strings of words to the console, was not what I thought being a programmer was going to do and I became discouraged. As I moved through the class I realized that this is the bare basics and learning to code is not an overnight or even a year long learning process. It is much more than that! This is when I realized that the programming scene from The Social Network where Mark quickly coded up his notorious Face Mash site was not very realistic.
When I was accepted to Central Washington University, I
applied for the computer science major right away. Looking back, my vision and
outlook on completing a computer science major is completely different than it
is now, 3 years into my college career. I thought I would take courses that
would teach me everything I need to know so when I graduate I will have no
problem getting a job at Facebook or Google. My first quarter, I took CS110:
Intro To Java. The first section of this class was easy for me because we
went over Strings and variables like int’s and doubles which was the same
material from my high school class. . When we started working into methods,
classes, and polymorphism, I began to get lost in it and would always seek help
from other students to help with my assignments. This was my first mistake and
a lesson for all new computer science majors.
1. Learn the Basics
The basics of computer science and programming such as understanding methods, classes, inheritance, polymorphism, etc. is what you learn in the beginning computer science courses. This stuff seems pretty complicated at first, and may be easy to blow off as in your first few projects you do not need to worry about using these concepts because they are small or simple. I cannot express enough how important these concepts are because this is what builds a computer science students’ foundation for the rest of his or her future. What you learn in your first couple courses is not only applicable, but professors and future bosses will expect you to be an expert and understand this thoroughly without properly understanding and being able to use these core computer science principles you will not be able to succeed in future courses and will have to go back and relearn. The knowledge gained for computer science majors continues to build on top of previous concepts learned. Without a solid foundation and understanding these basics you will not be able to succeed - so pay attention and take notes!
After realizing I made a mistake by trying to breeze through
my introduction classes, it was time for me to go back and learn those core
concepts that I missed. After catching up to where I needed to be, I realized
that other students were talking about projects they were working on outside of
class. I was shocked that they already had this knowledge as we have not been
taught how to do some of this yet. I talked to my professor and advisor for
computer science to see what I can do to be a great CS student and how to set
myself up for success in my future career. This conversation was a real turning
point in my vision of becoming a software engineer. My advisor told me getting
your computer science major builds foundation and teaches students the basics
they need to get started on projects, learning more languages, working with
databases, and more. It is the student's responsibility to go out and use that
knowledge to build, practice, and learn. This brings me to my second point:
2. Learning outside the classroom
To me, this is one of, if not THE most important lesson for
computer science students. We are given the basics to build applications but if
we just used what we learned in class so far we could write a website with
basics HTML, CSS, and JavaScript or maybe a Java application using a GUI. The
concepts and tools that I have learned in class give me the foundation to go
and research documentation and see examples to understand what I am looking at
and be able to use them to build a project myself. It is very important to be
able to do this because everyone else graduating from your University and all
of the Universities across the country are learning the same material. My
University, for example, does not have courses on version control, frameworks
like AngularJS, Node.js, and MongoDB but those are examples of things that I
have learned outside of the classroom and am using for a class project. I was
able to learn these tools - which are used all over the field - because
of my solid foundation that I developed in my CS classes. It is important to
look ahead at the career you want whether it is a data analyst, UX developer,
or website software engineer and be clear about the required and preferred
qualifications. Make sure to become familiar with the technologies they use so
by the time you graduate, or apply for internships, you have the familiarity
and the knowledge they are looking for.
3. Prepare for internships/ jobs early, not
last minute
It is never too early to prepare for your internship. As stated in the previous point, it is important to study the requirements that companies are looking for and begin to learn and use these as soon as possible. Many students and even advisors say that students should be getting internships the summer after their Junior year because that is when they are most capable. I do not agree with this statement as it makes students lazy until their Junior year and then they rush to try to learn new technologies right before applying for their internships. Unfortunately, they do not have enough experience to show in their interview. I began studying and building projects to get ready for internships immediately after talking to my advisor when I was told about the importance of learning outside the classroom. This prepared me for my internship that I began for the summer after my sophomore year at Dell where I currently still intern at.
4. Build something!
Not everyone is lucky enough to get an internship and have
real world experience but building projects and attaining experience using
tools and languages is the next best thing you can do. This section really
applies to students with internships and students without. An example is: a
fellow student did not have an internship this year, but he is currently
building software for a local dental company where he has to learn about new
technologies that are not necessarily taught in class, but are used every day
in the field. This looks really good on his resume as it shows that he has
experience building a great product even if it is not an internship with a
company. Even those like myself who have an internship need to continue to
build and work on projects because there is always something new to learn and
there is no such thing as too much experience so build, build, build!
5. Have an online presence
Marketing yourself as a software engineer is very important as you are selling your skills and ability to companies. Today, everything and everyone lives online and sometimes a simple resume is not enough. If you have followed the first steps, you have taken the time to build your skills and knowledge and now it is time to show that off to your future employer. This is where LinkedIn and GitHub come in. If you have not made a LinkedIn profile yet, build one now! LinkedIn is a virtual “resume” that has all of your projects, awards, experience, and everything you want an employer to know about you. This is better than a resume because employers can find you. By a simple search of your name someone can see all of your experience and skills you have to offer. The only thing missing from LinkedIn for us software engineers to actually show off our code and projects. For this, we use GitHub, an online repository for storing code. GitHub allows you to literally show others your code and projects you are proud of. This way, when employers ask about your familiarity with Node.js for example, you can bring up your GitHub and show off a project that you have made.
These were 5 tips that I wish I was told before I started my Freshman year as a computer science student. These should make for a smoother time in college but also to help prepare those who want to land a job or internship. Good luck and build, build, build!