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
I think a solution a lot of people find is to split their day: they pay their bills with a job they can (just about) tolerate, and then use their free time to focus on their passion, perhaps in a small community (cf. FOSS development).
Also, academia is no paradise either: it's not so much about focusing on what you are interested in, but rather focusing on where there is funding, and where you can find your own niche. It's surprising and depressing how many niches are already filled: it's like trying to find an empty shell on the ocean floor.
I can talk from my experience in Europe. Although you may have the experience and knowledge to do the research successfully; going to grad school will open many doors. You will have access to information about ongoing projects, publications, etc ... And by the way you will fill some possible weak points in your knowledge about the subject.
About technologies; you must be flexible; just know how to program, not on a specific language. Anyway, I recommend you to get to know (and learn to love) Matlab.
You might be happy somewhere like http://crd.lbl.gov/
Village idiot in some extremely smart villages.
If you want to get into scientific research programming with big data, you are probably going to have to engage with statistical programming. R is probably the lang of choice at least in the biological arena, due to FOSS and all the prebuilt packages. People also I've seen using Matlab quite a bit, but I think you wouldn't go wrong with R. You might also want to get engaged in something like Kaggle or the DREAM challenges, build yourself a bit of a profile on those arenas, and eventually try to team up with some guys on one of the challenges there, as a way of making contact with people in the big data research area. Any graduate training (postgrad as it would be called in Europe), would only help - there are many positions that just won't be available to you until you have had a 'research training' which means Masters as a minimum or preferably a PhD eventually.
Korma: Good
The NSA do all kinds of interesting mathematics. Betterment of humanity though? Eh...
systemd is Roko's Basilisk.
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...
Depends on what level you are working at I guess. If you want to directly write the code that does science, then yeah analysis languages like R are quite useful. However, you can still support science and be involved in scientific programming without writing a line of code that applies only to science.
My advisor in grad school's biggest contribution to scientific computing was designing and implementing(with some outside help) a distributed, POSIX-compatible file system specifically optimized for the sorts of access patterns that are common in science. It's written entirely in C and you don't need to know a single principle about nuclear fission to help out. To the OP, if you have a solid background in science, then maybe going to grad school for a science may be useful, but if not catching up is going to be a bitch....I would recommend going to grad school for CS in a field such as distributed file systems/computing, parallel computing, gpgpu etc that can be used by science, but for which you don't have a to have a background in science in order to make a meaningful contribution.
Monstar L
How about looking at universities, and specifically fields where there is a lot of good to be done but aren't 'natural' homes for programmers? e.g. Life Sciences, agriculture, biology etc.
Separately, there are all the @home projects, which can always use programmers (and do occasionally recruit from amongst their contributors).
All your ghosts are just false positives.
Welcome to the club. Now get back in line. :p
Seriously though, I think, with the exception of the "Alex P. Keatons" among us, virtually all programmers would rather work doing some sort of pure research for the betterment of humanity, than helping some sycophantic management team please the board/stockholders for yet another quarter.
Reality of the situation, though, you (and I, and all of us) have chosen the very same thing you claim has disillusioned you. You have chosen to want a paycheck. Make no mistake, for every one software engineering job position you see posted, you can find a hundred good causes that need volunteer coders. Except, good luck getting a steady paycheck if you go that route - Short of actually becoming a professor, you very much need to treat it as an act of charity.
Which leaves you to ask yourself: Can you really afford to live without a paycheck? If you can't answer "yes" without hesitation, hey, they don't call it "work" because we go there to have eight hours of fun every day.
As a compromise solution many of us have taken, do your good deeds on the side. Get that paycheck, and put 10-20 hours a week into a FOSS project, or helping the local foodbank set up a useable LAN from their pile of 15 year old mostly-DOA donated junk, or if you still have a few "in"s at your university, ask a few of your favorite non-CS professors if they have any projects that could use your skills (almost all of them do). But make a living first and foremost.
I work at a large research organization. I'll tell you how it is here, it will be similar at other places:
* We have research staff and non research staff (lawyers, personal assistants, software engineers, ...) ...
* All research staff must have a PhD in the field of their research position. I.e. if you want to do research, do a PhD first.
* Software engineers don't need a PhD, but we require a bachelors in IT or equivalent experience.
* Software engineers assist in research, but do not lead it. I.e. you don't get to work on your ideas, but on somebody else's. Still, it's research and some of it can be argued to be for the good of mankind.
* Almost all research is not as exiting as it is cracked up to be. Direct connections to the good of mankind are very rare.
* Most research projects are very small and you may be the only software engineer on it. Not all software engineers work well in such an environment.
* Most software you produce is very alpha and never gets further (run once, point proven, let's move on). This can be frustrating and also bad for your CV since you can't really claim you shipped a product for real customers.
* Work is not different than interesting jobs at industry such as IBM, Microsoft, Google,
* These days the research world is very financially obsessed, and research projects are most of the time determined and restricted by what your group can get funding for (rather than what is for the common good).
I can tell you that with out a PhD, your are viewed as little more than a trained chimp. Masters in both CS and Applied Math seemed to mean nothing, the fact that these so called doctors were incapable of writing more than 4 lines of intelligible code was beside the point.
It was fairly annoying, and none of my work is cited in their papers.
I am very small, utmostly microscopic.
Three words: Math, math, and math.
If you don't have the advanced math skills, your use to a scientific research effort will be limited.
Cloned foods give the statement "We had that last week!" a whole new meaning.
Consider climate research. In the US that might be NCAR or GFDL. Lots of FORTRAN but newer languages common, too. Use applied physics. World Class supercomputers. Parallel algorithms. Lower pay scale. Some, not all, scientists pigeon hole programmers and look down on them.
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.
There are definitely positions at the Bachelor and Master level (In Comp.Sci or equivalent) at universities and research institutes.
Also don't forget large oil firms and the like.
There are two types:
- Scientific Programmers: Those that work on implementing, scaling and optimizing algorithms for number crunching purposes. Knowledge of the specific field is certainly an advantage here.
- Generic Programmers: From lab automation to webpages, database backends, archives and various other things that organisations need to do their work.
It's hard to get a permanent contract though, as a lot of the funding is on projects for 2-5 years.
Job adverts might be on the sites of the organisations themselves and sometimes the employers have a combined website. In the Netherlands there is AcademicTransfer for example, where all publicly funded research organisations pool their job adds.
RogerWilco the Adventurous Janitor
I worked as a research assistant for a professor for six years. It was a great job. The most rewarding part is that I worked on lots of different projects and most of them were cool and intellectually stimulating and fun. It was also fantastic going to conferences and presenting work. You can really push and challenge yourself. It feels a bit like working in a startup. Each professor has their own team and budget and grants and publications, so its like being part of a small company, except that there is a big institution providing backing and benefits. Will your work change the world to be a better place? That's often not so clear cut in academia, but it is certainly a tremendous opportunity for growth and development, and there is demand for computer programming in research.
Professors tend to be incredibly busy so they are looking for self-starters, people who can just get on and contribute without lots of supervision. If you want to get into this area of work, more than academic qualifications, what you need is to demonstrate your own ability to make things. Demo or die. For fields like bio research there's lots of use of small sensors and data capture devices, so one suggestion is to make your own Arduino or Rasberry project, to show that you can come up with a cool idea and have the passion to see it through from start to completion.
Academia is a two tier system, professors and then everyone else. Professors have full control over their research efforts. Researchers don't. After a while as a researcher you will start having your own ideas about where you think the research direction should go, and then you will encounter a glass ceiling about how far you can take this. There's no real career advancement path, so at that point you are stuck.
To address this, make it part of your plan from the outset to enroll in a part time degree program while you are working as a researcher. Most universities offer tuition remission for employees, so as you work you can also get a degree for a heavily discounted fee. Its an entitlement in many full time research assistant posts, but make sure to check this before you start. Any professor you would want to work for will immediately agree to help you figure this out, especially if the degree you want to do is in an area that is relevant to the research. That degree represents your exit strategy, either into full academia, or into a job beyond it, don't procrastinate.
Wow, makes me wish I was starting all over again!
So get an MS in Geology. You will find:
1) you will be supported. I.e. people in the department or even unrelated departments will hire you as a student. They do it partly because they need your skills, partly because they truly want to see you succeed, people in academia like to see people succeed, and partly as a of self interest; if they hire you then if one of their students needs a job your adviser might hire them. Sort of a mutual support mechanism as well as professional courtesy. But what you will get is a well rounded education, references, and something for the CV.
This is based on my experiences. I never went without a job while pursuing my MS, and had a job when I graduated.
Also, I distrust anyone programming in a technical field like Geology without background knowledge. Sure the person might right great code, but is it the *right* code? Without domain knowledge they may go down the wrong road.
The sciences need great programmers. I had a great experience doing it. So go for it.
putting the 'B' in LGBTQ+
The scientific community is really coalescing around Python. I started working at UCSD-SIO in 2004 and sold my whole team on Python. In that time I've seen Python emerge as the accross the board standard in most research institutions. Although there's still heaps of legacy code written in Perl, C, Fortran, tcl, tcsh, insert language here, and there's always the holdout who will keep writing matlab code until you pry it out of his cold dead hands, so being a multilinguist helps.
You see some programming jobs related to seismics (which is a branch of geology) pop up here from time to time http://www.iris.edu/hq/employment
You'll find some oceaongraphy related programming jobs pop up here from time to time. Note some of them require going to sea. You'll find marine geophysicists do a lot of seismics and geology: http://unols.org/jobs/jobs/index.html
-73, de n1ywb
www.n1ywb.com
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).
If your goal is to contribute to the "betterment of humanity" then I suggest you join the open-source community. You can probably make a bigger difference in that area then to try and find a job in the scientific community. It also sounds like your current placement may not be the best fit. Look for a job in the IT department of a University or at a company that embraces Open-Source. For instance I work at Novell, sister company to Suse Linux and the "corporate culture" is very different from the Insurance company I worked at before. Suse strongly encourages involvement in the open-source community. I think you just need to find a job that fits your personality better. Lucky for you, demand for good software engineers is high.
Comment removed based on user account deletion
Awwww, to be naive and idealistic. That is what I thought!! I have worked for the big corps, and yes they are evil but then they don't pretend to be anything else. They are out for the money, period. I thought ok I will endeavor to work for the greater good being a programmer at a cancer research center in the NW. OMG, what an eye opener that was. Worked there for over four years. Guess what, researchers only care about money!! They will do anything and everything to get and keep their grants. Backstabbing other reseachers is the norm, they might get the grant instead of me. And I mean anything. I went to upper management to complain about a researcher fabricating data, two days later I was told I no longer had a job. Another very attractive lady complained the researchers was grouping her. She complained to upper management. She was axed!! Turned out the reseacher had multi-million grant, protect the $$$. I ran into her after she was fired. I was still working there. I told if she wanted to take them to court I would be glad to testify in her behalf. She said she just wanted to be away from the hell hole. And it gets worse. Lying to patients about treatments that got them killed. IT WAS AND REMAINS THE EVILEST PLACE I HAVE EVER WORKED!! Sure the are some good researchers but there are a hell of lot of the kind above in comparison. It's really sad. The major disappointment of my career.