Lewis Collins, who I incidentally first met when I was eleven, recently asked me for some advice about whether he should get do a PhD in mechatronic engineering. I ended up writing about PhDs more generally. I’m interested in the thoughts of people who have experience with this stuff. Here’s what I wrote.

A disclaimer: I know about software engineering and a few other nearby fields, but not mechatronic engineering. I’ve slightly reorganized your questions.

So I just got offered a PhD scholarship in mechatronic engineering at the University of Sydney. I’ve been trying to weigh up whether it’s worth it for me, and one of the major reasons for doing it would be the chance to work at a high level in R&D at an American tech company or a start up.

What I was hoping you’d be able to help me with, is gauging how much of a benefit having a PhD would be in the labour market over there.

What would be the type of role I would be looking at, would it be entry level (the same as a bachelor graduate) or would a PhD give me the chance to work at a bit of a higher level straight out?

I can’t speak to mechatronic engineering. Here’s how I would have answered if you asked me that question about computer science PhDs.

Computer science PhDs are not very relevant to the majority of software engineering jobs. Around here, you would be much better off with three years software engineering experience than a PhD, if your goal is to work at most of the most prestigious Silicon Valley companies. A PhD is probably the equivalent of about one year’s experience in terms of how much companies like it.

This obviously varies by field. Let’s talk about three different fields: distributed systems, machine learning, and programming language implementation.

Distributed systems—that is, building really large web systems which work for giant Internet companies like Google or Facebook or whatever—is one of the most highly paid disciplines in software. The state of the art in industry is miles ahead of academia, so you’re much better off studying that in industry. And there are lots of software jobs which involve building large web systems, so if you want to get experience in the field it’s really easy to do so in industry (assuming you’re a good engineer, but not assuming that you spent much time studying distributed systems specifically). If you want a really top distributed systems job, you’re definitely better off by going straight into industry.

On the other side of the spectrum, I know a lot of people who want to transition from software engineering to machine learning work. Because ML is so cool right now, it’s quite difficult for them to make that transition. It’s much easier to get a good ML job with a PhD in ML than with a few years’ software engineering experience. So the PhD is absolutely the right path there. However, if you can find some way of breaking into industry without the PhD, that might be the best path of all. (That’s risky though: companies sometimes tell potential employees that they’ll be doing really interesting ML, then give them other tasks once they get there.)

Programming language implementation is another interesting case. Unlike distributed systems, programming language implementation is an extremely academic field, and lots of research is done within academia. However, big companies also work on this, because it’s relevant to their businesses—for example, all the major browsers spend very large amounts of money making fast Javascript engines. The heads of these projects usually have academic experience, but it’s quite easy to get a job working on this stuff without that academic background—Apple offered me a job working on Safari’s JS engine last year without me really talking to them about programming language implementation much at all, they just wanted me to demonstrate that I’m a fast and competent programmer. So it seems plausible that even in that fairly academic field, I would have been better off spending time in industry than doing a PhD.

Do companies see PhD’s as a bonus or more of a hindrance? I have read that some companies don’t like how specialized PhD’s can be, and they see lack of industry experience as a weakness.

This varies strongly by company. If you’re trying to get a job as a specialist in the field which you got your PhD in, obviously the PhD will be helpful. If you’re trying to get a generalist position, companies will consider it to be something between a mild advantage and a mild disadvantage.

Again, companies would usually usually prefer industry experience to academic experience, except in the most academic fields. So if you have a way of sneaking into industry, it’s worth seeking that out.

Mechatronics seems like it might be more credentials based than software engineering, because good software engineers are in such high demand that companies have had to learn to deal with people with weird backgrounds, and I have the weak impression that mechatronics might mostly happen at older and less flexible companies.

Also how big of a disadvantage is being Australian? I can imagine getting sponsored visas and all that is a major downside for a company.

It’s easy for Australians to get visas. I wouldn’t worry about that, unless Trump messes with the relevant regulations, which I suspect won’t happen.

I know all that you can offer me is incredibly general advice but it’s better than none, I’m just trying to work out all my options before I decide to dedicate 3 years into this…

I think people almost always spend insufficient time trying to decide whether they should make big decisions like this. I reckon you should try to talk to at least one person who makes hiring decisions for the kind of roles you’d be trying to get after the PhD, and several people who got into the kind of jobs you want, one way or another.