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.
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.
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.
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.