What subject young programmers should be taught at university
It’s been a while since I wrote my first line of code. Years later I went to university to learn how to code properly. I did learn a lot at that time but most of what I know today I learned through years of experience.
But I’m convinced that the most essential lessons I learned could be taught in a dedicated subject.
I’m not going to say that programming languages, programming theory, development methodologies and all the rest are not worthwhile. But I propose one additional subject to be taught: How to deal with complexity.
For me the most important thing I learned was to get a feeling for complexity. When you’re new to the job you often focus on the detail alone not realizing the size of what you’re working on. You don’t realize what impact a small decision can have on the rest.
I would propose the term to be clarified by stories from the real world by real people. Basically a series of anecdotes about complexity problems with a clear learning at the end.
All this should then nicely lead to the most important principle in programming: separation of concerns. Students should learn what this principle wants to achieve and how it works on different levels of abstraction from function level to class level to package level to project level.
All this theory should be supported by some practical programming action focussing on decoupling best practices and could then be extended by some useful lessons on refactoring legacy code to decouple existing code.
I would expect a subject like this to help freshers to be better equipped for IT projects much earlier than I was.