Cool, Science-y Masters Programs For Software Devs? 150
An anonymous reader writes "I'm an early-30s software engineer with 10 years of development experience, and a BA in computer science from a top university. I've been working for several years at a national lab in bioinformatics, but I'm starting to wonder what other interesting directions there are to go for people in my boat: computer science majors with software development experience. The goal would be to find a position that could leverage my development skills, but also include a strong research component, without the need for a Ph.D. (I would be happy to get a masters for the right job.) I'm actually getting some of those things in my current job, but I'm ready to move on to new or different areas of research. Possible fields that seem interesting so far: neuroscience, economics/sociology, and AI. I'm happy to work in a team in support of Ph.D.s, but would like an active part in the research end of things as well as the tool-making end."
Law School. (Score:1, Interesting)
Just graduated after 9 years as a software dev. It's a cinch as a Dev, it is interesting, and tremendously useful.
Computational Physics (Score:5, Interesting)
I'll cast my vote for computational physics. As a physics grad student myself, I find myself writing and reviewing code for simulations. And you don't need a phd to do this.
If you get any sort of training in computational physics you could be invaluable. Computational physicists are in demand in almost all fields: nuclear, atomic (simulating system-bath interactions), high energy, biophysics (protein folding sims), astrophysics, etc.
In my department, we have collaborated with the cs department in writing software for some of our sims.
Applied math? (Score:3, Interesting)
Re:Law School. (Score:3, Interesting)
Neuroscience (Score:4, Interesting)
Computer science and neuroscience really go hand-in-hand these days. There's a great deal of research being done from the modeling of just ion channels to the modeling of entire cells, to the modeling of large-scale brain structures.
My personal belief is that software, based on neuroscience principles, will become an important area of software development for writing intelligent systems. Systems that can effectively recognize voices, faces, or interpret language, etc, are natural targets. Imagine a stock picking system that reads news stories and factors in emotional content into its picks (after all, let's face it, since the internet made stock-trading more accessible, emotion plays much heavier into the market). Systems could be designed that could monitor financial transactions to find and identify novel types of fraud. In astronomy, because of the number and quality of images coming in, one could create systems that could intelligently view the volumes of images and identify and catalog new objects.
Really, it's an area that's wide open to possibilities. But to understand how to properly piece together the types of artificial neural circuits to accomplish this kind of functionality, one would need a fairly good understanding of how the various circuits in a human brain connect and interact and how they are used to process information (we already understand a tremendous amount about this and we're learning more all the time). Really, neuroscience seems to me to be the new computer science. It's where some of the most amazing advances are being made in science today, in my opinion.
But it is just my opinion and there are lots of other possibilities. I'm definitely enthusiastic about this..
Work as an RA for a while? (Score:4, Interesting)
Pick some university department that you think aligns with your interests. Get a job as a Research Assistant or Associate. Take as many courses you want in whatever you want, without regard for whether they make a degree, while you're supporting and being part of a strong research program. If your selected courses look like some existing degree, go talk with the department head to negotiate what would be needed to convert your work into a degree. If not, negotiate an "interdisciplinary" degree with the dean's office or just live comfortably with the course credits but no degree.
You'll make less money than in industry, but that'll be offset to some extent by free tuition. Meanwhile, you'll have unlimited opportunity to explore while you "work in a team in support of Ph.D.s" and have plenty of opportunity to play "an active part in the research end of things as well as the tool-making end."
It depends (Score:5, Interesting)
As a Ph.D. student in statistics with a masters in CS (mainly machine learning and AI), here's my few words of advice:
First, some masters programs are aimed at research masters, and encourage you to incorporate a strong research component to your degree, and some are more "predictable" and classroom based with smaller, more defined projects. The master's program I did at UBC - - University of British Columbia -- was heavy on the research; we took 1 year of classes and then 1 year of research. They also have a strong machine learning and AI program, which I thought was very neat. If you pursue that direction, contact me directly and I'll give you the inside scoop. Other programs may have similar research tracks, but many don't.
Second, it would really be the particular professors you end up working with that will shape your experience and how much you develop your software skills. You can learn about what a particular research group or working group is like from the websites of the professors involved and what sorts of paper and software they've published recently. I would highly encourage you to contact such professors before you apply to the university; the university admissions process is more about keeping bad people out than making sure the absolute best get in, so there's a lot of randomness in the admissions. Having a professor say "I'd like to work with this person, he'd be a big help to my research, can you let him in" usually means you get in unless the department doesn't think you could succeed. And, frankly, any professor would love to have a great coder on their team; many people without job experience can be bad coders.
Finally, if you are math inclined, and want something that could vastly help you in the job market, I'd consider doing a statistics degree. Statistics is pretty ubiquitous -- machine learning, AI, etc. are really just sexy names for statistics (yes, there's some more algorithms thrown in the mix, but the underlying theory is all statistics), and it also comes up in pretty much every other field as well. If you go to a strong research university, it's likely that you'll have opportunity to do research in a ton of different fields; I'm now at the university of washington in the stats department, and half the professors are joint with another department like economics, sociology, biology (there's a strong biostats department too), etc. I joke that it's the degree program for indecisive people, since it doesn't really limit what field you end up studying in. (Of course, not all stats programs are like this, but UW is).
Re:Neuroscience (Score:1, Interesting)
I'm studying for my PhD in Computational Neuroscience currently. I studied for a BSc in CS from the institution previously (and a BSc in Psychology prior to that). The Computing Department I am in does not have a Neuroscience speciality... lots of work on ANN's, expert systems and other Cybernetic/AI topics... But only one individual looking at anything more than point/concept Neuron models (2 with me now). Specifically I'm looking at Compartmental models, and population responses and the role of Noise in Neural Computation... but I'll probably be shifting a little to look at Ion channels and their interactions and dynamics.
But, to get back to the point... Yes, an institute with a dedicated Neuroscience department, or a serious specialisation for Neuroscience in Computing or Biology depts (or similar) would be good... but it isn't necessary. A single supervisor is all you really need to get the PhD off the ground. And maybe access to some good, parallel Hardware... those Compartmental models can be CPU-time hungry.
You'd be surprised (Score:5, Interesting)
Re:Computational Physics (Score:1, Interesting)
I'll cast my vote for computational physics. As a physics grad student myself, I find myself writing and reviewing code for simulations. And you don't need a phd to do this.
Perhaps not in physics, but you ought to have a very thorough training in numerical analysis (i.e., not just one course or two). Like the OP I work at a national lab (as an applied mathematician). I find there are way too many physicists working in isolation that think "numerical recipes" is extent of what they need to know to do computational physics, and not surprisingly, poor-quality numerical (and scientific) code is often the result..
Re:Computational Physics (Score:5, Interesting)
Re:You're already doing it. (Score:3, Interesting)
The problem is that you start to do all the real research after the masters, and everybody else is a PhD student/postdoc. And unless you want to get paid like a PhD student (unlikely since you're at a national lab and making much more $) it would be very hard for a research group to afford you. If they do have the money for a professional programmer (very few do these days) they'll want you to do the programming stuff that the grad students don't want to do (or don't have time/expertise). Even if you can program better than the grad students, you won't be appreciated in an individual research group because the essential purpose is scientific creation and the valued artifact is publishable scientific results, not an enduring software system.
I've got to tastefully disagree. I am a professional programmer, I am on a masters track, I get paid like a PhD, and I do the research of a PhD. A PhD is simply part 2 of my research, if I choose to do it. If there are no universities in the USA that can afford you, then come to a Canadian University (University of Waterloo, University of Toronto, University of British Columbia) . There is lots of research money up here. We have produced as much research and development as any country in the world (satellite and radio communications, Canada Arm (NASA's robotic arm), lots of other rover technology, etc).
Operational simulations (Score:2, Interesting)
Computational physics is indeed a very good choice. I'll go a step further and recommend any field where modelling is done in an operational setting, i.e. meteorology (weather, tornadoes, ...), aerosol physics (volcano ash!), oceanography, etc.
Often the difference between developing simulations just for research purposes and developing them in an operational environment is code quality. Mission critical code must be more rigorously developed, which means that there is more opportunity for CS majors to apply their software engineering skills to practice. Also funding for operational work tends to be more stable than research grants, since there are more immediate benefits to society.
There are, however, also opportunities to do research. I have a MSc in computational physics and in the few years I've worked with operational model development I've continuously had opportunities to participate in research papers. The PhD's I've worked with always seem appreciate my contributions, I have plenty of work to keep me busy and I learn exciting new stuff about nature every day.
Re:You're already doing it. (Score:5, Interesting)
Outstanding advice. I have a BS in bio and an MS in CS plus 20 years of experience, 80% in R&D (supercomputing/sci programming, DoD C^4I, AI). Presently, I do medical image analysis R&D in a giant pharma. My experience confirms mbkennel's advice. But I would avoid scientific programming. It's a support job that leads only to more of the same. You will likely work beneath postdocs and remain employed only as long as long as your current project remains funded.
More generally, without a PhD you will never lead an R&D team. You will always be a subordinate. This is worst in pure sciences, in academia and at large east coast corporations, and probably best in engineering and at small startups.
My recommendation: look at jobs in bioinformatics (or even comp. bio) that 'require' a MS. Talk to others who are working in such a role to learn whether they really are in a leadership position (and not just extolled the potential of one).
Also: consider a MS in one of the engineerings -- EE, ME, Mat Sci, or Eng Sci. Then find work in industry. Licensed professional engineers are recognized by most for-profit employers as first string players and team leaders. The folks who lead engineering teams, no matter how large (like space shuttles or 787s), usually are pro engineers w/ MSs, and not PhDs. The exceptions are, again, east-coast giant corporations who are more afraid of failing than excited about winning.
Finally, avoid a degree in the sciences unless it's a PhD + postdoc(s). There's a perpetual glut of PhD physicists (and soon, chemists & biologists). When competing for a science job, a MS in science will lose out to these folks every time (since the project manager will also have a PhD, and will see you as 'one of *them* and not 'one of *us*').
Re: my MIT classmates do software; none majored in (Score:1, Interesting)