After college, everyone has the choice to go to university and get a degree in computer programming or to go straight into the field. Here are the reasons why I support going to university.
University is an environment that is based with the sole objective of helping you learn to be an expert in something you care about. You spent three years studying the subject full time. Your learning objectives are selected by experts to ensure your understanding is broad, deep and important. There are lecturers whose job is to ensure you fully understand the material. They read what you write, understand your mentality and not just your results. They can correct small errors or misunderstandings in your thinking. They give you a chance to learn the building blocks your decision making is based upon. They help you develop the critical awareness skills you need to be successful.
On the job learning is possible but with an actual job to do, even if programming related, there will be no time to expose you to the wide breath of computer programming as a field. You will be doing something specific and limited in scope and will be potentially too busy to understand what’s going on at the lower levels. Your colleges, whilst smart and educated are also busy themselves and cannot commit themselves as fully to helping you.
University is free of the business constraints that impact software design and development. With no deadlines and being able to write summaries in essays about how you messed up but what you should have done, university provides feedback on your understandings that businesses simply can’t match.
There are many many important things you learn about software development on the job you cannot learn at university, especially about teamwork, delivering customer value, trade-offs and appropriately hacking things to meet deadlines. The best programmers have a degree and this rich experience under their belt. Skipping university only to meet a graduate who knows less than you on day one may solidify an opinion that somehow university is useless but this is simply incorrect in my experience and in the medium and long term, university graduates are better at writing software than the non-degree educated ones.
Software is constantly evolving and new technology is always coming out. Everyone has to learn new things and everyone has to learn from books and reading things on the Internet. Even those at or post University. Reading from books can be effective but to reiterate, without a solid base of understanding the fundamentals, for some, reading is not as effective as you’d think. I notice particularly that non-degree educated programmers are bad at writing object orientated programs correctly. They don’t choose models based on the domain effectively. Their limited interaction with software design documentation, typically absent from most companies, leads to overly complicated or brittle approaches. Their lack of mentoring and real feedback outside of trivial code reviews leads to the adoption of bad practices and creates a Dunning–Kruger effect.
This is all purely my opinion but I do have ten years experience in field after my degree and I have worked with a mix of degree and non-degree educated developers.
Let me also reiterate that University is a very fun experience, especially for young adults so why rush ahead with your life. As boring as school or college is, University is a new and fun experience all together.