Sign in to follow this  
Karlos

scientific programming advice

Recommended Posts

Hi,

 

I'm currently learning C++ and I have been focusing on the computer graphics area (raytracers/pathtracers that kind of thing) which I have enjoyed thoroughly, but I am still thinking about other career avenues (could be for the immediate or long term future not sure yet) but I have no idea where to start with the scientific area.
 
Another thing is that I don't have a scientific background, I only did Maths and Physics at A-Level and I'm not sure I could commit to a PhD in science without going into industry first. 
 
Would anyone be able to give me some advice on what to do?:
 
Can someone without a PhD work in the scientific area as a programmer for a research team?
 
If so, what skills or projects should candidates have? (Linux, Python and things like Matlab have been suggested to me before)
 
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!
 
Finally, are there science jams/hackathons in the UK that people regularly go to? (I'm based in the South-West so closer would be preferable!)
 
Thanks :D

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites


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.

Share this post


Link to post
Share on other sites

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!!!)

Share this post


Link to post
Share on other sites


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.

 

laugh.png 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.

Share this post


Link to post
Share on other sites

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 smile.png 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 biggrin.png )

* 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 smile.png

 

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 tongue.png

 

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!).

Edited by Javier Meseguer de Paz

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this