I'm a math professor that is losing his job, and I'm trying to gain programming skills, since academic jobs are scarce these days.

Are there particular types of programming jobs that I should try to work towards, in order to leverage my math Ph.D? What particular skills should I try to obtain for those jobs?

Update, 6 months later: For those that are curious, I went the certification route, and it worked for me. I learned Java, then studied for the SCJP test, then obtained a job that is technically an internship, but is full time and pays comparably to being a math professor at a private school with tough finances. I recommend certifications for anyone without a CS degree or IT experience, it is the fastest and cheapest way to get something objective on your resume.

This question came from our site for professional and enthusiast programmers.

closed as not constructive by Mark Trapp Sep 17 '11 at 3:53

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
If this question can be reworded to fit the rules in the help center, please edit the question.

23 Answers
23

I'm a mathematician turned programmer (after a PhD and postdoc in algebra and cryptography respectively). Here are the things that I didn't know before I switched!

1) If you're not straight out of college or university, there aren't many programming jobs for people without experience, so you will probably either need to get experience on say an open-source project in your spare time, or get a semi-academic job where the mathematical ability is the rare skill being sought not the programming ability. Such jobs are typically in scientific and R&D type environments, although there are some in the finance industry and games industry too. Once you have some actual paid experience under your belt, other options will become more open to you.

2) A lot of companies are nervous about people coming from academia. Possible worries tend to include a) you're not somebody who 'gets things done' and that you will get distracted by interesting academic aspects of the job b) you won't find the work intellectually challenging enough c) you will have a sharp learning curve with the team-working and communication sides of the job and d) you are going to want to leave and go back to academia at the first opportunity. There isn't much you can do about these other than try and find ways to reassure people and accept that you won't be able to change some people's minds on these things. Expect lots of questions about your motivation.

3) Don't assume that your mathematical experience is actually going to be that much of a help with programming. If you're a mathematician you are probably logical enough that you won't have much too much problem learning the basics, but a lot of the challenges aren't technical ones and there is a lot to know! Much of this can't be derived from first principles, and there will be large gaps in your knowledge for quite a while. Some people will treat that ignorance as stupidity which can get quite frustrating! However, you will have an edge in some areas - it's easier I think for a mathematician to learning programming than a programmer to learn mathematics.

4) Don't assume that the type of programming you are going to enjoy doing will have a mathematical element to it. This is from my personal experience. The thing I liked about mathematics was coming up with nice abstractions for things and as a result I actually prefer software design to e.g. programming cryptographic algorithms.

5) One other area to consider is programming software related to teaching mathematics, physics etc. My second programming job was in this domain - there aren't many people around who know both how to program, the subject domains and something about teaching.

Also the AI engines need a lot of mathematical modeling as well.
–
Fire CrowMar 30 '09 at 21:08

7

For what it's worth, nearly all of the mathematics you will use in practice for graphics, is fairly basic stuff from the point of view of a mathematician. Sure, you've got vector spaces, dynamical systems, linear algebra, simple AI ... but all at an undergraduate level. Especially for games.
–
simonMar 31 '09 at 16:52

1

FWIW, games would be a last resort for me. I appreciate the thoughts, in any case.
–
Eric WilsonMar 31 '09 at 18:15

I've previously worked in industry as a (primarily scientific) programmer, and these days I'm employed as a research mathematician (math and physics undergrad, math masters and phd). Fwiw, here's my insight.

You haven't given us any information about the areas of mathematics you are most familiar with, or your current level of programming skill. This information would help.

There are a few things you should be aware of. First off, if you aren't already a great programmer, you probably won't ever be. I say this because you've had the opportunity to explore it as much as you wanted, but have been more interested in other things. There is nothing wrong with this, by the way, it's just an observation to set some realistic goals.

Secondly, programming well, particularly on large systems, is probably harder than you expect. Complex systems are, well, complex, and dealing with them well involves a skill set you probably haven't developed as an academic. There are problems in practical work of this nature that are every bit as difficult as anything you've thought about in mathematics, and it's probably worth keeping that in mind. Mathematicians often make poor programmers at first because they can brute force and clever their way into a bad program design that works (for some value of works). If you are clever and good at keeping track of things you can make bad designs fly for a while. Doesn't mean it's a good idea. Research code usually doesn't matter very much, and even if it does it usually doesn't have to last and be extended. So these sins cause little damage in academia but they are poison on a big system. The upside is that mathematicians are usually good problem solvers and good at abstraction, so you can learn to do this well.

Finally, be aware that a lot of industry positions don't even want CS Ph.d's, let along your math Ph.d. They have their reasons, and they are mostly right. So right off the top realize that you aren't looking at most jobs (and if you were, you couldn't compete well with the 18 year olds who've been coding their asses off since 14 anyway).

Have a look at your skill set and interests, and look at the industry and/or government lab jobs that overlap. Plenty of people could use a mathematician with reasonable coding chops, (or a coder with reasonable math chops) but you'll probably have to demonstrate a bit of experience and skill. Particularly now, when academic refugees will be looking for work, and expecting that their degrees transfer in all sorts of ways. Off the top of my head I can think of the following areas that might be of interest: data mining, signal processing (e.g. medical/industrial imaging) , network design & MPI (i.e. high performance computing), robotics (control theory), operations research (industry/military/govt), modeling (e.g. dynamical systems), statistics of all flavors, quantitative analyis (finance and others), fluids & geophysics (oil & natural gas),etc. etc.

There's a lot of stuff out there, and I haven't even begun to cover it all. The fact that you don't already know this though is bit worrisome (just judging by your post, what else can I do?), suggesting that you are now just getting your feet wet. In that case, my first piece of advice is to do two things. First, start working your way through this book link text. It will be fairly quick and natural to your background. You will have to learn a lot of practical stuff that isn't presented in that book, but that's easier to learn. Secondly (and probably more importantly), think about all of these areas, and as soon as you can get involved with a related programming effort. These days you are spoiled for choice, many of the areas I mention above have large, significant projects being collaboratively pursued on the web. You'll learn a lot from interacting with the programmers, but you can bring your skill set to bear also. Working with a largish system this way is probably the closest you'll get to industry experience from where you are sitting, and it will give real credibility to your resume in industry if you can show a few patches etc. No, its not the same thing as actual industry experience, but it's closer than academia.

I should note quickly (this is already way too long) that many of the most promising jobs aren't going to have you just slinging code every day. Learning the arcana of .net or java runtimes, template voodoo in c++, etc. probably isn't worth the time for you. Get good at an expressive language or two that are (with any luck) actually used in the areas your most interested in heading to (hello scipy/numpy and friends). You could fit well doing algorithm development for a place that's got 10 better software people who will actually take your work to product. But you've got to be able to talk to them, and deliver stuff that's practical. The sweet spot for someone like you is probably as the point person on algorithms and/or implementing stuff from papers, with a larger group doing much of the heavy lifting, code wise.

Anyway, just a few thoughts. Hope that helps. Good luck, the academic market is pretty
brutal this year.

I would think that a programming team could use a mathematician, but not as a code monkey, but as someone who will develop the mathematical/physical model for them.

As an example, I remember (barely) a familiar company that was trying in the early 80ties to develop a CAM package (for their own needs). There were two (they were really good, one russian and one ??, maybe polish, but not sure) mathematicians and 7 programmers. Anyway, the project due to some circumstances which couldn't be affected never survived, but the core was finished. In this case branches like interpolation, fitting, splines and surfaces were the subject. Not sure how mathematicians call that branch, that deals with those problems.

I've been doing application development for the past 10 years both working in consulting and in investment banking. My educational background is a masters in math (One of those 5 year programs common in continental Europe).

First off, my opinion about your strengths:

The most useful abilities of a mathematician within the realms of application development are:

She can easily understand the complexity of the business problem we're trying to solve.

She is able to abstract that problem into data or object models.

She is well equipped to inspect the concrete implementation and spot any shortcomings in addressing the model.

One could argue that the above is the description of a "technical business analyst". The actual positioning will depend very much on your social skills.

I would argue that the problem solving skills of mathematicians are often biased towards the "elegant solution" which often translates into very clean code.

However:

Computer Scientists will have a much better toolbag of algorithms and data structures, and understands when to use them.

Physicists and Engineers are generally much better at numerical computations and their applications in finance, bioengineering etc.

During my career, I've made the following, very generalizing observations (which are not meant to offend).

(1) Few people understands what sets a mathematician apart from an engineer or physicist.

(2) Computer Scientists often believe that the math involved in their area is more complex than it is.

(3) There is very little real work outside academia where the concrete skills of a mathematician provides an edge.

"Oh, so you know about noncommutative Noetherian rings? Have you considered a career at Tiffanys?"

Yeah so I know about those noncommutative Noetherian rings. It was fun in school, but I've never had opportunity to use anything from Abstract Algebra in business systems. Check out Erik Lippert's blog. He seems to use it sometimes working on compilers. blogs.msdn.com/ericlippert
–
Lance FisherMar 31 '09 at 1:50

If you want to make use of your maths background, I would take a look at the possibility of quant work. You should find the quant qualifications no problem with your background.

e.g. I'm currently doing the Certificate in Quantitative Finance. There are programming courses included with this (in VBA, for Excel work, and C++ for writing models). The quants I know are also working in F# since it expresses mathematical solutions concisely.

I'm doing the quant course since standard programming jobs will continue to be outsourced and cut. However I believe the banks and funds will keep their business-critical work in-house.

In my career as an applied mathematician, consulting to a variety of groups and organizations, I always felt that the place where an industrial mathematician was most useful was in the interstices, the cracks and crannies between my various client's skills and knowledge. The statisticians, engineers and research scientists I worked with needed software and methods to solve their problems. They needed someone who understood the numerical methods, and could explain the necessary techniques to solve their problems, directing them to a reasonable solution.

My goal was always to work with the customer, understand their problem, then provide an appropriate tool for them to use to solve that problem, carefully explaining it to them in language they understood. In some cases, the tool I would provide came from a packaged externally written toolkit, but often their problems required a custom solution.

This I believe, is a reasonable model for a mathematician to make a career in industry, at least in an significantly sized corporate environment. It worked nicely for me. It requires some programming skills, as well as communication skills, and a good general knowledge of mathematics. I always found I could learn the necessary science on the side.

Hello
I have an MSc as "program designer mathematician". I have both 1) learned a lot of abstract math for years; 2) had been working as software engineer for 2 years and 3) have been working as algorithm developer for 2 years. The 2 categories of programmers: software engineer, and algorithm developer - are distinct professions from each other.
Usual software development tasks need zero math knowledge. Though as a mathematician you would understand any theoretical software development concepts with ease, in practice you will not be able to fight the complexity of a real software development task without both several years of practice and interest.
But an algorithm developer many times needs strong math knowledge, and does not need to have much "coding" practice.
So you should either get a job as a mathematician (there are a lot nowadays even with high salary), or be a programmer, but in that case search the web for "algorithm developer job".
If you still like math, then it would be a big waste of your math knowledge to work as a software developer, especially because math is becoming more and more demanded and well-payed.

This does not provide an answer to the question. To critique or request clarification from an author, leave a comment below their post - you can always comment on your own posts, and once you have sufficient reputation you will be able to comment on any post.
–
MatthieuAug 30 '12 at 20:35

Assuming you are in America, get a job at * National Laboratories (Lawrence Livermore, Sandia, Los Alamos, etc). They will very happily hire PhD's as they do a lot of mathematical modelling. They also pay well.

If you live in the US and are willing to consider the east coast, a lot of the hedge funds look for "Quants". They make great money and bonuses, and the work is very math intensive (making it trickier for CS grads). Make sure to use a recruiter.

I work in pharmacometrics, at the intersection of pharmacology, biostatistics, nonlinear mixed-effect modeling, etc. My strength is in software design, but I pick up the math, with difficulty, as I need it. If you are comfortable with applied mathematics, you could pick up the software design experience as you need it.

Real software (unlike what people are exposed to in an academic setting) requires discipline in organizing and executing. It requires teamwork with other programmers, quality engineering professionals, documentarians, marketing professionals, and product managers. "Toy programs" don't cut it. In math, it is an important skill to "dispense with the details" to get to deep insights. In software engineering, you cannot do that - you have to cover all the bases.

I know mathematicians-turned-programmers, and the software-engineering part remains a struggle, while their mathematical contribution is first-rate.

Best of luck.

P.S. I was raised on a farm as well. I like to kid myself that it gives a mental toughness that serves well in engineering.