Ask Slashdot: Scientific Research Positions For Programmers?
An anonymous reader writes "I recently (within the past couple years) graduated from college with a bachelor's degree in Computer Science and currently work as a programmer for a large software consulting firm. However, I've become gradually disillusioned with the financial-obsession of the business world and would like to work for the overall betterment of humanity instead. With that in mind, I'm looking to shift my career more toward the scientific research side of things. My interest in computer science always stemmed more from a desire to use it toward a fascinating end — such as modeling or analyzing scientific data — than from a love of business or programming itself. My background is mostly Java, with some experience in C++ and a little C. I have worked extensively with software analyzing big data for clients. My sole research experience comes from developing data analysis software for a geologic research project for a group of grad students; I was a volunteer but have co-authorship on their paper, which is pending publication. Is it realistic to be looking for a position as a programmer at a research institution with my current skills and experiences? Do such jobs even exist for non-graduate students? I'm willing to go to grad school (probably for geology) if necessary. Grad school aside, what specific technologies should I learn in order to gain an edge? Although if I went back to school I'd focus on geology, I'm otherwise open to working as a programmer for any researchers in the natural sciences who will take me."
The term is usually "research programmer" or something similar. However they're often time-limited positions rather than indefinite. A common arrangement is that a university gets a big grant, and needs to bring in some extra programmers to help out on the project for the ~3 years of a typical grant. The best-funded labs do keep some programming staff on semi-permanent payroll, though, because they always get a new round of grants before the previous ones run out.
I'd just start looking at job listings in the area you care about and see what skills or experience they ask for. Familiarity with data-analysis tools is often a plus, e.g. be conversant in R, be able to make some nice visualizations of data, etc. But that's only one area; there are plenty of others.
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
To be blunt, yes, that seems to be a large component right now. But data mining does not necessarily mean spying. Of great interest to a lot of agencies is mining publicly available information streams (news articles, tweets) for trends and patterns.
I reckon academia is heading towards hiring more programmers. We often have research grants where one of the employed researchers could be a statsy person with publications in the learned journals, or a computery person with lots of stuff shared in github and contributions to open-source projects and so on. The prof as PI on the grant is impressed by the former, I'm (as CI) impressed by the latter. Currently we tend to favour the statsy people, and they are often very poor programmers with little knowledge of version control, testing, Makefiles, awk, all that nerdy stuff that could make their life simpler. So I teach them...
I can only really talk confidently about statistics here (sample size = 1) but I know a bit about other places. University College London has a Research Software Development Team, for example: http://blogs.ucl.ac.uk/research-software-development/ and the whole development of programming skills for researchers is being pushed by the SSI (software.ac.uk) of which I am a fellow.
You might also want to look at Software Carpentry, a programme for training researchers in programming skills - there may be opportunities there.
So currently there's a few opportunities, but its getting better. A final thought though - you want to leave "the financial-obsession of the business world and would like to work for the overall betterment of humanity instead". Hahahaahha rofl. Academia is just as financially-obsessed as any trading house. I'm spending today doing paperwork for expenses claims, travel, grant proposals... Its all about the money... Oh do I sound disillusioned? Okay, I have probably stopped some people catching malaria, but not today...
I recently shifted my career from microbiology to systems biology. The thinking end of biosciences in the UK is becoming dominated by computer science. Data analysis, modelling, simulation, and subsequent hypothesis generation are increasingly being given to computer science over biological sciences, who have allowed themselves to drop their numerical / analytical abilities. Linear algebra and quadrattic programming for skills such as flux balance analysis are hugely lucrative in biotech start-ups modelling metabolism. I think ordinary differential equation modelling of biological interactions isn't going anywhere, but statistical modelling for clinical trial design using non-linear mixed effects modelling is enormously lucrative. Optimization for data fitting is also a handy skill set to drop into these as well. Statistics, maths, and computer science graduates going into clinical research organizations can expect to earn 3x the salary of a biosciences graduate going into a lab, and the availability of jobs is significantly higher. Typically they're asking for programming skills in C, Matlab, R, Python, and Java. Bioinformatics roles mining databases is Java, Perl and R and involves database design and graph theory. Modelling and simulation is all C and Matlab, with Python gaining popularity over Matlab due to cost. I've used Mathematica a bit, but Matlab for most. My colleagues all code in Matlab, R or C. Image analysis is also becoming important as high throughput phenotypic screening is in vogue. The people I know in this area are using tools like Matlab and Definians. You will need a PhD in computer science to land the big paying jobs in pharma, and the PhD research will need to be based on biological data of some sort, but the association can be very loose as long as you can code and pick up basic biology along the way. Alternatively, a solid portfolio of projects is also tempting industry due to the lack of skills on the market, and could supplement an M.Sc instead of investing time in a PhD. Personally, I'm seeing a golden age for computer science and maths graduates earning £40-60k straight out of a PhD. Wet lab scientists are starting £16 - 23k, and are increasingly relegated to generating data for computer scientists who are leading the projects. If I had my time again I would train in computer science and see if I could get into the statistical modelling for clinical trials. Do that for a few years, then go freelance and watch the money roll in.
Unfortunately, research groups that use R are often unwilling to commit the time and the expertise to their programming needs. R is a decent enough language, but it scales very badly with problem size and architecture complexity. Thankfully, plenty of other research groups have committed to using C or Fortran, with drastically better results. Those C/Fortran groups will be much nicer for an trained programmer to work in. My main point is the difference in work environments. An R lab will give you a lot of headaches because your coworkers may not understand a lot of important low-level programming issues. Plus, your work will grind as your problem complexity increases -- and that's always frustrating. A C or Fortran lab will be more likely to be understand any programming issues you bring to them, and you won't have that complexity ceiling constantly looming over your head. (This is based on my experience as a scientific programmer for the past 10 years).