Hi, I was going to put this in "Jobs" but it looked like it might have been meant for something else.
Anyway, I'm just about to attend university and want to know what others here did for their majors. I'm going for Computer Science, but would that be the right track for a programming career? Curious about opinions and what others have done. Thanks!
I've done chemistry and only transitioned to programming after some years of postdoctoral research, so that's slightly unusual. But I can do better: there's a stack of old resumes in my drawer from the people I interviewed over the last couple years (for a senior programmer position in an investment bank) and here's what they did for education:
25 Computer Science
7 Electrical Engineering
4 Computer Egineering
4 Mathematics
4 Business Administration (the MBAs all had earlier CS BSc or similar)
3 Computer Applications
3 Mechanical Engineering
2 Operations Research
2 Information Systems
2 Chemical Engineering
1 Software Engineering
1 Machine Learning
1 Biomedical Electronic Engineering
1 Microwave Signals and Systems Engineering
1 High-Energy Physics
1 Physics
1 Mathematical Finance
1 Applied Mathematics
1 Mathematical Informatics
1 Digital Arts
So yes, Computer Science is leading by a large margin, even though professional programming is an engineering discipline, not a science.
Thanks a lot Cubbi for the detailed post! It helps me paint a better picture in my mind.
Computer Science is leading by a large margin, even though professional programming is an engineering discipline, not a science.
Yes, it's always classified as an engineering job even though called a science. I suppose this is because there's a bit of a scientific approach when it comes to programming.
There's no 1:1 correspondence between academic computer science and programming as done in the real world. When a firm looks to hire a new programmer, they don't care all that much for someone who can prove mathematically why a certain algorithm is better than another, but rather they're more interested in someone who can get stuff done. Some of the skills you'll learn in CS will be near to useless in the real world (for example, recursive algorithms are sometimes avoided because they can cause problems when too many calls are added to the activation stack) but at least what you'll learn in CS will give you a different point of view on how to tackle the problems you'll encounter once you find employment as a programmer. Good luck with your academic endeavor!