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."
... geology isn't a real science!!
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.
Very often scientific research implies the need to do some programming. But in most cases, science comes first, and programming is a secondary (although often a crucial) skill. If you like to do science, go for a grad school in science (look for what science would you like to contribute to), and your programming skills will be in demand -- sometimes!
I suggest gaining more experience by joining or creating a friendly open-source community (focused on scientific computing, e.g., vtk.org, itk.org, slicer.org, paraview.org) and learning the ropes. Or as you say joining a research organization in the capacity as a junior programmer, or graduate student. Software skills are important but what might be more important is technologies, since programming languages come and go quickly. For example, understand how to basic 3D graphics works, and then study implementations on GPUs. Or learn algorithms for high-performance computing and then study tools like MPI or Boost to understand implementations.
You might be happy somewhere like http://crd.lbl.gov/
Village idiot in some extremely smart villages.
I just completed a job search looking for basically the same kind of jobs as you as someone with a Ph.D (in physics, so slightly different, but still), and it seemed like there was a *lot* more out there for someone with only a BA/BS or masters and a few years of job experience than for someone straight out of grad school. The issue might be where you're looking for jobs. The DC area has tons of research positions, most supporting the federal government in some way (more than just defense contractors, and defense contractors do more than just design weapons). The federal government (especially the intelligence agencies) also advertise openings for people with your background and interest.
Go work in a startup instead. A successful startup will affect the humanity faster than most successful researches.
Well, You also could work for an investment bank, get the big pay checks and continue working out your plan while doing it :-P
;-).
Seriously, have ever thought about going for an academic career? What I have seen is there are many people in organisations who are stuck in their jobs. This is mainly because their monthly fixed costs are high and they don't have a clear plan what they want to do with their life and how to finance it. Until you've figured it out I would suggest sticking with your current situation - or go for a job in an investment bank
You might not like business or its obsessions but it is a vital institution.
Without it, who would pay for the universities or the scientists? Business pays for it all one way or another.
It puts the food on your table.
The heat in your home.
The electricity in the wires.
The clothes on your back.
The fuel in your car.
Everything.
Its about as vital to human society as your digestive tract is to your body.
Is the excrement that comes out the far end the most glamorous or sweet smelling thing ever? No. But it is vital.
And that obsession is merely the hunger pangs of the stomach. Does it ever stop? No. It is an ongoing need.
Why does the scientific community not care as much for such things? Because to a great extent they're shielded from it. That said, they aren't totally shielded from it. Most of them have to pitch grant proposals. The old "publish or perish" imperatives of their trade.
Best of luck gaining entry to the Ivory tower, friend. But know it was built by everyone else on our dime. And whatever glories or accomplishments achieved by academia... they did not happen without sacrifice from the rest of society.
I've decided to stop wasting my time responding to AC trolls/sockpuppets... so if you want a response from me... login.
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.
Pro-gramming is science now?
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
The big and fun geoprocessing tasks where you get to really dig into the data in my field are related to geophysics or geochemistry. Both of which are probably grad school level specialisation stuff before people start to take you seriously. It's not that you're unable to do it, but you'll have a hard time convincing someone to give you a chance based on an undergraduate degree in geology. There are quite a few small companies trying to break the hold the larger ones have on software and as a user, I love being able to afford the software to do my job.
If you want to dip your toes into the geo whatever software world then look around at companies (some may even do open source) that are actively developing petrophysics / geophysics / modelling software. They're probably really interested in someone motivated enough to want to do interesting work and it's in the field you're interested in.
I've been looking for someone with your skill set you two years plus. Generally I only get programmers with tons of experience that I cannot afford to hire or flakey, drop out types who I end up firing after two months because they don't care / don't show. My group is a computational biology group, so if you are interested in that field there should be plenty of positions.
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.
First comment from me, is that this is a laudable goal, and OP has my respect for wanting to help the world.
Second comment is that, from my limited (Electronics, Integrated Circuit Engineering, Machine Vision/AI) experience in academia, most of the research there is commercially driven, either because a large corp has come along with a wad of money and asked the institution to research something specific, or because the institution has an eye toward commercially applicable research, via patents on something or through a commercial enterprise linked to the research institution.
I definitely think there are options for OP to get into "pure" research, and the way I would go about it is to get into one of the Graduate Research programs (Masters/Ph.D) at an institution that is doing something interesting and where faculty staff make positive noises about retaining post-grads as research fellows, and then make it clear that I am interested in staying on as a research fellow after finishing the program. It might work, or it might not. Also, research fellowships are typically not a long-term option in my experience, being 2-3 years or until the money runs out, whichever is shorter.
Then, you get companies like Google (with their 75/20/5% time split for working on core, off-the-wall, and personal stuff) or Intel (who do a lot of research, but again, commercially-driven). :)
The days of Bell Labs and their almost pure "research for the fun of it" are pretty much gone... you can find a bit of that spirit in a lot of places, but it is typically one of the first things to be cut when the company and economy are doing well, and one of the last things to be started/supported when things are picking up. So now is probably not the best time to be looking for this kind of opportunity
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.
Most jobs are for the betterment of society, or at least the customer, if you choose to focus on that. Anything in the food industry is ultimately about feeding people, for example. So if it's being of service that's important, you can bring that attitude to most jobs. You can also be of service to your coworkers. If you make it your goal each day to help your coworkers have a better week by serving their computer needs, you're making that part of the world a better place.
Most of the time being of service isn't "fascinating" though.
Few jobs are fascinating after you've done them for a few years.
Fascination is largely the realm of the amateur.
I have a "boring" government job, but we use free software.
As a programmer, I spend half my day contributing to the OSS software, so that's a service to society. Any organization using FOSS might offer that.
If you are young and you want to be in academia, you want a PhD. There are any number of research assistant roles with loser criteria but you will forever be near the bottom of the hierarchy. If you want to find something and you know people, sure they might bring you on but they will never be able to guarantee you anything steady. Do a big data geology thesis and the people who are interested in your research will become known to you. You will have an advisor who can help place you ....
Look for jobs in geophysics not in geology. Geophysics, in particular seismology related geophysics, is more numerate than geology and utilises software (and hardware!) for pretty much every task. Good geophysical software makes the difference between a successful exploration/production/consultancy/software company and a failure. Most companies will hire good computer scientists, mathematicians, physicists, etc as programmers, data processors, etc without any geological background, though of course it helps. Some service companies you could look into are CGGVeritas, Fugro, ION, DUG, as well as the major and minor exploration and production companies.
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.
If you can build tools to analyze unstructured data, then you can write your own ticket. Getting in is the hard part. Go for a fellowship/internship. It is very difficult to get through the office of personnel management. The only downside is being surrounded by doctors that probably should be using a typewriter. I once asked a co-worker what version of windows he was using and the reply was, "office."
A friend of mine is a computational chemist. He comes from a chemistry background, but has for some years now been writing software for simulating cell receptors to help find matching proteins for them. He's even part authored 3(?) books on KNIME which is written in Java. In his experience skilled programmers with maths knowledge are hard to find in the field because most come from a chemistry background rather than a computer science background.
That seems to be good match for you.
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.
From reading your post, I saw myself a few years back. After working a couple of years in industry I quickly learned that I would rather apply my skills to more than just making some guy rich. Luckily, I managed to score at job at CSIRO (Australia's governamental research institution) as a developer - and it was awesome and fulfilling. After a few years I had the opportunity to move to Europe, and in wanting to stay within the research domain, I started a PhD at SAP. From my experience so far I can say that, as mentioned, finding stable development work in research is very difficult - these institutions rely on external funding to operate and they have little control over that. But, if you are willing to deal with the uncertainty of 3 year contracts, it's totally doable - I would say try to find a position in a major institution so that even if funding dries up on one project, you can sell yourself into other projects. Another thing that I would stress is think *very* carefully before taking the PhD route - this is NOT development work and the is so much in the periphery (working on unrelated projects, TA'ing, trying to get a hold of your professor, writing/presenting papers) which seriously departs from the simple pleasure of building something and making it work. Even in the case of someone who is passionate about research, has and loves a topic, PhDs make for a pretty miserable existence. Unless you want to become and academic, I would suggest sticking to the developer route. Good luck!
My own career has been mathematical modelling in the life sciences - health, medicine and disability research. My background was computer science, but my employment has been in medical research groups. The best job I ever had was a research studentship, when I did my own research for a doctorate - it is like being paid to play, and congratulated when you have the most fun. Employment prospects are good, especially if you can work irregular, contract and part-time elements. Some really enjoyable elements (like university research) are enjoyable, poorly-paid long hours. Other elements (like certain big data companies) pay obscene daily rates for solutions that take minutes of real effort.
The actual computer languages are fairly irrelevant, but you must have database skills, the ability to drive (preferably scripted) statistical analysis and competent independent problem-solving. You need some evidence of each of these, perhaps some certificate of training in SQL, some course in SAS / R / JMP and some course in a computer language, or alternatively a completed piece of work demonstrating your own achievements in each.
I would recommend some analytical mathematics skills - statistics, discrete mathematics, optimization, non-linear dynamics, econometric modelling - whatever fits with your chosen area. You need to be able to hold your own in a discussion of the technical issues to be resolved. Very few people have practical mathematical skills or working knowledge of statistical design.
(I am a Ph.D. student in a high-ranking U.S. university, things may be different at other tiers and are definitely a bit different in Europe. This perspective is based on what I have seen working with chemists, physicists, biologists, materials scientists, electrical engineers, and research groups in my time)
Academia the wrong place to go looking. The whole system is structured to train and the kick out self-sufficient scientists, so part of the process is learning how to program enough to get through the basic tasks of experiment automation. For most people this involves cobbling together some hasty LabVIEW code, but even if you strive for something more general the result is ultimately not all that useful for anyone not doing your exact research. In the few cases where you can write something ``general,'' odds are that your audience only expands to a dozen people in the world.
Another part of the dearth of academic jobs is related to the self-sufficiency part. Most PIs are not interested in hiring non-doctoral (pre or post) scientists because the output of this person has to justify the cost of a graduate student while returning none of the research that would actually bring in such money. This is also one of the reasons why you rarely see lab technicians in the U.S., where the task of maintaining hardware is typically given to a graduate student who can devote a few hours here and there to making sure everything works okay. Programming follows the same sort of path, since it is evident that most projects require little long-term attention and can be thrown together well enough in an afternoon or two. This code is rarely beautiful, but it technically works and that is sufficient to go make the measurement, which is really all that matters.
(disclaimer: I actually have spent a couple of months writing ``real'' software for my projects, since there was a generic need both for me and the field. These opportunities are few and far between in the physical sciences)
If you want to do research-type programming, go try JPL, NREL, or a related institution. These sorts of places have actual long-term projects which require actual software-engineering type design and support. They are also much more accustomed to the idea of hiring technicians (as a programmer, this is how you are going to be seen, since you are not a Ph.D. scientist), and slots may exist. That being said, I have heard horror stories of the Ph.D.-produced code for some of the critical systems at such places, and you may end up being thrown at horrid legacy systems. At JPL at least I hear the culture is shifting toward streamlined, more modern and modular code, so maybe there is an opening there.
Another option would be to work for a small scientific company, like Princeton Instruments. In my research, we often work directly with people from such companies to add custom hardware and software features, and they often have plenty of internal research which is quite interesting if very industrial.
If you do go to grad school, have a very specific goal in mind. Going as someone who wants to do scientific programming may be all right, but it will never get you through the Ph.D. process, let alone get you a job afterward. You have to love your research, because it will fill every waking hour for several years of your life.
As far as technologies, I have seen a range of languages: C, C++, C#, Lisp, Pascal, Delphi, Python, Matlab, Mathematica, LabVIEW, Java, ... You also spend a lot of time communicating with scientific hardware, so being able to do communication with devices over RS-232, GPIB, and USB (raw binary or plain ascii) is something you would have to pick up. Otherwise, the real key is understanding exactly what is needed for a particular project, at both the scientific and programming levels.
It sounds like you want to work with a scientific group as a programmer, not be doing your own independent research. If this is true there are a variety of positions out there. My experience is in life sciences and imaging. There are research institution like the Broad Institute http://www.broadinstitute.org/ or HHMI Janelia Farms http://www.janelia.org/ that staff a fair number of programmers. Also, many Universities have core imaging facilities and there may be similar types of facilities in other scientific areas.
There also a significant number of companies that do research. Bioinformatics is a big topic for example pharmaceutical companies so big data experience is important. There are plenty of biotech companies too, some are providing research, some are trying to develop profitable technologies such as new tools for discovery and bio fuel etc. A number of companies that provide instrumentation and software to do research. There are a number of large players, such as Thermo Scientific, GE and Dananaher companies such as ABSciex, Beckman and Coulter. Obviously any company will be profit driven, so you will have to decide whether it is for you, but the jobs will contribute to research one way or another.
My suggestion is to get some scientific journal in you field of interest. Look at the advertiser and institution that do interesting things. Then go the websites of these places and see what openings may be out there. If you find something really interesting in a research paper that clearly involves computing you should directly contact them and see if they are interested in hiring. Most researcher are interested in the research problem and don't want to spend all there time coding. Often they are not good at finding developers just like developers are not good at finding these small research position. They may welcome someone who is interested enough in their researcher to seek them out. They might also point you to someone who will.
Positions like the one you are interested in exist, but they tend to be very few and far between, and they are generally time limited.
There are a growing number of computationally intensive projects in the physical sciences where the infrastructure and data management need to be handled by real programming/IT professionals rather than scientists who dabble in code. You should look at some projects like the Materials Genome Initiative, or some of the large computing centers in the national laboratories
Materials science and chemistry have increasing reliance on modeling and simulation which are requiring more and more programming skill. This ranges from building the software that the scientists use, finding interesting ways to link the various software packages together for simpler workflow, and using the packages to get the intended scientific results. You may find graduate positions at any point along this spectrum, but the number of positions using the code far outweigh the number of positions developing it. You could look into some of the various software used for density functional theory (DFT), molecular dynamics, lattice dynamics etc. to get the general idea of the landscape. Many universities now have institutes that are devoted to high performance computing, and they could be a better place to start looking than in the traditional academic departments.
Yes it does exist. Check out http://www.arlut.utexas.edu. There are other labs around the country like this one too but I know about this one.
Jealous much?
I'm coming straight out of a programming-heavy research position. This is a little different from what you are looking for since I have a PhD and I was writing the papers and doing the CS research in addition to doing a lot of programming. However, I can still give you some information about programming in academic research.
First of all, only professors have any sort of job security. Funding is always limited to a few years and if it isn't renewed you'll need to find another job, which will probably require you to move to another country or, if you are in the US, to another state. Salaries are not competitive with what you'd get in industry - I more than doubled my salary when I moved into industry, though that's probably an extreme example ($70k to $170k). Programming is seen as monkey work that gets absolutely no respect - only papers published in the right journals (and some conferences) are seen as an achievement. If you don't have a PhD I imagine that you'll have it even worse on that account, though that does depend on who you end up working with. Research positions are also generally difficult to get because people, like you, like to work on this stuff.
There is a huge oversupply of mobile and smart people with PhDs who would like to work in research. Many of those have some sort of programming ability. You'll be competing with these people for the jobs. You have an edge with your programming experience and a disadvantage in that you don't have a PhD. You can probably make a good case for hiring you by highlighting that you are an actual professional programmer and not an amateur. Your challenge will be to convince these people that you are also smart and worth dealing with. You may be able to avoid some of the competition if you look for jobs that clearly involve no research and no writing of papers. Such positions will not be attractive for people who want to do research.
Don't let me discourage you if this is what you really want, though. It can't hurt you to take a look at job postings and see if they make sense for you. I also have no idea about the situation for non-academic research, though for that I'm sure you'll run into the same issue with a focus on making money.
The other type of position you want to look at is a research assistant. These are generally contract employees, however you still receive full university benefits (health, lots of vacation, etc). If you're looking in the natural sciences, there are lots of these available, however they aren't advertised in your normal IT related spheres because the people hiring don't know where to post :(. Find a research area you're interested in, subscribe to mailing lists and you will see jobs. There are also field-specific tech lists (code4lib as one) that often times have postings.
Now for the bad part. These jobs generally don't pay compared to industry. You should be prepared to work alone and not w/ anyone to provide technology training (why they're hiring you).
I spent 20+ years doing such things at large oil companies. Last major project was a 300x600 mile model of rock properties in the Gulf of Mexico for a super major. Geology is ripe for big data analyses. You need the discipline knowledge to succeed and communicate w/ the rest of the team.
1) expect to deal w/ lots of old, badly written code. That's what the scientists will often have as a "specification".
2) the original code you write will mostly be throwaways that won't get thrown away. Research doesn't produce polished products. Norm is many small to medium size programs stitched together w/ shell scripts.
3) go to a highly ranked grad school (e.g. Austin, Stanford, etc) if possible. The personal contacts will be invaluable.
4) scientists will often treat you as a 2nd class team member even if you have the scientific credentials. However, if you manage it properly, you'll get paid the same as they do. ($80-100k entry level for a PhD in geosciences. Possibly more by the time you finish)
5) it will cost you 4-6 years working as a grad student at slave wages to get the needed credentials.
It's not all fun, but most of the time it is.
Have Fun!
Reg
PS checkout Seismic Unix from cwp.mines.edu
You can look at working for government agencies. If you are in the USA, look at positions at NOAA, USGS, NASA and other places. Telescopes in Hawai'i (and Chile) are also hiring software developers.
In my case, I work at the Department of Fisheries and Oceans (in Canada) and developed systems that are used by ships transiting the St. Lawrence Seaway and maintain systems that are collecting data from satellites (remember the epic-fail dropped a satellite on the shop floor meme - it is NOAA-19 and we collect its signal).
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
Research needs people in all disciplines. What it takes is desire and a keen mind for solving problems in novel and sometimes elegant fashions. Enter the programmer... As researchers we learn the bits and pieces of programming for the languages we need to use (e.g., SAS). The analytical part of the process is best served by collaborative effort instead of a "bull-pen" of programmers who will code to solve a specific part of a problem without knowing (or caring?) about the end game. Find a field that fascinates you. Find an institution that does good science in that field (and has good funding!!!). Then find a position where you can be a part of a team and not another code monkey for lease to any department.
The so-called "interdisciplinary" research projects can benefit greatly from your programing skills, if you take them to a new field. I guess that you have already proven, through your co-operation with geologists, that you are able to grasp a new topic and reach a high level of competency in that field (as in being co-author in a paper in that discipline), so you should definitely play that card while applying, in my opinion.
Traveling, as well as learning/using a new language should be considered. I tried Germany and it turned out really well. Central european countries in general have quite good research projects and you can get a job at a university paying about 1500-1700 Euros per month after taxes plus full benefits (health insurance and pension).
As for the field, start with looking in geology projects, but don't restrict yourself to that. Chemistry researchers are in a dire need for some sane programing skills, I can tell you...
I work for a botanic garden (we have very large, focussed collections, and over 150 research scientists). I started without any knowledge of the subject beyond what's covered in science at school, but that's no problem -- the scientists do the science, I write software to manage the data, learning what I need. The software used to be what I imagine are pretty standard bespoke database applications, like any business probably has, but in the last few years (since I started) has been much more about sharing the data (we're interested in semantic web, linked data, ontologies etc), and writing software to improve the way the research is done, replacing the older systems. It's still closer to standard database/web work than something specialised (e.g. physics simulations, bioinformatics, etc); though some of the research teams have software like this I'm not sure if anyone is employed specifically to write/use it.
A couple of positions are working their way through the system (we are part-funded by the government), and should be advertised at some point in the summer.
There are also two positions for web developers (not much science in these, this is for the public/visitor side), and two science-database placements for students at a British university doing a year in industry (part support, part development, depending).
http://www.kew.org/about-kew/jobs/
Most of these positions require that you are inventing something mathematically or computationally new. If you are interesting in building helpful software, look into getting a degree in Instrumental Analysis (Chemistry) or Numerical Analysis (Applied Math). These fields are looking for new software all of the time, and people in all of the sciences are looking for new software from these guys all of the time. However, most of the time, these are made by the professors or researchers themselves and if you would like to get involved, they would expect you to know the chemistry, math, etc. involved behind the math.
But heck, if you're into that, go for it. I'm an applied mathematician and program as a skill more than a love. I keep on making software just because it hasn't been made for many things at the forefront of applied math. There is lots of scientifically useful software to be made if you are a researcher in this field, and lots of people welcome these software-oriented people because they would rather keep on doing the math instead of getting deep into software development.
Get some genetics and cluster programming under your belt and join the bioinformatics world.
My PhD work required that I learn programming, I learned R. Now I'm starting to learn Python in addition to R.
There's plenty of opportunities for someone who is a programmer that is interested in science, where I'm sitting. I just hired an MS level employee who had experience modeling but not with programming. I'm looking to hire one programmer to do some R package work for me shortly and another to do some "big data" sort of work. However, it's not always easy to find someone to fill these positions who has enough science background or interest.
Depending on your interests and skills, there are jobs that would definitely suit you. A general programming skill with a general interest in science can net you some interesting positions.
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!
I work as a research computer scientist, and I can tell you that Java will probably be of little help to you. Most work in this field is done on specially-built machines or clusters, so portability is not nearly as big of a concern as performance, and in terms of performance you cannot beat compiled languages like C or FORTRAN. The main thrust of general numerical analysis, scientific computing and data analytics these days seems to be high performance parallel computing, be it CPU clusters or GPGPU programming via CUDA and OpenCL - Learn these things and, more importantly, learn how to think about problems in parallel. You should also brush up on your C and C++, and learn how to optimize CPU code using profilers and/or assembly code.
In terms of furthering your education, I'd suggest choosing an application field (which you seem to have found in geology) and start working with that field in a computational capacity right away. When I was an undergrad, I got dual degrees in Computer Science and Physics with a minor in Math, and now I develop physics simulations and collision detection algorithms on the GPU professionally. You probably don't necessarily need another bachelor's or a master's here - get yourself a GIS Certification or something similar and start developing / publishing a few open source personal projects in the field to build experience. They'll be useful when applying for the jobs you want, since they show both experience in the field and passion for it.
If you want to go for an MS, there are plenty available that would be useful to you. Georgia Tech, University of Washington, Columbia and Texas A&M all offer fully-online MS programs in Applied Mathematics and Computational Science. If you go this route, just make sure you can document some sort of experience with your chosen application field. These degrees are fairly generalized, if not abstract, and will teach you computational techniques for solving just about any type of generic mathematical or scientific problem, from physics to geology to bioinformatics to financial analysis, but most companies want to see at least some familiarity with their field of application - it makes you stand out.
Most importantly, don't get discouraged if you need a few years of grad school and a year or two of lower-end grunt work to get where you want. Computational research is a pretty damn awesome career, so stick with it and you'll get where you want to go.
Good luck!
... 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....
May I suggest that you do a course in sociology, with the aim of understanding how the world works?
People WON'T just give you money to do the things you want to do. People will give you money for doing things that THEY find useful. So you have several options:
1 - work at a job you may not like, but one that gives you the money and the time to do some of the things you DO like...
2 - find (or set up yourself) a job you do like doing, and accept the lower pay/harder entry requirements/lower job security etc
3 - live off the state and bum around....
I shoulda learned to program computers. That ain't workin', it's money for nothin' and chicks for free!
All Science is computer science nowadays, and I'm not even a computer scientist. So yes, there are many fields that are in great need of computer scientists and/or programmers. For example this guy, who popularized the term "connectome":
http://hebb.mit.edu/people/seung/
And BTW, his excellent TED talk:
http://www.ted.com/talks/sebastian_seung.html
Research is not just academic: there is a lot of research going on in biotech, pharmaeceuticals, defense, aerospace, and government. There are also think tanks and the like, which probably crunch a lot of numbers. In most cases, research laboratories and institutes are anchored near major universities.
I would suggest you relocate to a geographic area where a lot of research gets done. Boston, DC, and the Research Triangle spring to mind, but that's because I live on the East Coast. Los Angeles County has Caltech and UCLA so that is probably a safe bet on the West Coast. I'm sure there are others. Any state capital will have its public health, environmental, and similar agencies located there.
Try a location-specific search of the job listings for one of these areas (with loose technical criteria and strict geographic criteria) and you'll get a good idea of what jobs are out there and what skills they're looking for.
[Sir Garlon] is the marvellest knight that is now living, for he destroyeth many good knights, for he goeth invisible.
If you peruse the scientific publications of your interest (mainly geology?), note the various authors' affiliations - in addition to universities/colleges, some will be from government agencies and/or their contractor companies. That will give you a good starting point to ask around about openings and/or other companies doing similar work.
I've been working 20+ years for a contracting company, doing space science data analysis and research for a government agency. Projects change every so often (keeping things interesting!), and I get co-authorships on the occasional publication. While my Bachelors degree is in *solid earth* Geophysics (+ unofficial CS minor), the strong programming skills with a math/science background has worked out very well for my situation. Hope it does for you also.
If you could see yourself liking biology, we're at the point where DNA sequencing of (micro-)organisms is becoming super cheap. You could get into writing software for analysing DNA sequences. There's going to be a need for software capable of handling many whole genome sequences in a short amount of time. There are currently both open- and closed-source options, so you could go either route.
If you want to get an idea if that sort of programming would appeal to you, there's a free online set of problems called "ROSALIND" (http://rosalind.info/about/), which teaches the biology alongside getting you to develop your own solutions to the posed bioinformatics questions (in any programming language you like).
You sound a great deal like me, and -- speaking from personal experience -- what you want is possible. :-) I'd look within NASA, definitely.
And ignore the bitter folks here who are whining about how they're looked down upon by the PhDs. That's certainly not a universal experience -- I have coded for PhDs at a couple of research institutions and always got along well with them. Just remember that you have to give respect to get respect, especially if you're the new kid in the lab.
You'd probably want/need the edge of a Masters in the research-related field, more than a Masters in Comp Sci. People will value you more if you have solid footing in both the programming domain and the problem domain.
Final bit of advice: don't hide your passion about wanting to work for the betterment of humanity. I have been upfront about that in my interviews, and it always resonates with the right people. Many of those PhDs in the sciences have similar passions.
Koans and fables for the software engineer
Every day is filled with opportunities to help humanity. Those opportunities rarely have anything to do with your particular job function. Stop waiting, start paying attention and acting.
Them guys ain't dumb!
As many others stated, you should probably be looking for one-off projects funded with the help of grants. Just remember to keep looking. You never know when the opportunity might come up. I've recently been lucky enough to be drafted as a designer into a project encompassing aspects of fire safety: fluid dynamics simulation for vehicle fires, fire-fighter squad command simulator and fire engine driving simulator. All thanks to a grant from the West Yorkshire Fire Department. You might want to stay in touch with your college lecturers as they will probably be the first to know about any grants and opportunities that pop up in your area and might give you a heads-up if you let them know you're looking for something. Good luck :)
There's Scientific linux (at fermilab and CERN) or NetBSD (at NASA).
Scientific Research Positions For Programmers?
Those are few in existence. Unfortunately (and I speak from former experience) a B.S. degree in CS with experience exclusively in the "enterprise" does not lead itself to any research/R&D position of the sort. Plus, research and R&D positions typically go to positions titled as "engineers" or "architects", not programmers. Every good software engineer or architect is a programmer, and any good programmer is an engineer or architect. But sadly, labels rule the world, pigeonholing people in stupid, mutually exclusive roles.
My suggestion is to go back to academia and get a graduate degree. Aim to do research associated with (or funded by) a company. Establish connections. Concurrently to that effort, or after that, go work with a true software engineering firm (say Google.) Aim high. Or, go into a defense or aeronautics company (Lockheed Martin Missile Divisions or Boeing.) Avoid defense contractors that specialize in "integration". Aim for the companies or divisions that actually do cool shit. For this later type of company, a graduate degree in Computer Engineering would be more helpful than CS alone (I'm a CS grad btw, so I'm talking from experiencing my lack of a hardware background.)
Once there (be it in the commercial or defense sectors), aim high, and keep studying, build your connections, and seek out to work with R&D programs. You want to move to a position of responsibility and become a subject-matter expert in something. You want to aim to a position that does research or architecture. That's where scientific/R&D positions exist.
Either or going all the way to a Ph.D. Though I'm not sure that's what you really want.
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+
Your best options will be with government labs and government affiliated research organizations (e.g. JPL, Sandia, JHUAPL).
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
You might be lucky to get a position in a research institute and/or university, but without at least a masters degree that will be very difficult. My advice? Apply for a graduate program in your chosen field. With a doctorate, or at the least a masters degree, your chances are much higher to achieve your goals, though success is never guaranteed! :-)
Good luck!
Sometimes, real fast is almost as good as real-time.
There is a huge need for software to perform rigorous physical analysis of biological data. In practise this means coding up some fancy statistics in a manner in which a bio-scientist can actually use, without having to worry about the stats. The physical scientists that code these up tend to be self taught, and so both the back and front ends tend leave a lot to be desired. So there is huge scientific value in having a computer scientist on the team!
This view comes first hand: I've got an immensely keen computer scientist just started in my group. He's improved not only how we get our data, but also how we use the data in things like structure calculations. He's learning biology off the bio-types, and both are benefiting from the interaction.
So yeah! Any bored com-scis fancy helping solve biological problems - please get involved!
Right now one of the easier fields to break into with only a Bachelors degree is bioinformatics and the Broad Institute in Cambridge, MA is always looking for programmers to come work for them in the various cancer research groups. As the others have already pointed out though, in research there is a ceiling in place if you don't have a Ph.D and realistically a research-based (i.e. thesis) Master's degree is going to be needed if you actually want to have career progression somewhere without having the Ph.D since there are enough people with them being graduated these days.
Look into getting a PhD or at least an MS in the science you're interested in. In my (pretty limited, admittedly) experience, the developers who do the heavy lifting on scientific codes are PhDs. At the same time, very few (almost 0) freshly minted science or engineering PhDs have any experience developing software in a production environment, so as long as you aren't terrible at interviewing, I think you'd be a shoe-in at a national lab or a company that does this kind of work after you finish.
FYI, because you probably don't know this, getting a PhD in a hard science or engineering is usually free (to you). In fact, they even pay you to do it. The stipend will be a half or a third or a quarter of what you're making now, but it's enough to live on. The challenge of course is that with little or no educational background in geology or whatever, it's going to be harder, though not impossible, to get into a good PhD program. At the very least, they will expect you to take a few undergraduate courses in the beginning to give you the baseline knowledge that most of your classmates will arrive with. And I would urge you to shoot for a top 10 or 20 department. On the BS level, where you got your degree doesn't matter much (again, in my experience). Where you get your PhD matters a lot more. Of all places, academia should be a meritocracy, but in reality, people with PhDs can be really petty about these things, and your lineage matters. At the very least, many places that would hire someone like you only directly recruit at a limited number of schools, and those schools tend to be the best ones.
Another thing you might consider to help you get around this lack of science background is applying to an applied math program that has a scientific emphasis. I had a friend at The University of Texas who was in the computational science and applied math program there, and his research was about computational fluid dynamics. Maybe dig around on their website, or the websites of similar programs, to see if any of the faculty have research collaborations with geologists.
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).
Yawn.
I object to power without constructive purpose. --Spock
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.
blah blah Who is John Galt...would you "people" just disappear" already....
frigging autists
I can't help you with getting into research. I do not know anything about it. Though it does sound cool. 'Consulting' is basically contracting. You are a billable rate. Your job lasts as long as the company can bill hours for you. We often calls these companies 'pimps'. These jobs suck. If you can't land your dream job in research right away also try to work for a company that builds products. This could be longer hours than 'consulting' (since the company often wants to get paid before you work more hours since they are bloodsuckers). Companies that make products have deadlines. I would avoid the gaming industry unless you love it. The hours there can be detrimental to your health.
You might find a better position for a company where you are building a quality product they are trying to sell or put up on the internet. It probably wont be as interesting as working with a group of scientists, but it should be better than being a 'ho' for a pimp.
been where you are. consulting/contracting companies suck. These are the guys who desperately need h1bs (and as soon as they get greencards they quit for better jobs) because they cant find quality americans to work for them. Cause their jobs suck.
If you want to get into research the most direct path is to get into a Ph.D. program in the discipline that interests you. It is the most direct path because a) you'll have to do publishable research to graduate, and b) most research positions in academia and industry require a Ph.D. If you can't afford the time or money of a Ph.D. program, find a masters program with research option. While in grad school there are a few skills you must acquire: * Research experience. * Awarness of your area of research. What are the big unsolved computational problems? Make your PhD research in one of the hot areas. Learn how to find out what's the next big thing so that you can be on the cutting edge. * Publishing and conference presentations (learn to sell yourself). * Networking in your field (best jobs come from knowing someone in a position to help you).
I'm currently a masters-level scientific programmer at Argonne National Lab, and I've worked on projects in population genetics (previous jobs) and nuclear physics (current job). Overall, the opportunities are great. Here's my advice, in response to several other comments:
Re: the pay level.
At any level -- BS, MS, or Ph.D. -- scientific programmers are among the most highly compensated scientists. Obviously, few scientists are as highly-compensated as their counterparts in industry. However, the wages are still very very good, and I don't consider it a reason to look the other way.
Re: the grant cycle.
A few comments have mentioned that scientists work on 2 to 5 year grants. While that's true, it usually doesn't mean that your job will expire after 2 to 5 years. Your research group will always be pursuing new grants. So you will usually get to keep the same job and be moved to another grant.
Re: the languages.
If your strength is Java/ big data tools, I highly recommend exploring options in informatics. There's the most opportunities in biological and medical informatics (I worked in bioinformatics for several years; I used a lot of MySQL with the UCSC genome browser; and a lot of Java with the Broad Instiutute's Genome Analysis Toolkit). But if geophysics is your thing, there's definitely integrative analysis to be done in that field too.
Re: how to pick an institution
I think you should definitely give preference to an institution that has a teraflop or petaflop supercomputer. You don't want to be stuck writing R for some postdoc's iMac. Look through top500.org to get some leads (but don't forget University of Illinois, who had the stones to eschew the LINPACK benchmarks and isn't listed). An institution that has committed that amount of hardware will be more willing to commit resources to its programmers.
Overall, don't sell yourself short; you have desperately needed skills. :)
If you're looking for an alternative to working for a university on a term contract, I would highly recommend the Department of Energy National Labs (e.g. Oak Ridge, Argonne, Lawrence Livermore, Los Alamos and Sandia). A masters in CS with a parallel and/or high performance computing focus or a masters in applied math with a computational bent would open doors.
At our small environmental engineering firm, we do a lot of coding for simulation, data management, visualization and presentation. When interviewing, I'm on the lookout for scientists and engineers who can code (preferable) or for coders who can demonstrate understanding of the science underlying our work. I've had (negative) experiences with coders who don't have math or science understanding, such as one who refused to understand the difference between a flux and flow, or the one who tried to find the optimal value to fit a relationship y = m*x to a set of XY pairs by writing something like:
BESTM = -1E99
MINDIFF= 1E99
DO M = MGUESS1 TO MGUESS2 STEP 0.00001
DIFF = 0
DO I = 1,NPOINTS
DIFF=DIFF+(Y[I] - M*X[I])**2
END DO
IF (MINDIFF > DIFF)
BESTM = M
MINDIFF = DIFF
END IF
END DO
PRINT BESTM
I work for a firm that writes environmental software (mostly on contract from a state or other entity). Contrary the popular belief there are plenty of functional government bodies for which you could work directly as well, surrounded by plenty of bright and hardworking, decent folks. (I'll grant there are a few orgs that have dysfunction, usually stemming from very shortsighted law or policy, oftentimes outside their direct control)
Think outside the normal consulting routine, software is written for literally every kind of business and concern there is, anything that you think in general makes the world a bit better, software is being written for it. Find out who does it, then work for them.
You may or may not make as much as you're used to making, but you sound like you'll be a lot happier. Of course, research is good too:)
I suspect you haven't studied much history since what most people think of "business" in the modern standpoint is only a couple hundred years old. Most of your examples have more to do with "trade" as opposed to "business" per se. Trade and trading has ways been around and is an effective aspect of human survival, but business in itself is not necessary for human survival.
The US government spends billions of dollars on research each year and much of it requires software development to some degree. Much of this money goes to the big guys like Boeing or Lockheed Martin, but a non-trivial portion of it is reserved for small companies as well. In any case, there are lots of programming jobs out there doing research, either directly or indirectly, for the government.
I happen to work for a small company that does contract research and software development for the gov't. We pride ourselves on writing solid, maintainable scientific software. To accomplish this goal, we need programmers and scientists, but most of all we need programmer-scientists. We are hiring (message me if you want more info), but I'm sure there are other companies out there as well.
sHi
Comment removed based on user account deletion
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.
Just what the world needs, another save-the-world liberal.
Join the Peace Corps, and try to get an assignment as far from the US as possible. Thank you.
I don't know if they hire professional programmers, but the sage project is an important open source project in the area of mathematics. Sage is based on python, and aims to compete with mathematics software such as Mathematica, Maple, and Magma.
A lot of the work that needs to be done is not math-specific. For example, they put a lot of effort into Cython, which provides an interface between python and C so that python can manipulate C structs as python objects for increased speed.
Yes, your experience is universal and the vast majority of employers aren't evil money-grubbing bastards that will screw you at every opportunity, no matter what the industry.
Oh, wait..
Never underestimate the power of stupid people in large groups.
I worked as a research assistant for a professor at MIT, he had 11 graduate students and 2 professional programmers. At my undergrad, a state school, this was unheard of, so I would focus first on well-funded private institutions or state schools that you know are getting significant grants and projects in the area you're interested in.
I see a few mentions of FORTRAN, but they're all modded low. I've been working as a researchers/roll-your-own-code programmers for 40 years now. I've written so much FORTRAN code over that period that I pretty much dream in FORTRAN. Yeah, I'm a dinosaur. Anyway, if you want to do serious research support work you should learn FORTRAN in general and HPF (High-Performance FORTRAN) in particular. If you're any kind of a decent programmer you should be able to pick this up fairly easily, but for street cred in the scientific research computer-support business you'd better get some FORTRAN chops.
I had the same reasons as you have, though in my case, it was a disillusionment due to solving the same problems over and over again, with the solid knowledge that the kind of problems asked of me would be very similar in future too. I started with a bachelor's, and stayed in the industry working at one of the large behemoths for 10 years. When I realised that I am getting disillusioned, I took my masters via one of the universities offering remote campus, which gave me some confidence that I actually liked what I was planning to do. Once my masters was complete, I resigned, and got into a university for my Ph.D. in my chosen field. I am on my third year now, to hopefully finish in another three. I hope to either join a research institution or stay with academics as a professor after completion. What I can offer you advice is that, be sure of what you want, and where you want it. Life in gradschool is very different from life in the industry, with different demands. I particularly feel that a Ph.D. feels like working in a startup, with you on the look out for opportunities, and once realized, having to move very fast to do the research before it is taken up by others.
~561
No, if you like your job, and your boss knows it, he/she knows that he/she doesn't have to work as hard to keep you happy and productive. Ergo, they don't have to pay you as much to keep you.
Never underestimate the power of stupid people in large groups.
And they go well with the employees who are also money grubbing bastards who will screw the company at any opportunity, no matter the industry.
The lesson here? Everyone is out for their own self interest, its purely natural and there is absolutely nothing wrong with it. Unless youre some kind of religious fucknut.
The language of choice is highly dependent on the field. I currently work at a mechatronics R&D company. Most of my colleagues are mechanical engineers. Matlab has some kind of God status to them. Personally I'm a big fan of Python (my background is in machine learning / AI) which seems to be an emerging language in many scientific fields.
"don't have to" != "will not"
I suppose it must depend on the industry, but I've found that someone who **likes** what they do is far more productive than someone whose primary interest is drawing a paycheck and my bosses have been VERY interested in keeping me happy.
"Think about how stupid the average person is. Now, realise that half of them are dumber than that." - George Carlin
Most of the "research programmers" I've run into (as an assistant professor) are not any good. They're people who have hung around academia because they don't want to face the real world. The PhD students run circles around them, and they just end up doing administrative work. If you're different, you might find yourself quickly disillusioned by your colleagues.
i don't think going back to the school is a good idea, the pay isn't as much as when you're in the industry. if you want to contribute to the humanity - start a FOSS project and ask people to join you. currently I am doing my PhD ... and my salary isn't as much as my friends who're working outside there (my wife's salary is also higher than me!).
so if you have no plan to go to grad school, join/start any FOSS project.
but if you're willing to pursue your study so that you'll become an academician one that - try to contact any professor according to their research interest or look around at any job vacancy in the department's webpage.
Go read my free on-line textbooks --Jon Claerbout, Stanford University
The short answer is that it's unlikely you'll get picked up as a scientific programmer with that particular skill set and I'll explain why below. In order to set that context, it's probably best to understand where these kind of jobs can be found. The DOE national laboratories like Sandia, Argonne, Oakridge, etc. hire a large number of scientific programmers that do solid fundamental research. Many of the defense contractors such as Lockheed and Boeing also have very good divisions if you can find the right kind of job. Certainly, places like NASA have some talented people. With the sequester, hiring is likely very tight at the moment. Finally, the oil companies and their service providers probably have more computational power than any of the above mentioned places. They're picking up scientific programmers left and right.
As far as skill set, this places I mentioned above tend to be continuum (classical) mechanics heavy. Meaning, they tend to do alot of work modeling things like fluid flow or elasticity for very large problems. This means they are interested in people who understand algorithms for these problems such as finite difference and finite element methods. There's also a demand for people who have skills to support these methods. This is largely people with linear algebra background in iterative algorithms (krylov methods), preconditioning, meshing, and graph problems. Auxiliary skills such as knowledge in mathematical programming (optimization) are a huge plus in these positions.
On the programming side, knowledge of MPI is an absolute must. Although they won't mention it in the intereview, effective parallelization on shared memory machines is really needs, which is just stuff like OpenMP or pthreads. In case someone complains, OpenMP works just fine on these problems. GPU programming is currently hot and many places are picking up GPU "experts".
Now, here's the hard part about going down this route. Basically, without at least a masters, they'll likely not even look at your application. WIthout a Ph.D., you'll still be discrimiated against. That's not right, nor fair, but it is the reality of the situation. Part of the other problem is that most of the algorithms I mentioned above aren't well enough documented for an engineer or mathematician to hand off to a programmer and expect it to work. Yes, you can find a really simply description of a Krylov method like GMRES, but that implementation will likely break. Do you understand when the Krylov space loses orthogonality? Are there better ways to orthogonalize vectors for sensitive applications? Which one of these ways works best when the vectors are stored in parallel? For other algorithms like Choleski factorizations, did you know that the algorithm will factorize some matrices even if they're indefinite? That's the core problem. These irritating complications are not well documented. Now, none of them are all that hard to fix; it just takes experience. The question is whether or not you have the appropriate background to understand why they break and then fix them yourself. Outside of the discriminatory aspect, that's why many places are hesitant to hire someone with a pure development background. Now, if you understand some of these things and can program, you're golden and will have little problems finding work. There's alot of shitty programmers in the scientific programming world as, frankly, most of them are trained engineers and mathematicians and not developers.
If you don't want to go back to grad school and want a place to start, master parallelism and C++. The engineers are going to write stuff in MATLAB; your job is likely making sure that stuff works on big iron. Getting some example software out there that people care about goes a long way to landing the job. In my opinion, the easiest area for a guy with a CS background are in direct sparse methods. These are things like sparse Choleski and incomplete LU. Don't do dense methods, as everyone just uses BLAS and LAPACK. Anyway, most
I currently run a research group doing large scale computational science at Idaho National Laboratory. See these links for what we do:
https://inlportal.inl.gov/portal/server.pt?open=514&objID=1269&mode=2&featurestory=DA_582160
http://www.youtube.com/watch?v=V-2VfET8SNw
(That's me talking in that YouTube video)
The national labs are always looking for people in computational science and engineering... however, we generally look only for people with advanced degrees (at least MS... but generally PhD). If you really want to pursue this I highly recommend looking into actual "computational science" degrees... several universities have them. Here are some:
https://www.ices.utexas.edu/
http://cse.illinois.edu/
http://www.stanford.edu/group/mathcompsci/
Feel free to contact me directly if you want more information: derek dot gaston at inl dot gov
I was exactly where you were 8 months ago. Fortunately, I found a job at a local university maintaining their website, which allows me to be on campus 5 days a week and take free classes towards a degree. Also, public sector work requires less work in general (fewer hours), which will give you your evenings back to do research and study for the GRE.
Good luck!
All trade is business and all business is trade, idiot. Maybe you should study some Roman history - corporations, interest rates - these things have been around far longer than a couple of hundred years.
The first time a flint knapper traded a spear point to a hunter in exchange for a bear skin, a business transaction took place.
Hi there Anonymous,
It sounds like people are giving you the straight (but dreary) scoop on how hard it can be to find a fulfilling role as a programmer in research & academia. But I can tell you firsthand that what you're describing can happen, especially if you're not super tight on money.
I'm lucky enough to be part of a small team doing meaningful research, in desperate need of a flexible and adventurous programmer. Please check out our website & research at the following links, and send us a line if you're interested in learning more.
www.lectica.org
https://dts.lectica.org/_about/articles.php
https://dts.lectica.org/_about/work_with_us.php
Try looking into bioinformatics. It is a pretty broad term that is essentially analyzing biological data. This can involve writing scripts to find some feature in the data to writing entire software packages. There has recently been a push to bring in "true programmers" because it seems to be easier to teach programmers biology than to teach biologists to program.
For 8 years I worked as a "Compuational Scientist" at 3 university supercomputing centers, helping students and faculty to use/program parallel computers. I don't have a PhD.
I saw several kinds of computing staff in academia. Some assist in research; most don't. They are:
- graduate students (CS, engineering, physical sciences, psychology, medical research, etc)
- post docs (w/ same areas of research)
- IT support staff (cluster or workstation or network admins, univ administrative app programmers, etc)
- research support staff (usu. project-based, paid for by a professor / lab, lasts as long as the contract, usually 1-3 years)
The exception to the above roles is the permanent staff research programmer (at large specialized computing centers or univs with large labs within engineering departments). These are funded for longer cycles (usually 4-5 years), and have numerous executive staff who do nothing but maintain the flow of funds. Examples: NCSA, Texas Advanced Computing Center, San Diego Supercomputing Center, etc.
Many folks do make a living as an academic developer, but they tend to have a specialized skills (HPC / scientific computing, statistical analysis / data mining, data visualization, engineering, etc). Most such jobs do not require a PhD, but univ employers prefer to hire as advanced a degree as possible, especially if the research/work is likely to lead to academic papers. If you can't do that, your role will be marginalized (subordinate to the university's main mission of granting degrees and writing papers).
The ideal research programmer can perform like a research scientist -- find their own funding, write their own research proposals, collaborate with other people's research projects, etc. Sometimes this work extends to US gov't SBIR projects (small business investigative research), which often bleeds over into US military contract work. If you can help to write your own ticket, you can remain working in academia indefinitely. If not, you will need to look for a new research position every 2-4 years.
Personally, I think the two best reasons to get an academic IT job are: 1) to be on-campus for just long enough to finish a grad degree, or 2) to settle into a low-stress long-term IT support job that offers a relaxed lifestyles and good benefits. From my experience, academic support jobs are not especially challenging or rewarding, and academic research jobs are generally narrow-focused and short-lived.
I am a healthcare research programmer at a policy research institute. I work as part of a research team to help improve the public well-being via data acquisition, processing, and analysis. The data I work with is big (think up to billions of records), messy, and incredibly complex; the work I do is challenging and rewarding. On a given day, for example, I might analyze quality of life data for individuals who participate in a program that allows them to move out of an institutional care setting and into the community; wrangle hundreds of millions of Medicare claims records into a coherent whole to allow us to study the possibility of a bundled payment initiative; or crunch school meal data as part of a project analyzing children’s access to nutritious food. Policy research programming is a booming field and we can hardly find enough qualified people to hire. For us, qualified might mean as little as six months of solid programming experience in any industry plus a genuine interest in working in a research environment serving the public good. If you feel that you might be qualified, definitely feel free to apply to any of the openings at Mathematica Policy Research here: https://careers.peopleclick.com/careerscp/client_mathematica/external/search.do.
Make sure you really enjoy the research you'll be doing, because moving from a private programming position into an academic research programming position is going to come with a hefty pay cut.
Unfortunately for my wallet, I *do* enjoy the research quite a bit and have co-authored more publications than most junior faculty PhDs, so it can be very rewarding in a non-monetary way.
Though as others have said, if you're goal is to be conceiving of and performing your own research, you need to go through the typical channels of getting a PhD, doing a post-doc, and eventually finding a position somewhere as a professor. The research programmer will always be a research programmer and won't be running their own research lab or anything like that. Though doing a few years of research in a field can be a great way to get experience and figure out what you're interested in before going to grad school if you do want to go the academic route.
There are other venues for research besides the joining a school's research program. You can do research independently as yourself and then show it off at conventions. Hacker conventions like DEF CON are particularly good venues for the research oriented developer.
My wife is PhD is geology (and tenured) and I program for scientists. Depending on the data and the program I see a TON of people needing R programming skills. At the GSA conferences and Soil Analysis conferences I've seen many posters where people are talking about statistical results obtained from programming in R. A Physics Professor friend teaches an R class because the CS dept doesn't, he's told me that students from that class get grabbed very quickly into other research areas.
But in academia the letters behind your name count. At least get an MS.
All trade is business and all business is trade, idiot.
All businesses may engage in some form of trade, but not all trade is business. The difference is that business is conducted between organized groups of individuals (i.e. chartered companies) where as trade can be conducted as the group or individual level.
Maybe you should study some Roman history - corporations, interest rates - these things have been around far longer than a couple of hundred years.
Alright, you get a half point since Roman collegia do share some properties with the modern chartered companies that I was thinking of. The chartered companies date to 17th century though, so my point still stands. One of the key features of modern corporations is that they can fail but the individual assets of the participates in that corporation are protected.
There are, indeed, scientific programmers. Consider environmental companies - they do a lot of engineering, in terms of finding and catagorizing and cataloging pollution. Or there are some engineering firms - think of aerospace. Or there's the biosciences, which are big these days. We have a lot of such programmers here (I work for a US federal contractor in the health and human services area[1]). In my division, we've got folks working on things like protein folding[2], which takes *days* on a good-sized compute cluster. Fun stuff.
And for the liberidiots, "making money for folks who are already rich, but are desperate to get richer" is not doing a damn thing for the human race[3]. nor for the economy[4].
mark
1. Which shall remain nameless; anything I say should not be construed as speaking for my employer, my agency, the US federal government, or the view out of my window (assuming I even had a window).
2. The code we use was written by one of our researchers, and is used around the agency.
3. Given the massive relocation of wealth upwards, and the documented downwards movement of everyone
below the 1%, with the only new jobs "created" being sweat shops in places like Bangladesh, and minimum wage
"service sector" jobs here, this is a demonstrable fact.
4. krugman.blogs.nytimes.com/2013/07/16/john-galt-and-the-theory-of-the-firm/
You should consider pursuing an advanced degree in Statistics. The skills you'd learn can be applied to nearly any research or data analysis programming position.
Ryan
Many organizations know it's easier to teach a researcher to program than a programmer to do research...
Yes, it is realistic with your qualifications.
Look for Big Data projects. Particularly in Physics (e.g. CERN), Astronomy (the new generation of instruments which will be coming onliny in the next few years are going to be churning out Terabytes of data per night, which cannot be analyzed in any way other than automatically - look at projects like LSST, organisations like ESO, or the Virtual Observatory projects around the world - look at the IVOA for an overview). Or Biology/Biochemistry/Medicine - Medical Imaging (e.g. MRI), Genomics. Medicine is often a good one because unlike physicists, doctors rarely have the computing/programming skills. Geology needs data analysis for seismic surveys etc, but there the money is in the oil/gas companies - though the research environment there is just as nice as anywhere else.
Java is used quite widely, as is C and C++, Python is also increasingly used with the various libraries which are now available - SciPy, NumPy etc.
You might find yourself on a short-term contract at first (a year or two or the duration of the grant) but once you get in the door it's usually possible to migrate into renewed contracts, or a PhD programme etc.
You didn't say where you are based, but look around at what your local university or nearby labs are doing in the fields I mentioned. Or oil/gas/mineral companies.
I'm an academic (atmospheric sciences) with a joint appointment in a government lab. I almost always have one or two "support programmers" working with me. They get paid about like new PhDs. When I hire I have to have to balance relevant topical experience with computational skills. That is, I can hire an MS atmospheric science student with background knowledge and shared vocabulary, or I can hire a computer-oriented person who can get the computation done in a hurry but needs the subject material explained. Both have upsides and downsides. Since the person is doing research on behalf compatible personality makes a big difference.
That said, in my field Fortran would be a big help (big numerical models are still built in Fortran), as is the ability to plough through lots of data in a variety of formats. Other more specialized jobs (less like general research) are also out there.
No, if you like your job, and your boss knows it, he/she knows that he/she doesn't have to work as hard to keep you happy and productive.
This is only true if you won't be just as happy doing a similar job elsewhere. My experience is that, in the long run, passionate and enthusiastic employees do a lot better financially than 9-5ers.
You can do that as long as your boss knows your passion and enthusiasm would work just as well for someone else, and you remind them of it constantly. Otherwise, bend over.
Never underestimate the power of stupid people in large groups.
Check out research organizations like EPRI, SWRI, SRI and others... ones associated with universities probably have a built in source of cheap programers so i would avoid those, but there are plenty of others. Also check out companies like ESRI if you like geology. There may also be jobs in companies like NI developing tools or doing one-off contract work for data collection and control systems, there are also companies that specialize in implementing data collection and control apps for labs and industry that could have some interesting jobs.
Research organizations like to see experience in things like MATLAB, SIMULINK, LABVIEW, and database stuff in addition to desktop app development. much of the desktop stuff is still windows, learn c#/vb.net and related windows tools.
I have had great fun as a computer person for astronomical observatories. Have been treated quite well without the PhD, but there is certainly a ceiling without one.
The Square Kilometre Array is the current hotness, and is hiring.
http://www.skatelescope.org/people-contacts/jobs/
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.
Unless you like low pay and job insecurity. Some professors may not be evil, but the only difference between a university and a corporation is that the corporation doesn't pretend it's non-profit.
Especially don't go to grad school. It is a very bad idea. Trust me, I know.
PhD in physical chemistry, theory. All my research experience was computation. A full time coder is a huge asset in a computation research group. They quickly become versed in the sorts of things they need to know - science wise - and contribute in that way. Really, how can you write code to solve a problem you don't understand? They are part of the group, actively participate in research, and are acknowledged with authorship. And since their tenure isn't limited by graduation, the next postdoc, or a professorship, they quickly become the most senior members of the group. If they have a PhD, they will become an assistant professor. However, these positions are very rare. As it's been pointed out, very few groups are large enough to support a full time programmer.
46 & 2
I am currently working in a US university as a post doc and will join another one as assistant professor. And I can tell you that one thing we definitely lack are programmers. We need programmer and we hire them. My current department (biomedical informatics at OSU) already employ at least 2 full time programmers. And they are useful. I am currently "in charge" of a piece of middleware that is quite useful for parallel programming, but it is not production ready. And provided the time I have to spare to work on it (probably negative time), it is not going to be ready anytime soon.
And frankly, close to noting of the software I write is production ready, we still release it as open source because it is useful for some other researcher, but it could definitely use some ironing.
So yes, there is definitely work. Now the question is "Are there funds for you?" The answer to that question varies a lot in time. But frequently when writting research grant, we include programmer time in the budget. So there is money for programmers.
I'm just an undergrad, so I can't claim any expertise is career options, but I as a cognitive science major, I am doing research in designing neural networks that mimic human learning (both at the behavioral and neuronal level). Not only is it contributing to that field, but my professor plans to use this research to better model autism and develop better ways to diagnose it early and to treat it after it's identified. I find it very rewarding to be a part of such an endeavor. As for the programming side of things, we primarily use MATLAB since the code we are building off of was written in that and it makes working with lots of very large matrices easy, however there has been talk of switching to Python due to the proprietary nature of MATLAB. I have heard from many people (professors and students) that computational cognitive neuroscience (which encompasses everything from learning algorithms to brain controlled prosthetics) is going to become a hot field of research (think lots of funding) in the coming years. Keep in mind this is just hearsay though, and can't truly speak to the veracity of such claims... Perhaps other slashdotters will know more about the field... I just know I feel the same way about spending my working hours doing something to make the world a better place :-)
The job of a scientist is to discover what nature intended. The job of an engineer is to politely disagree.
Check out HHMI Janelia Farm in DC. They have a whole scientific computing department supporting neuroscience research
You presume my perspective is stupid when it was pretty clearly not.
Let me clarify the situation for you.
The goat herd tending his flock 2000 years ago was a businessmen. He was out there every day busting his ass protecting that herd from predators, thieves, the elements, and the stupidity of the live stock itself.
Why did he do it? To feed his family. To provide for his community. To make a profit.
That is business.
You can hate on it all you like but its life. Without business we're dead.
Now you want to say you're only against modern business and not some idealized and naive conception of older business models? Its the same thing really. The means are more complicated and organized. 2000 years ago you wouldn't be able to travel 2000 miles, show up for a want ad, and get a job on the basis of references or credentials. Businesses then were much smaller because they couldn't grow. They literally couldn't maintain cohesion beyond a certain size.
Today we have huge corporations because we CAN. And that unfortunately subordinates us systems of organization instead of human relationships which was the old model's basis.
You might prefer human relationships. In all honestly, I think I prefer them too. But they're less efficient and less capable of dealing with large organizations. Its the difference between the city and the villiage.
Do you hate cities? Because they're very much the same thing as big business is to small business. As you scale up you get more informal and more systematic. You don't know everyone's name. The personal relationships stop governing interpersonal relations and the RULES start to become the most important thing.
Love it or hate it. This is how we feed ourselves.
I've decided to stop wasting my time responding to AC trolls/sockpuppets... so if you want a response from me... login.
So chartered companies are bad but individuals running businesses is good?
There is no ethical difference. The only difference is that psychologically some people have a hard time relating to impersonal organizations.
But the same thing can be said of cities or national governments.
Why don't we have a chieftain that knows each and every one of us by name? Why do we accept leaders that might not have ever come within 100 miles of us in our entire lives?
Grasp that corporations are not evil. They're just impersonal. And they're impersonal because frequently they're not dealing with people they know well. Keep all business between known associates and things follow an older pattern. There are human relationships. But allow a structured organization to interact with an almost random collection of customers, venders, and other assorted people... and very quickly the most important thing will be the system because at that point the system will be the only thing keeping anything together.
I've decided to stop wasting my time responding to AC trolls/sockpuppets... so if you want a response from me... login.
The goat herd [sic] tending his flock 2000 years ago was a businessmen. He was out there every day busting his ass protecting that herd from predators, thieves, the elements, and the stupidity of the live stock itself.
No, he was a tradesman and there might not have been any profit motive involved depending upon the size of the herd and how remote the individual was from a center of trade.
Now you want to say you're only against modern business and not some idealized and naive conception of older business models?
I never said that and you should go back and re-read my comments if you don't believe me. I said that business in and of itself is not necessary for human survival which is a true statement. Trade and businesses might help to ensure human survival is easier, but they aren't necessary from that standpoint.
So chartered companies are bad but individuals running businesses is good?
Again, I never said that chartered companies were bad. You keep trying to read a percived bias into very short comments.
Although since you bring up the question of ethics, I would argue that there is an ethical difference since an individual can be held responsible for their actions but a large organization cannot. Although that is a very long discussion in and of itself and it's one that people have been arguing back and forth for a long time now.
I have a few PhD friends, in research. I have tried suggesting that I could help them do more with their data (they have trouble with stats packages) but have been brushed off. I work now with PhDs in (drum roll)... the financial world. Not sure why it is less of a problem for them than academics.
As a researcher at a major biological research center, I can tell you that jobs do exist. However, in our hiring rounds, we look for people with quantitative ability more than a specific language, as we do not generally create massive software suites so much as we need to devise and automate novel analysis techniques. FWIW, the people we look upon most favorably are creative thinkers who have had some grounding in statistics and machine learning. People in these positions, at least in my lab, are treated with equal respect as people with PhDs in biology, and frequently direct their own projects and research.
(Posting as an AC b/c I'm talking about my job.)
I work in a neuro research institution with lots of java programmers with only an undergraduate degree.
But because of your communist leanings, I'm not going to help you.
is an oxymoron
well, you'll probably need to live near a research university, of course. then you have to accept that you won't be making a fortune, but you'll probably do OK.
there are a couple of different paths; if you want to stay with the Java/C++ type thing, you'll be more on the programming side of things, or you could pick up a statistical/analytic language like SAS or SPSS and get less involved with the nuts and bolts and more involved with the actual data munching. even take a few steps into statistical analysis, if you want to go that way.
another route, especially if you've picked up SAS, is to go into a drug company. i don't know about all of them, but my experience has been that the data and analysis side of things is honest work. money is way better than academics
Star Trek transporters are just 3d printers.
Large organizations can be held accountable if you can show that members of that company broke the law.
What you cannot hold accountable are shareholders. Their liability is limited to their investment.
Would you hold a little old lady that invested in an oil company criminally accountable should the oil company do something criminal? Obviously not. However, if a member of that company can be proven to have done something criminal then you can absolutely hold him accountable.
When people whine about not being able to hold companies accountable for actions it is a misunderstanding as to how corporations work. Shareholders are protected because they simply don't have enough to do with actual decisions to be held accountable. People physically there physically doing a criminal act though? Totally prosecutable.
I've decided to stop wasting my time responding to AC trolls/sockpuppets... so if you want a response from me... login.
The only difference between a tradesman and a businessmen is degree. They're in the same boat.
As to profit motive, everyone wants something better for their family. Possibly he's just subsisting but is subsistence ethically superior then seeking to better yourself? I don't see how that makes any sense.
The point is... these institutions and systems are very old. The current versions are more evolved but they're basically very similar... its reptiles versus birds. Both need to eat and raise their young. You do that or die.
If you don't produce more in your generation then was produced in the previous generation then the population will stagnate or your population will starve.
If the population increases AND people don't starve then it means we've increased production... which means someone is making a profit in capital if nothing else.
As to business not being essential... Only if we wanted to live like animals. Human society... with a human population anything like what we have now requires business.
Tell you what sport... you hate business? Get off the internet. Never use electricity again. Take off any clothes you didn't personally make out of raw materials you didn't personally gather.
And walk off into nature. Enjoy life without commerce.
If you don't die or die out through failing to reproduce... what will your descendants look like in 50,000 years? And what will mine look like if continue in society?
Its rather obvious that society is an advantage and commerce is essential for it. So rather then belly aching the essential... would you rather suggest ways to improve the system so its better without destroying us all?
Just a suggestion.
I've decided to stop wasting my time responding to AC trolls/sockpuppets... so if you want a response from me... login.
Though we use tools like R and Julia to do the real analysis and then present them through .NET or Java based systems.
You need experience doing analysis and working with data. Data Scientists positions have not been (yet anyway) entry level positions.
There are programming jobs in Federal research facilities that work in the field that you describe. NASA, NOAA, USGS, etc all have research facilities where someone with those skills could be put to use. You will most likely work for a contractor, but that's ok. You will need to get used to switching benefits plans and 401k's every time the contract gets awarded to a different vendor, but most of the time the only people that change are the "head office" and a few HR types. All the worker bees and code monkeys just get new business cards with the new contract company's name on them.
These agencies often do collaborative work with universities, so you will still be able to interact with academia if you like.
Do you mind elaborating? If you honestly found software enjoyable (and presumably you had a decent lifestyle and good hours, or could have found it) why did you leave it for medicine?
Do you regret it? Have you been able to use any skills from your previous life in your new career?
I'm facing a similar choice. Thanks.
What with oil possibly on the way out or on the way down, employment long-term might be narrowing in geology, over the decades.
But one computer-intensive area seems to be on the way up: Bioinformatics. More data, more processing, more algorithms to be invented, an endless supply of medical and biological research problems. Also, more different languages in use. Even Google has a bioinformatics research program.
Either way, though, you'd be better off with a masters degree of some kind.
There's a reason that several universities offer a masters in bioinformatics. There are offerings in geomatics, but they don't seem to be targeted directly at geology. At least on the first Google page.
I18N == Intergalacticization
Many labs do need programmers, and some of them are even starting to realize it (I've seen some profs who thought a normal biology student could start programming on complex projects with just a bit of training). As many had said, language will vary with lab and domain - python is a favorite, with some labs holding out to matlab, etc. The hardest thing to do is find the right lab. You're going to have a better chance to get hired by one of the larger/better funded labs (they have more money for positions that are pure science). A normal job website might not have all of these sorts of postings, check with your local academic departments. Programming in a lab is nice in a lot of ways: more flexibility, usually a lot of control over your projects, good atmosphere (mostly). However a few caveats: the pay isn't nearly as good in industry, and you need to work independently - most labs don't have many (if any) programmers so when you get stuck you're on your own. Our lab (neuroscience) is actually looking for programmers right now (python required, and we're just outside Munich) - lots of active projects - email if interested.