If ever there ever was a controversial question that gets debated it's this one - is going to college really important for becoming an excellent software developer?
I get asked this question all the time - from news reporters, future students or people thinking of switching careers.
And as with a lot of stuff in life, the answer is - "It depends".
There is no guarantee that if you go to college you'll become a great programmer. But, statistics are inclined to show that most of good programmers do in fact have university degrees. If I look at the layout of programmers working at Infinum, a vast majority of them have university degrees.
On the other hand, a vast majority of them didn't learn programming in college, so what gives?
The reason why there's talk about not needing college is pretty obvious. College is very expensive, both in terms of money (if you're in the US where it's not paid for by the state), both in terms of time spent. This second cost here is very important - think about it, it's 5 years of the best time of your life. Imagine what you could do if you weren't out there chasing a degree? How much does that "cost"?
So, people get frustrated doing something for 5 years, and then graduating only to find their skills aren't up to snuff in the job market. They still need to learn more.
My life story is similar. I went to college and got a Computer science degree. But I didn't learn programming there. In college I met people, acquired work habits, got a grip how some things work and learned an algorithm here and there.
I learned programming on my own time, mostly by doing actual work, studying, and reading.
Then, there are bootcamps. They are intense courses that go on for a couple of weeks, with the idea of turning you into a "practical programmer".
Bootcamps revolve around practical knowledge. They teach you stuff you don't learn at college like testing or continuous integration. They have instructors look at your coding style and review your work via pull requests, just like you would do if you came to work at any good company today.
We organize one of these bootcamps called Infinum Academy. It's free for college students, and signups are open as we speak. We teach you iOS, Android at Rails, but plan on expanding to other skills.
A twist on the concept of college is Make School, a startup that wants to replace college with more practical knowledge. The main difference is that bootcamps are intense and short, and Make School's Product Academy in San Francisco goes on for 2 years.
The interesting part about Make School is also that you pay tuition through earnings on your future job. That makes your incentives nicely aligned with those of Make School, which is always good.
Become the best
I believe you have the highest chance of becoming the best programmer you can be if you combine these two things - the practical and the theoretical.
Go to college (if you can afford it), learn about computer science, how computers work and meet a wide range of different people. The knowledge you get there will be invaluable when you get to some really hard problems, when you'll actually need to understand how something works on a deeper level.
But, don't make college your entire life, explore other areas. Don't think that a degree you'll get at the end will help you with much. Think about the journey of graduating, not the end result.
In the meantime, go to a bootcamp and acquire practical knowledge - structuring and writing maintainable code, working in teams or automated testing and deployment.
If you mix these two things, and also put in enough time and effort (no college or bootcamp can help you with that), that will make you the best programmer you can ever be.
And if you're interested, sign up for Infinum Academy if you want to learn what we've learned along the way.