Cool, Science-y Masters Programs For Software Devs?
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."
Have you considered just going for a standard master's degree in chemistry, biology, etc.? You'll probably have to take 4-6 remedial courses, but that wouldn't be the end of the world unless you absolutely can't invest the time/money.
If you really want to do a program that has one foot in Computer Science, maybe something like Brown's computational molecular biology program? It's PhD-oriented, but I'm sure they'd take your money in exchange for a master's degree.
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.
Get a MS in bioinformatics and instead of concentrating on the computer science which you'll find easy at the moment, learn all the relevant biology. And then go back to the national lab.
Or, try physical oceanography/geophysics/atmospheric physics; there is substantial data analysis & software.
But, think about your career path after your degree program.
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.
You wouldn't be valued for your scientific skills much unless you are on the science track which is PhD, and if you want to do science for real that's what you need.
If you can get the job you could try to be a scientific programmer for the very large climate model codes on supercomputers which present substantial software problems beyond what a typical grad student or postdoc can accomplish on their own; that's a reasonable, though difficult career path. That's an application where the software itself is considered valuable enough to be worth maintaining professionally. Problem with this is that it is 100% dependent on Federal funding, and as it looks like Republicans are going to win the next elections and likely eviscerate climate research it may not be a large opportunity.
Are you doing this for your own personal enjoyment or do you want to make scientific contributions (i.e. publish papers in journals and contribute to core ideas). If it's the 2nd there isn't any substitute for PhD.
Get a M.Sc. or Ph.D. in Applied Mathematics. There are plenty of schools that offer it and you might be surprised at how easy it is to be admitted to a program. Some even have an online masters program that makes it rather convenient to complete, like UW Seattle, where I got my M.Sc.
I work at a research lab connected to a large research university and having the M.Sc. definitely helps in getting to work on more interesting projects. The advantage with not having the Ph.D. is there is less burden on you to go find funding. The trick is to become indispensable to a couple of primary investigators that do completely different things to help improve job security. Where I work it is possible for a person with a M.Sc. to become a PI, so eventually if I start coming up with my own ideas, I should be able to work something out and be in charge of my own projects.
887321 = 337*2633
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).
Does having a witty signature really indicate normality?
There wasn't much memorization in law school (now studying for the bar is a different matter). I loved it because law is essentially programming. Both law & software provide a set of instructions that you are supposed to follow to get a result. In law, your processor may or may not follow the instructions, or may not even understand the instruction set that is being used, and moreover each processor's interpretation may affect (i.e. screw up) subsequent processors. In software, your processor does exactly what you told it to, whether you want it to or not. The end result of both is bugs, either leading to re-factoring, hacking, or wholesale replacement.
Leaving aside ideological positions for the moment, Roe V. Wade is a good example. The legal framework from that case was an unworkable "trimester" framework that was subsequently replaced in Planned Parenthood v. Casey with the "point of viability" test, which arguably isn't much clearer (when exactly is the point of viability?) in programming, there really can't be any uncertainty because a processor can't handle it. In law, the entire game is "where to hide the uncertainty." In tort law, uncertainty hides behind the "reasonable person." Want to know what the standard of care is? It is what a reasonable person would do. It is a fascinating study in sociology & logic.
Finally, as a programmer, it is relatively easy to understand. What a lot of your classmates and up struggling with will seem like a relatively trivial set of if-then statements compared to the nasty logic you had to sort through as a programmer. And if you are seeking to either exploit or overturn the existing IP framework, what better way than to understand it from the inside.
My family all seem to be engineers, computer scientists or lawyers. There really isn't that much difference whether you're checking available APIs and algorithms and using them to build software, checking technologies and codes and using them to design a building, or checking law and precedent to build an argument. They all involve abstract thought, concrete outcomes, and an ability to guess in advance how people will screw up, and try to mitigate it. Law pays more, engineering gives you greater variety of work, that's about it.
From scarped cliff or quarried stone she cries "A thousand types are gone, I care for nothing, no not one."
(Sorry if this sounds a little bit gruff.)
$META_SIG_JOKE