up vote 4 down vote favorite
1
share [fb] share [in]

I'm a physics phd with little actual programming experience. I've always liked programming and played around with Basic and Pascal (also VB and Delphi) as a teen, but the largest actual project I completed was an assignement for the introductory computer science class in university where I wrote a nice little program (about 1500 lines of pascal) to display functions of 2 variables in 3D. I've had also a couple other projects of a few hundred lines range, but during my phd I didn't have (or take) the time to program more (string theory is hard guys!), beside playing around with ruby.

Now I've decided that I'm more interested in programming than in physics and started to learn Java (hoping to pass the certification exam next week) and OO design. Still, I have trouble deciding on what to focus next (Java EE? Web development? algorithms and C programming?) in order to maximize my employement chances.

Bear in mind that I'm aiming (mostly) at the swedish job market and that I'm 30 years old.

So for the questions:

  • Do you think that I have any chances to start and make a career in IT and programming coming from physics?

  • What would be the best strategy to maximize my value in the field?

  • Do you have suggestions as to where my physics background might be useful?

Update

Thanks for all the answers and comments. I must say that I would really like to be more of a programmer than a physicist. When I look at the job market it seems that programmers are much more sought for than physicists and I'd really appreciate some real change. I know that in banking and finance they really like physicists, but I don't want to get anywhere near that stuff. I'll try to follow the tip about "math heavy programming" and see what I can find.

In order to summarize and make the question more universal. What kinds of jobs require "math-heavy programmers"?

We already have:

  • Financial and banking analysists
  • Science-research (e.g. experimental particle physics) programmer
  • Game programmers (?)
  • Others?
link|improve this question
You started learning Java recently and you are going for the certification exam next week? What exam? – Thorbjørn Ravn Andersen Mar 21 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 at 8:52
If you can pass the SCJP you Got the language pretty well and you just need experience in modelling the Real World and write Lots of code. The SCJP is not a trivial test. – Thorbjørn Ravn Andersen Mar 22 at 11:13
The SCJP was not trivial, but I still passed with 93% :-) Now I definitely need to write more code to get some experience... – inovaovao Mar 29 at 12:23
Impressive, congratulations. I suggest you start with a tiny webserver. – Thorbjørn Ravn Andersen Mar 29 at 12:55
show 2 more comments
feedback

10 Answers

up vote 12 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.

link|improve this answer
3  
+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 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 at 13:56
1  
@Satanicpuppy: great, but could you point me to some of those doors? – inovaovao Mar 18 at 13:56
@inovaovao, to my knowledge theoretical particle physics are formula heavy. This sounds like an excellent opportunity to be come intimately familiar with Mathematica, as I have known other physics people to be very pleased with as a working tool. Mathematica can do things very quickly that would leave Java and C programmers behind in the dust. – Thorbjørn Ravn Andersen Mar 18 at 15:28
1  
@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 at 15:29
show 7 more comments
feedback

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!

link|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 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 at 13:49
feedback

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.

link|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 at 8:54
updated. Sorry that I'm not farther along the path . . . – FarmBoy Mar 22 at 14:28
feedback

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.

link|improve this answer
feedback

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.

link|improve this answer
2  
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., – Thorbjørn Ravn Andersen Mar 18 at 16:08
1  
"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 at 15:28
-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 10 hours ago
feedback

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.

link|improve this answer
feedback

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

link|improve this answer
feedback

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

link|improve this answer
feedback

I know I'm suppost to help you and not the other way around, but I was wondering... Could you elaborate better your motives to change from physics to programming?

I'm an Electrical Engineer, but I majored in Computer Science. I've been working with software development for the past 10 years... Compared to physics, mathematics or engineering, learning computer programming is pretty easy. Most of my friends (also programmers) are engineers, mathematicians and physicists...

The job market is not very considered with programmers. They treat us like car parts: If you don't fit the whole list of requirements for a job (e.g., you know J2EE, WSDL, XML/XSD, Hibernate, but you don't know JSF, then you're out). Just you have an idea: I'm an C/C++ (UNIX) programmer with much less experience with Java. I'm living in New Zealand and the C/C++ jobs over here are scarce, so I moved to Java. Suddently I'm once again a newbie! All my previous experience in software development is irrelevant to them. They only take in consideration my Java Experience, so I'm earning considerabily less than I used to...

Weirdly enough, most IT recruiters don't know anything about IT and less about programming. I've searched for linkedin profiles for these people and most of them had formal education in Arts, Hotel Management, Turism and other unrelated professions. You go to interviews and it's utterly transparent that they don't understand what one item of the list of the requirements for the job is about...

In the last few years I've been bored to tears. When I start a new job (and I'm lucky enough to have been given the opportunity to learn something that I didn't know previously), I usually learn the stuff in a couple of months and after that there's no challenge anymore: It's solving the same problem over and over again...

That's the reason I've been thinking about getting back to college and get myself a masters/phd degree in physics, biology or other sciences.

I would like you to read this:

http://learnpythonthehardway.org/book/advice.html

I think you're making a mistake, but well... people are different. Funny... we are crossing paths in opposite directions... :)

I think that Zed Shaw is right. The only point of programming is as a tool to solve problems. What needs to be interesting is the problem that you're trying to solve. I think that it's much more interesting being a physicist that knows programming then a programmer. Corporate problems are mundane, uninteresting and repetitive: They will make you reinvent the wheel once a month...

If particles physics isn't interesting to you anymore, you may try to use your skills in other sciences:

http://www.nytimes.com/2010/12/19/magazine/19Urban_West-t.html

Computer skills are always going to be useful in any scientific field. The fact that you have talent for it is a enourmous advantage to you.

link|improve this answer
feedback

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!

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

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