Frequently, I have budding developers ask me about college and computer science degrees. Whereas most developers I work with have a computer science degree, I do not. I have a degree in astronomy which means I have a very strong math and physics background. The years I spent doing astronomy or physics research required significant time writing software to analyze data. I found myself enjoying the coding more than the research.
This past weekend I was at Rice University attending several centennial celebration activities. I was speaking with a professor from the Computational and Applied Mathematics Department Friday afternoon and the subject turned to the value of a computer science degree. He expressed concern about how much time is spent by students in computer science courses. Further, he commented that these students are fantastic computer geeks and understand the theory of software engineering very well, but struggle with what they are coding.
In contrast, the computational and applied math degree at Rice does not have as rigorous of a course load. Instead, the department encourages the student to pursue an area of interest as a minor or double major where their software and analysis skills will come to bear. I have been preaching this to aspiring coders for many years and it was confirming to hear a professor in a related field share my beliefs.
As software developers, we spend our time modeling some aspect of the real world, not writing code for the sake of writing code. My first job in the private sector was with Origin Systems (EA) working on Wings of Glory, a WWI flight simulator. Later with Eclipse Entertainment, I lead the teams writing the simulator Jack Nicklaus Golf. My math and physics background were my strengths and I was frequently asked not coding questions, but math and physics questions. Economics, finance, accounting, business, and marketing are all great areas of study and can lead to careers developing software for ERP systems, eCommerce, banking, investment firms, etc.
When considering a college education to become a future software engineer, keep in mind that your future career is more applied and less theoretical. The programming courses I took were very useful, but only taught me how to use the tools of the trade. The rest of the courses I took provided the real knowledge I use everyday.