It’s 2014 and I’m studying Computer Science at the University of Augsburg.
I know this is what I want to do because I’ve already worked in IT for half a year, and I’ve been programming on the side for over a year.
5 years and a Master’s degree later, I can say that software engineering is a craft that is not taught at University.
From what you read online, this is what you can expect.
In computer science, Universities teach you algorithms and data structures, but also Java AWT and other outdated technologies.
I’ve learned much more about programming in my part-time job as a software engineer, and in the various personal projects I did.
But I would study again.
Here’s why.
Algorithms and data structures are useful. You don’t need them every day, but knowing the basics gets you a long way to performant applications. Don’t f*-up your Big-O Notation!
Universities teach you the foundation. Apart from algorithms and data structures, you learn about operating systems, software architecture, databases, compilers and interpreters, protocols, and much more. These basics can provide immense value, depending on the specialization you take in your career. For example, knowledge about real-time operating systems and low-level protocols helps you with IoT projects.
Unis offer interesting minor subjects that can be worth exploring. I had classes about machine learning, computer vision, music informatics, and nature-inspired software systems. I even took a philosophy class. All of these classes allow you to dive deep into subjects you probably would have not touched on your own.
Universities teach is how to think. This is most important. You learn how to see a problem, look at it through various angles, assess what knowledge you have and what you need to learn, and then work on it until you solved it. It is no wonder that German Armed Forces Officers can study many different subjects that are not directly relevant to their career (like history). It’s only important that they study something to learn how to think and solve problems.
You learn how to manage long projects by yourself. Writing a 90-page master thesis over the course of 6 months is a tremendous effort. You not only learn but practice how to self-pace over such a long time.
You learn scientific writing. Scientific writing is powerful. With each project at Uni, you learn how to write. The thesis is the ultimate test of this. Within a thesis, you must present a reasonable chain of thoughts to your reader.
Ultimately, university is teaching you to be an academic.
Not every good computer science academic is a good software engineer.
And not every skilled software engineer is a good academic.
But the skill set overlaps.
Research, critical thinking, and problem-solving are important to both.
If you like practical programming more, try out a University of Applied Sciences.
There, you’re working on many practical projects and gain much more on-hands experience with software development than at University.