Many people on the internet furiously debate whether it is better to learn how
to program in college vs teaching yourself. This is not necessarily a one-sided
debate, there are merits of both teaching yourself how to program and taking
computer science in college.

University
==========

The main advantage of taking Computer Science in college is that you are also
taking a lot of math and science courses. When talking to a professor from
Clarkson University he said that they were not teaching students simply how to
get jobs, but how to pioneer and shape the field. It is possible to buy a book
and teach yourself how to program Python or attend a coding boot camp. However,
the tech field is changing at a rapid pace, and what you learn now may be
irrelevant in five years. The combination of programming courses and other math
and science related courses allows students to create the tech of the future.
Think about all the advancements in artificial intelligence we have made in the
past year, all that requires higher level statistics and calculus.

When you are attending a University your professors and friends can help you
understand the content fully. College also gives you a time to experiment which
corner of the computer science field you want to specialize in.

Self-Taught
===========

Most of what I know in the computer science field, I taught myself. I feel that
it is a virtue to have. Picking up new programming languages or platform over
the course of a weekend is good skill to have – especially when going into a new
job. The best programmers are those who are constantly seeking new knowledge and
learning.

When I was at a career fair I asked multiple companies what they were looking
for in a suitable candidate. Most employers liked candidates who worked on
projects outside of school and showed drive to learn new things. However, one
employer simply said that they looked only at juniors/seniors who have taken the
Computer Science courses at RIT. I decided to ask her if their company liked
students who taught themselves additional programming languages. She shrugged
the idea and said that they typically don’t favor that because people who taught
themselves programming might have picked up bad practices. This brings up a
valid point. Computer science courses are laid out to incentivize and favor good
programming practices. Computer engineering courses are specifically designed to
teach you good programming practices and working with larger codebases. With
that said, it is not impossible to teach yourself good practices, however, it
takes additional work which is not what everybody does. Writing a modular
program which perfectly readable is different than writing spaghetti code which
simply works.

The largest advantage to being self-taught is that it is cheaper and faster.
Over the course of a weekend I was able to teach myself NodeJS and start making
the framework for this blog. If I would have done that in college it would have
taken an entire semester or more. Plus, I don’t think there are any college
courses being offered on NodeJS. The information that you are teaching yourself
is often newer technology than what is being in college. College courses
typically take some time to catch up with what industry is currently using.

Conclusion
==========

If you are a dedicated individual, you will find success in both methods of
learning programming. I would argue that you should always be learning and
teaching yourself something new every day; however, a combination of college
education and self-teaching is the best.
