Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm a physics PhD with little actual programming experience.

I've always liked programming and played around with BASIC, Pascal as a teen, but the extent of my experience writing complex programs comes from an introductory course in computer science.

Now I've decided that I'm more interested in programming than in physics and started to learn Java.

Coming from a physics or math-heavy background, what would be the best strategy to maximize my value in the field?

share|improve this question

closed as off-topic by gnat, MichaelT, jwenting, Bart van Ingen Schenau, GlenH7 Jun 17 at 11:04

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – gnat, MichaelT, jwenting, Bart van Ingen Schenau, GlenH7
If this question can be reworded to fit the rules in the help center, please edit the question.

    
You started learning Java recently and you are going for the certification exam next week? What exam? –  user1249 Mar 21 '11 at 19:27
    
I'm going for the SJCP. So I'll have at least something to put on my CV which is programming related... –  inovaovao Mar 22 '11 at 8:52
2  
Impressive, congratulations. I suggest you start with a tiny webserver. –  user1249 Mar 29 '11 at 12:55
1  
Perhaps you would like to add how it went? –  user1249 Oct 2 '11 at 6:35
1  
Now I can tell the story: after two months of job search in Sweden I got hired as an IT consultant and sent on an assignment at a telecom company. They asked me zero questions on programming and so far I'm doing use case analysis. Later I'll probably do testing. It's not really what I was hoping for, but we'll see how it goes... –  inovaovao Dec 22 '11 at 18:45
show 4 more comments

10 Answers

up vote 17 down vote accepted

Have you considered being a Physics person who know how to program? Math heavy programmers are rare.

If you are still in university, take the introductory programming class. You will get a good idea of how more rigid programming is to be done, and allow you to make the decision on a more qualified basis.

share|improve this answer
4  
+1: This is a great answer. If you are a programmer with a deep knowledge of another discipline, it opens all kinds of doors for you. –  Satanicpuppy Mar 18 '11 at 13:52
    
In my field of physics (theoretical particle physics) there's no big need of programmers and physics jobs are really HARD to come by and very few compared to IT. –  inovaovao Mar 18 '11 at 13:56
2  
@Satanicpuppy: great, but could you point me to some of those doors? –  inovaovao Mar 18 '11 at 13:56
2  
@inovaovao, why can't you shift to a related area - an experimental particle physics? It is very computing-intensive, almost everyone involved have to do at least some programming. Also, a very typical route for a PhD in physics is to become a quant in an investment bank. –  SK-logic Mar 18 '11 at 15:29
3  
@inovaovao: Another interesting area might be the signal processing/image processsing area (e.g. car electronics, face recognition, process quality inspection). Lots of math and lots of physics here. –  nikie Mar 21 '11 at 14:26
show 7 more comments

I'm a Java programmer with a math Ph.D. I started programming at age 36, so our situations are similar.

I think that you will find that your degree will open up doors for you even in non-physics, non-math situations.

Since where I work is important to me, I haven't tried to maximize the math angle, though I may try to get into some financial/banking programming eventually. I've stayed away from science research, as I expect that sort of thing is not so broadly available. (As in, plentiful jobs in every city.)

My recommendation is that you learn the basics of web programming, get your first job on the basis of your certification and being a smart guy, and then work on learning to be a really good software developer for a year or two. At that point, revisit the question of who wants a programmer that is really good at learning physics/math.

Here's how it has gone for me so far: My first job was at a startup as a full-time intern, making Java web apps. After nine months, I got a job as a consulting with a very good IT consulting firm. I've been with that company for nine months, and it is going well.

I haven't yet taken the next step of looking for a position that incorporates my math background, for two reasons. I don't want my resume to seem to indicate an inability to commit to a company for any length of time, having three different jobs within two years. The other reason is that I'm finding my compensation increase fairly quickly in the IT consulting world, so I'm not in a particular hurry to leave.

share|improve this answer
    
This looks just like one of the paths I had in mind. Can you tell us a bit more of how it went for you? –  inovaovao Mar 22 '11 at 8:54
    
updated. Sorry that I'm not farther along the path . . . –  Eric Wilson Mar 22 '11 at 14:28
add comment

IMHO, your field of study (Theoretical particle physics) + Java or any other programming knowledge gives you a huge advantage. How about learning (basic or even advanced) Linux, distributed computing, algorithms, etc? You certainly need Unix/Linux skills for most scientific research projects. Many of my friends from other disciplines (Polymer, Mechanical, Industrial, Electrical engineers) are also good computer programmers (C, C++, Java, Python, etc) . Few guys are now studying in Uppsala, Sweden :)

How about looking for all science related computer jobs in universities, scientific/research labs, government/private science labs, electronic product companies, pharmaceuticals, defense, etc? AFAIK, EU has a lot of particle physics labs. Are you interested in expanding your search to those countries/labs? I guess you might have done that already. May be, one more try?! Physics or Science or research oriented IT jobs are your best bet.

If you want to jump into the IT programmers pool, you have many options, based on the job market in Sweden. I don't know the details of Sweden IT market. Big corporate jobs look for Java/J2EE experience; please look at the skillset they want. You need strong Java & J2EE skills, Spring, Hibernate (ORM), Application servers (JBoss, Websphere, Tomcat) and other related topics. For mobile companies, you could learn Android. Your knowledge of particle physics may be helpful in few conversations, I would hope.

You could also try consulting jobs by joining one of the IT consulting/recruiting companies instead of full time employment. Send them your resume and see what they can offer you.

Good luck!

share|improve this answer
1  
However, large corporations are often not the best place to start one's career. Large corporations have a tendency to pigeon-hole people. In a large corporation, one is likely to work in only one area of the system development life cycle. Working for a smaller organization affords one the luxury of working on all phases of the life cycle. One gets a lot more exposure to the up-front systems engineering aspects of taking an organization from nothing to an implemented system, including specifying and implementing infrastructure. –  bit-twiddler Mar 19 '11 at 15:21
    
This is more of the directions I'd like to pursue: "jumping in the IT programmers pool." What I'm not sure about is if anybody would hire a guy like me with a strong science backgound, but no professional programming experience. –  inovaovao Mar 21 '11 at 13:49
add comment

Your core strength compared to other developers is your math and physics background. I would try to stick to fields of software development and technologies where that is an advantage, rather than for more general programming. For example, you're probably going to be more successful in algorithm development, robotics, or defense, or finance, than you are going to be in general web UI programming (where folks with a design background might have an advantage).

Have you considered working in the financial software or algorithmic trading fields? I've known my share of hard-science folks who made this transition fairly well, better in fact than pure CS folks because of the stronger mathematical background. Many of these jobs seek PhDs rather than extensive programming experience.

share|improve this answer
add comment

I'm a Java programmer. You can pretty much teach yourself programming, Java or not, and most great programmers are self-taught, I'd say. This means that the entry barriers to programming is very low, which leads to over-supply of programmers. Results? Lower wages.

I'm not sure if you want to make a career change at this point in your life, especially when you're an expert in your field. Judging from your credentials, you're not exactly young. You need at least a couple of years to learn programming, not just Java syntax or how to use libraries. So by the time you're ready to work as a programmer, you'll be a couple of years older.

There are tons of kids, fresh out of college each year who are mostly younger and better at programming. With everything being equal, employers in general prefer younger people because not only do they learn quicker, but more importantly they are easier to control and will settle for less salary.

Physics phd's are a lot harder to come by than Java programmers because the entry barriers to phd degrees are a lot higher. With your planned career change, you're giving up your comparative advantage as a physicist. Instead of dropping your physicist career to become a programmer, supplement it with your new found interest in programming. You'd get the best of both worlds that way. Like other posters said, math or physics savvy programmers are very difficult to find. You'd be invaluable as a phycist who can communicate with programmers.

share|improve this answer
3  
I desagree that it would take many years to become productive, as the major thing that needs to be learned is not learning a programming language by heart but to solve the underlying problem. Hopefully this has been taught in the math and physics classes that inovaovao has taken so far., –  user1249 Mar 18 '11 at 16:08
2  
"more importantly they are easier to control and will settle for less salary" Control and price are the major driving factors. The "learn quicker" argument is bunk. A well-qualified senior-level software engineer has a huge wealth of knowledge the he/she can leverage when learning new topics. Very little has changed in computer science over the last thirty years. Most new technologies are merely repackaged old ideas. –  bit-twiddler Mar 19 '11 at 15:28
2  
-1 There are a lot of questionable ideas presented as fact here. self-taught programmers->low barrier to entry->oversupply->low wages? Baloney. PhD makes you too old to compete with recent grads? Um, no. Employers prefer younger people? Sure, some do, but plenty of others will prefer someone with a proven track record of solving difficult problems, advanced math skills, and tenacity. –  Caleb Aug 15 '11 at 1:47
add comment

Speaking as a programmer with a degree in astrophysics1, you absolutely can do it. When it comes down to it, the important things to be good at in programming are problem solving and learning (as a general skill). Everything else you can pick up as you go.

I would recommend anything involving 3D graphics or physical simulation, not necessarily games. Having the basic maths knowledge is a huge advantage, even just knowing what a vector or a matrix is.

Good luck!

1 not many jobs there, either

share|improve this answer
add comment

Thats what i am ... well i learnt c# instead of java (and id encourage you to do the same as its a far larger framework that is still being evolved at a rapid pace - although i dont know what is prevelant where you are.).

You need to make a decision though ... do you want to be a programmer or a physicist that programs?

If you want to be a physicist that programs you probably want to look at C or soemthing functional. Wheras if you want to be a programmer that can quickly write apps then java/c# is the way to go imo.

Very different subjects - i have abandonned physics and kinda miss it tbh as i cant get work in it. Now i am a developer that works on largish server architectures to quickly build systems that can work together.

In my spare time i write computer games. Much happier doing this work now.

share|improve this answer
add comment

I'd encourage you to learn about data structures and algorithms. Programming languages come and go, but data structures and algorithms are what is really important.

You've got a PhD in physics, so you're really good at modeling problems. Programming is similar: create a model of the problem, then implement the solution to that problem.

Also, if you use a "Test-Driven Development" methodology when you program, you'll find that programming is very similar to running experiments (a man with a PhD in nuclear physics who is now a programmer told this to me).

share|improve this answer
add comment

The answers here seem quite good, so I don't have anything particularly substantial to add, but you're in good company. My friend Marc Fleury is the original author of JBoss and also a physics PhD!

share|improve this answer
add comment

I have worked as a programmer and I am studying for a PhD. I know that McDonald's manager makes more than either. After I graduate, I will go back to business management. There is an oversupply of cheap programmers from all over the world.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.