Hi,
scientific programming advice
Can someone without a PhD work in the scientific area as a programmer for a research team?
Yes, absolutely. I work for a quantitative hedge fund and our technical team is formed by dozens researchers and programmers working together. Almost all researchers and about a third of programmers have PhDs.
If so, what skills or projects should candidates have? (Linux, Python and things like Matlab have been suggested to me before)
Those are all good suggestions, but the specific skills are not as important as being able to solve problems. There is a pretty good chance Linux will be used, but the things we value most are algorithms, data structures, probability and statistics. Familiarity with Machine Learning or Control Theory are probably plusses too.
I have been trying to think of some projects, but I haven't had any ideas. With graphics is that there are a lot of cool projects to do in order to learn the graphics elements like raytracers, pathtracers and real-time engines... And then I look at things in science like folding@home and think nope can't do that!
You can try your hand at Physics simulations, at any scale (e.g., lattice QCD, protein folding, fluid dynamics, mining explosions, planet formation, galaxy evolution, cosmic evolution). Or you can do something in Computer Vision. Or Speech Recognition. Or Natural Language Processing. Or you can work on some prediction challenge. Or you can build an autonomous flying robot.
Really, there are many many possible projects, all of which can teach you important things: How to think algorithmically, how to model some complex process, how to collect, store, analyze and visualize data... Just pick something that interests you.
However, a PhD program is the perfect environment to learn about most of those things.
My current companu sounds very similar to Alvaro. There is lots of developers, researchers and data scientists all working together. Some with PhDs and some without.
Being from the UK I'm sure you don't need telling that all the big well paid jobs are in London but there are several other smaller tech "hub" cities where there is a lot of work.
Being from the South-West I'd guess the closest place to you where there is a big demand would be Bristol, try using Meetup and Lanyrd and you are bound to find quite a few tech meetups and hackathons around there.
Can someone without a PhD work in the scientific area as a programmer for a research team?
I have a Bachelor of Science degree with only a small amount of formal computer programming education. I worked for several years as an engineer and programmer for a (U.S.) national laboratory doing nuclear research. The primary projects I worked on used simulated nuclear reactors with a physical system, and computers to record data real-time during induced transients. Other programs were then used to analyze the behavior. Only a few of those involved in the projects had PhDs. The emphasis was more on the ability to understand physical processes, measure and record parameters (temperature, pressure, neutron flux, flow, etc.) and model the processes to fit the data.
If so, what skills or projects should candidates have? (Linux, Python and things like Matlab have been suggested to me before)
I wouldn't call the items you mention "skills." Perhaps you mean "familiarity with APIs, languages and tools." In that regard, in many cases, your ability to learn and use the tools and processes that your employer uses will likely be more important than being a whiz on a particular machine in a particular language. Unless you're fascinated with a particular language or program, you probably won't be satisfied with a job that only requires that you can program spreadsheets in Excel.
I wouldn't call the items you mention "skills." Perhaps you mean "familiarity with APIs, languages and tools." In that regard, in many cases, your ability to learn and use the tools and processes that your employer uses will likely be more important than being a whiz on a particular machine in a particular language.
^^^ This. When it comes down to it, all this scientific research will have some similar parts: converting the words coming out of the PHD's mouth to English (or your native language), sampling, storing, visualizing, searching, and interpreting data, and dealing with weird custom hardware that you can't Google information about.
More important than anything else is the ability to learn something new. So I would try something new, like a raspberry PI sensor graphed and visualized, or something like that. But don't worry, because if you can program you'll learn everything else. There are few things as exciting as research and development.
wow thanks for the responses!
@Alvaro
Thanks for the suggestions, gives me something to look at. I have just finished first year of my programming undergraduate degree, so a PhD would be way off anyway! I just want to use my time effectively...
@Buster2000
Yeah London does seem like the place where it all happens, a lot of VFX programmer jobs are there too...
@Buckeye
Interesting comment thanks :) See the things is, I find the scientific field fascinating but I don't think I'm cut out to do advanced things like nuclear engineering, but translating it into a program would be so cool. I'm experimenting a little with OpenCL because I think GPU compute languages could be really useful for research as it could have great performance on relatively cheap hardware (just a thought, of course I may be totally wrong)
@Glass_Knife
I guess I should look at some actual hardware<-->software programming like the rasberry pi, because it looks cool but it seemed to only be used as a media center!!! I'll have to investigate. And yes research and development sounds awesome, i'm currently headed more towards the VFX industry of research and development but it just seems to be epic! :D
Overall, it seems that I won't need a PhD which was honestly my main concern, it could be something later in life to do, but I really want to give it a go in industry for a while (placement year next year so hopefully I'll have something by then!!!)
I find the scientific field fascinating but I don't think I'm cut out to do advanced things like nuclear engineering, but translating it into a program would be so cool.
Understand that! However, one of the principles of that example is that my B.S. didn't give me specific knowledge of the instruments used to measure various parameters (I hadn't a clue), or specific knowledge for programming a DEC PDP-8 (THAT dates me!), but I had the basics of several scientific subjects and had learned how to learn.
Advanced stuff? That's what PhDs do, and bless them for that. But be prepared to talk to them to find out what they (think they) need. That's the engineering part - whether it's software engineering or nuclear engineering - translating ideas into something that works.
EDIT: Wow, this came out too long. The key of my wall of text is: Yes, you can work without a PhD, the people having them will assist you, and you need problem-solving skills above all, as already said.
---
It is definitely possible to work on scientific computing without a PhD.
I work in a company that develops CFD software and I have not a PhD
Well, I'm currently doing the graphics engine so the fact that the software is a CFD doesn't matter much to me now, but I have had to develop things in the simulation engine in the past. And the process is pretty much:
* The people who actually understanding what is going on and what they want done tell you which new feature they want. You gather as much info from them as you can.
* You go to the simulation engine code and start engineering the solution: choosing what is the most efficient way to gather the data you need, what is the most maintainable organization of the new code, etc.
* If you need any formula to compute something you ask for it (or try to come up with it yourself, just for fun
)
* You program the new feature, and test that it, at least, looks correct.
* You call someone who actually understands what should happen with new feature and ask them if they agree that it works fine or not.
* Either you have to change something, or you can move on to the next task ![]()
So, in principle, the people knowing the physics don't need to know much about programming and the people who develop don't really need to know much about the physics. Of course, the interaction between these two people lead to both of them learning much from each other, so it is pretty enriching. This is actually what I like the most about my work, I never stop learning.
About what skills to have... several: problem-solving skills are a must. You'll need to know pretty much about how computers work also, because you'll need to be very performance-aware when you do things (scientific applications = huge amounts of data which usually need pretty complex processing). Some knowledge of numerical analysis is also valuable but not always required (limitations of floating point, time integration schemes - https://www.udacity.com/course/cs222 -, etc).
The thing is, the "scientific area" as you call it is pretty much huge (there is a lot of 'science' out there) so apart from the common skills I listed many others might be needed for the particular field you want to work in. For example if you are going to work developing a weather prediction application that works in a distributed cluster you might need to know about networking (sockets, OpenMPI, ZeroMQ...). But if you are working in another application entirely developed to run on a CUDA cluster... well, CUDA will likely be a requisite ![]()
In general, be prepared to learn whatever you need to for your work, and don't be afraid to ask what you don't know (nobody is expected to know everything!).
Topic Locked
This topic has been locked by a moderator. New replies are not allowed.