Should I go to University if I want to be a programmer?
If you really love a subject and want to excel in it and do it professionally then study it at university. This article is specifically about Software Engineering but I think it applies across the board if the subject in question is available and fits your passions.
University is equivalent to spending three years teaching yourself whatever you care about...and having the support of experts 24/7. These lecturers will:
- Correct any wrong assumptions you have made.
- Ensure you understand the underlying theories and building blocks you build upon.
- Give you broader skills you need such as writing concise text, collaborating, and reasoning.To question if you understand an idea. To argue a solution. To stay focused. To tune processes. To engage others in development
- They allow you to explore different scenarios and how to tailor solutions.
- They give you the "critical thinking" skills you need to what is good and bad about what you produce and how to correct it on your own. This is an extremely important skill. To understand if a problem is a trade off between extremes. To understand when to research new solutions or when to take them off the shelf. To see a flaw in an idea. To spot when you're wasting time or procastinating
- Understand your personality and traits and give you practical and very tailored advice on turning your weaknesses into strengths.
Learning at home is great but it doesn't stop you making mistakes, it doesn't give you feedback on if your work is high quality and it doesn't challenge you to think in different ways. No one is feeding you new problems or solutions and no one is introducing you to similar experiments. No one is on tap to help you get over a hurdle, to see the big picture or to point out the skills you have but don't use enough. I've seen learn-at-home developers and I believe the relevant expression is If all you have is a hammer, everything begins to look like a nail It's all too easy to write code that works and not to have the other technical skills to know if that code secure or not. It's also extremely easy to let yourself become a programmer in just a single language. To believe there is only one solution when there are actually multiple solutions.
In a full time job you're there to get paid and to get results. You'll only really be taught what you'll need to fulfil your role and although you may get a chance to practice and play and learn certain tools or techniques while you're there, without academic explanations and someone to answer your questions you can end up with inaccurate mental models of "how things work behind the scenes". The most common example are non degree I.T. people and their poor attempts at Object Oriented programming. I see this one the most as it's a very subtle skill that even I find takes very careful consideration. If you're lucky to land a development job without a degree.. are you surrounded by other developers and if so.. are their kind words, explanations and patience as attentive and forthcoming when they do in fact have their own full time job to do?
University gives you the chance to write the best code possible without sacrifice and to look back at it and say how you'd make it better. Your software is all green fields. In a negative way you don't work with much legacy code or gigantic code that needs heavy refactoring but you'll pick that up when you do eventually go to work and staying away from a few legacy practices is probably a good thing to be honest when you're optimistic and want to learn the best ways of doing things. Allowing you to learn without all the pressures of a business is a good thing. To be an excellent programmer you need both an environment of dedicated learning and real work experience, I won't deny this.. so go to Uni and then start working to get both the things you need to make you excellent.. rather than "skipping ahead" and missing out on one. University is also a safe place to fail. The jobs of others and yourself aren't on the line when that huge rewrite turns out to be the world's biggest budget and time under estimation.
Truth be told, learning your skill is all about self-motivation, self-rewarding genuine interest and access to resources. University gives you a much better platform than learning at home or on the job so if you're serious about being a software engineer, which is a huge and complex field, attending University is what you should be thinking.
One final thing to say is that all too many people go straight from A-levels to degrees. A year travelling or working prior to making the commitment may help what you've already learnt sink in and give you the time to ask yourself if you truly love your subject enough to dedicate yourself to studying it over the next three years.
I'm eternally grateful to everyone at Southampton Solent University who have helped me get where I am today. I am truly thankful that they took my passion and unfocused energy and gave me a career I love.