Hello,
I'm not sure if this should be posted here. If it should go in the open thread please let me know. I figured this could be an interesting conversation, since many people on lesswrong seem to be programmers.
I am currently researching the difference/ pros-cons of pursuing a computer science degree versus a software engineering degree. By "software engineering" I mean an accredited 4 year engineering program that allows a student to become a p.eng. My understanding is that computer science is more theoretical and mathematical and studies things like algorithms, data strictures, complexity and computability, while engineering is concerned with the practical design,development, testing, and production of software.
I'm wondering what kind of jobs each degree can lead to, and if one is more optimal than the other in terms of:
1) short term salary
2) long term salary
3) promotability (job ladder climbing)
I'm sure there are more useful and relevent questions which I do not even know to ask. If there is anything you think might be a good question that others (or you) can answer, please let me know and I'll add it into the OP.
Thanks!
Job titles can be things pairing off terms like research/computational/computer/software/[domain] with analyst/engineer/scientist commonly. In my experience, most companies learn that it's usually easier to turn an "x" into an "x programmer" than to turn a "programmer" into an "x programmer", so it can be inaccessible to do interesting work in fields that you didn't start in.
One of the most accessible fields for outsiders tends to be biology. Employers include the NIH and federal agencies, state research labs like http://labs.fhcrc.org/compbio/ and http://www.wadsworth.org/resnres/bioinfo/ , biotech firms like Amgen and Stryker, and university research labs. Many problems in biology are not that hard to pick up and the field is short on programmers.
Another field welcoming of outsiders is finance. Working conditions are terrible (high stress, long hours) but pay is good for people with skills. Every major investment firm, actuarial firm, insurance company, etc. is looking for programmers and will convert you to understand their domain well.
Other engineering and science disciplines are tougher to crack, but if you're looking to earn a degree or commit excessive amounts of study, can be great homes. It's hard to get by in fields that aren't desperate for programmers without a really strong intuition for the topic and potentially a really strong background in the right methods and mathematics. Engineering stuff tends to be dominated by defense and energy contractors, from SAIC to Lockheed to the thousands and thousands of little suckerfish companies sucking at the military-industrial complex's teet.
There is some commercial presence to this as well, where companies mostly make software for the above sorts of companies to use. Big firms such as Siemens and Ansys have well-defined roles for software development with domain expertise. Small companies like Enthought and Continuum Analytics need cross-disciplinary thinkers to survive.
It bears noting that if someone is like OP and just starting their career, opportunities such as academia and national labs are open to them if they pursue the right academic path. These can be very rewarding domain-centric programming careers, but are a lot harder to transition to from other careers.
Thanks for your response!
I'm actually in a kinda similar position to the OP in terms of starting my career, I'm 21 and I have 3/4 of a computer science BA. My programming+web development resume is very good, but it'd be interesting to branch out in to other stuff (just lately I've been taking Coursera classes on machine learning and related stuff). On the other hand, money is really important to me (effective altruism FTW) so if a field doesn't have the promise of offering Silicon Valley type salaries (150K-ish being reasonably typical) for a programmer ... (read more)