In my experience, generally speaking, CS PhDs
Thus, what is the best reason not to hire a PhD on your development team? And how do you recognize this negative trait as a PhD yourself?
UPDATE 2009/22/1 : Thanks for all interesting answers. I use it as a part of self-diagnose, trying to detect weaknesses I may have because of my years as a PhD. I find it positive that so many of you point out that you should consider the individual and not the title. Yet, of course this question only makes sense in general terms.
I find it puzzling that as a CS PhD, you ought to understand very well what optimization means, and thus you ought to understand that in a company, you have to minimize cost/optimize productivity.
Summary of arguments in posts below, generally PhDs shouldn't be hired because
I wonder which of these traits are actually overrepresented among PhDs. Also, some commenters point out that some PhDs excel in "getting things done". My personal experience is that PhD gave me lots of valuable experience and built character, and I haven't had any problems to adapt and apply my knowledge in the real world. But that may be a biased perspective.
I find many of the answers to this question painful to read. Partially because some of these people are making things up to cosy up to an Administrators opinion. Secondly because they are flat-out wrong.
It's not your job to discriminate against someone because of their title, nor is it to discriminate them because they've "wasted" several years of their life on original problems. Regardless of your opinions on them they were hired under the same interviewing process to yours and they were obviously seemed qualified to do the same work as you.
Although my comments suggest that I am pro-PhD I would argue that it means little more than another job position on a CV/Resume. If a game developer were to arrive at my desk having come straight from a five year stint at Sega I'd assume that they'd have spent that time writing games and would know at least a little bit about graphics, optimisation algorithms and the typical subjects. If a developer were to arrive at my desk with a PhD from the University of Somewhere I would assume that their knowledge base would consist of the contents of their thesis and project. They would get the exact same interview and testing as any other candidate and if they were to make it they're obviously qualified. Now if they were to fail spectacularly it's a problem with the interviewing process more than the person.
The idea that PhD students in general are unable to get things done is hyperbole from the Church of Spolsky. Being a student that often socialises with those in my department I know a couple of PhD students and these guys and girls are extremely hard-working and definitely get things done. Naturally there are those that believe a PhD immediately qualifies them for a senior development role in the same way that a Web Designer immediately declares himself/herself a Programmer because they've mastered XHTML.
I'm genuinely surprised at how many developers here hold grudges against PhD's because of their supposed intellectual superiority over them. It's almost like saying that those of us that have degrees are lazy, sleep all day and leave our work until the last minute because we were once students.
You shouldn't hire a person who has a PhD if you, as the employer, harbor negative feelings toward them simply because of their degree. The relationship is out-of-balance from the start. In the long run, this may represent a greater loss for the employer than the employee.
If you take Joel Spolsky's opinions at face value, it's that PhD's tend to lack on the "getting things done" side.
"Working hard" and putting in "many hours" is not what's important; in fact, the more you can do in less hours, the better. Working smart is better than working hard.
Re motivation - you'll have to justify that. People can spend longer in academia because they are interested in interesting problems, rather than interested in getting things done. Most development isn't about solving interesting problems; it's about bug fixing, maintenance, getting the basic things done in the face of the continual decay of software.
A PhD is training for a research career. PhD students, like researchers and their professors, are rewarded for publishing novel ideas. Novelty is overemphasized, and like other people, PhDs respond to their incentives. There is a strong incentive to get a system to work well enough so that you can take measurements and publish a paper. There is little incentive, maybe even a disincentive, to get a system working well enough that ten people not in your building can use it.
The most dangerous PhD to hire as a software developer is the one who is not able to get a job in research. The person has failed his or her primary mission and is looking for a fallback for which he or she may well lack background, training, and experience.
The best PhD to hire as a software developer is one who has succeeded at research (look at publication record) and whose stated reason for seeking other employment is "I decided that in a research position I could never build a system that would have real-world impact." In other words, the candidate has deliberately rejected the idea of a career in which the primary goal is to publish ideas that have not been published before and has instead embraced the idea of a career building artifacts that solve problems in the world.
This is an interesting question, because I can look at it from the other point of view...
I've been a professional programmer for nearly a decade and a half, (most of which has been the aforementioned maintenance/bug-fix/come up with workable solutions) and (IMHO) I'm pretty good at it.
However, in my spare time, I like attempting to solve complex/interesting problems. Now, in my case, I have the advantage of years of real experience, so I tend not to go too far down esoteric theoretical paths and produce useless code.
My brother is currently finishing up his PhD, and recently emailed me for some help with matrix math in C++. His PhD supervisor happened to be reading over his shoulder when my response arrived, and asked if I wanted to do a PhD.
Seeing as I'd already done a bunch of 'for my own interest' research in AI, and that matched his area of supervision, I jumped at the chance. So in my case, I'm an experienced and productive "hotshot" developer who is just about to start working on a PhD in my spare time.
I will be interested to see how my solutions (or attempted solutions) compare to those put forward by more traditional PhD candidates (i.e. those who haven't left college yet).
I'd like to think that it will make me 'more employable', but in reality PhD's tend to be viewed with almost suspicion, as already mentioned previously.
However, if all goes well, the topic of my PhD will see me headhunted by high-paying financial corporations in a few years time. As I'll be working in the real world at the same time as working on the PhD, I hope I won't fall into the 'ivory tower' mentality that seems to infect the more traditional PhD student.
I've worked with a few directly during my career and, sadly without exception, they all seem to be full of themselves far beyond their ability. I worked with one specifically that would without fail start spouting Star Trek technobabble if pressed for details on the general concepts he was trying to get across, rather than admit he didn't know the details. The problem was that it was difficult to prove this, as he was extremely confrontational when challenged, and would spout even more technobabble and hand-waving in response to serious questions about functionality and implementation of the pie-in-the-sky ideas he was espousing.
He ended up leaving the company and starting his own company based on semantic analysis of the web using the techniques he had tried to explain to us. When I last looked at his website, it was still the same buzzword soup placeholder that it had been when he started it. I strongly suspected at the time that his ideas were unimplementable in practice, mainly because he actually had no idea of what he was talking about beyond the surface level. (Okay, rant over).
I would say the most important thing to consider when hiring a PhD is their ability to listen to someone without the 'all-conquering' Dr before their name.
EDIT: I have to amend a previous point... The best PhD's I've worked with are ones that I haven't actually known had PhDs until someone else told me after the fact...
it all depends on the person, of course
the only overgeneralization i have noticed is that some PhDs are more interested in solving the kernel of the interesting theoretical problems rather than creating a completed production-ready solution to a real-world problem
but if you have a really hard problem to solve, that's ok
Hopefully you are hiring the person not the degree. Personally I wouldn't view getting a PhD as a negative unless the person wants to teach or research, not develop software...but that's not a function of the degree.
I have to disagree to most replies. The best reason NOT to hire a PhD is if he/she doesn't have any Industrial experience and you're looking for an experienced employee. Otherwise, several PhDs with Industrial experience will kick ass in "getting things done". The problem is that most PhDs out there are kids who have never gone through any kind of "real work".
So, please, do not generalize, or otherwise you'll be contributing to the fact that most experienced developers do not take a PhD because they are afraid to be ostracized in the future.
PhD's can find complicated solutions to complicated problems,
But are not exceptionally good in finding simple solutions to simple problems.
EDIT: this answer gets both positive and negative votes. I do not mean to say anything negative about PhD's. I just want to point out that they are not superhumans who will fix anything. PhD's are not trained to just apply a standard solution to a standard repeating situation. If you need a programmer who can apply standard solutions to repeating problems: hirer someone with just professional training in programming/BSc Computer Sciences.
I think it is just a simple economic decision. Most software development activities don't quite require a Ph.D- a resource that costs significantly higher than a non-Ph.D
I missed this question - but I'll chime in since I have experience in that field.
As someone who nearly has a Ph.D (a personal issue came up in my final year which prevented me writing up for over the cut-off period) I can say that some of the better programmers I've met are Ph.D qualified.
Having a Ph.D is about researching things. Designing solutions and implementing novel ways of doing things. That's not a good quality if your shop just wants to crank the handle and turn out the same garbage over and over with bigger version numbers. It's a great quality if you are striving for a better, more useful product.
A Ph.D is generally good at identifying new ways of solving problems or that "next step" that everyone else is missing. It can be very useful to have one or two on staff. Ph.D qualified people are also very good at getting things done and putting in hard yards. It takes quite a bit of that to get the qualification.
All that said, a team composed entirely of Ph.Ds will never get anything done. They'll talk and plan excessively and do very little real work. You just need to find a balance.
I'm a programmer and I have a PhD. Sadly, I recognize all the negative attributes mentioned in the other answers, and I'm afraid some of them apply to me.
I taught C.S. at the college level for 4 years in the early 80s. I quit because, while I enjoyed teaching and relating to students, I wasn't getting research done as I wanted to. When I looked around at the people who were, they weren't also raising a family and consulting to make ends meet. Also, teaching is very demanding - it makes a programming job look like a vacation. Plus, I found intellectual stimulation in real-world problems. I finally did get a number of research papers and a book published. My fellow programmers were glad and supportive of me, but otherwise didn't especially care.
I've been accused of being a bit pompous and hard to work with, but at the same time I can really get things done. I've learned / invented some incredibly useful approaches to problems that simply are not well known, and this makes me walk a tightrope with my fellow programmers. I compensate by trying as hard as possible to be a good team player, because we are all really good programmers and human beings.
So, if you work with a Ph.D., give him / her a little slack. Appreciate the strengths and overlook the weaknesses, if you can.
My experience interviewing (and hiring a few) developers with PhD's is that their theoretical knowledge is great, but their code and design is often terrible. They tend to be too interested in the problem and not the solution nor the user experience.
They also tend to not take criticism as well.
Just my experience. Your mileage may vary.
What I have noticed in the past (not all of them at the same time!):
I wouldn't consider your pros to be foremost. I would consider the ability to take a large project and self-manage it to completion over many years, whilst maintaining documentation, etc, as being the major plus.
I think that it's really important to ask yourself why you are hiring the person, and then to ask what that person did for the PhD.
If you are looking for someone to do hands-on work, it doesn't matter what they did for their degree as long as they had the necessary experiences (work before and after the degree, internships), etc. Make sure to add up time spent on building large systems as part of the PhD. People who do their work in systems often build huge tools over many years (although often in solo) so they may be way more experienced as architects or designers than people who didn't. Of course, working on research prototypes often means sacrificing certain things, so take that into account. However, there are PhDs who do the whole undergrad-to-PhD tour without writing a line of code outside classwork. That's what the interview is for.
It depends ... did they get their masters or phd because they couldn't get a programming gig when they completed their bachelor degree? I've seen plenty of these ... and they are not worth it.
I'm working with a PhD in maths at the moment, and have worked with other PhDs in the past. I myself stopped at the BSc level, mainly because the thought of another 3+ years of poverty didn't appeal.
The PhD I'm working with at the moment lacks any teamwork ability whatsoever. Perhaps that is down to him personally, or to his subject - I'm sure many other PhDs work in research teams and have to get on with people and work together. At the heart, though, scientific research is recognised by individuals - we remember the name of the Nobel winner, not their research group colleagues.
Also, particularly in the arena of software development, I think that PhDs are capable of turning out substandard code in terms of readibility and maintainability. Although I don't know about CS PhDs, the physics and maths ones are not rewarded on the quality/maintainability of their code, just its function.
I recognise that some of my opinions may be controversial, and they are not an attempt to state that all PhDs are the same.
I'm not a PhD nor have I ever been in the position to hire somebody, but am I the only one who feels compelled mention that this is something that should totally be dealt with on a case by case basis? I mean, maybe you can give or take away a few points when filtering resumes, but when you get down to it you need to actually see if a person is competent in writing code or not. There are PhDs who can get stuff done out there and there are PhDs who belong in academia the rest of their life, and it's not fair to make an inference on which category they fall into based solely on their degree.
Do you think too much academia is bad? Then think that google and microsoft are fully academia, for instance in google there are a lot of of phd:
Investigation is hard but it gives too good results in some time far away than non-academia.
I think Its very, very important. Of course with a non-phd for the day to day ;-)
The best reason not to hire a PhD is if he flunked your interview or is otherwise unqualified for the opening.
I read these comments with interest. My Ph.D. in engineering and feel my educational background is essentially required to do the real-world engineering I do. Otherwise, a newcomer would need to spend a long time figuring out the basics before taking over my work. I did a lot of IT consulting as an undergrad (set up networks/servers for companies in the Bay Area (in California)) so I have a bit of experience with this area but much less than engineering. The reason I didn't do CS in college is because I felt it is an 'invented framework' whereby one navigates and creates within a structure predetermined by the developers of the language(s). As such, for one to work in the field, one merely navigates a predefined world of code, hardware, and inconsistencies in order to make things work 'good enough' for some application. On the other hand, I felt that physics, math, eng., chemistry, bio are essentially 'unbounded' and nearly the opposite of the 'invented framework' description I used for CS. In the world of physical sciences (not CS), the rules are not predetermined, so the everyday work we do is potentially affected by unexpected interactions and many fields which cross over. For me, this makes the work interesting and challenging. I wonder, based on the comments above, does it seem to others that real-world CS work may be so reduced by initial language design that interesting problems requiring a lot of education is unnecessary?
For the record, I did degrees in chemistry, mech. eng., chem., eng, and biochem. and work in the crossover space of these disciplines.
It's so funny to see people with no clue giving lectures on PhD. I'm a PhD, so should I do a better job at serving coffee than everyone there in starbucks?
I'm also a developer and a software architect (among other hats). Naturally I have no problem coding. But that's just me. You guys are comparing a researcher with starbucks programmer.
I work on big issues. Things like optimizing a solution for 01 multiconstraint knapsack problem which is NP hard (and there are cases which are not yet proven to have solutions that can be proved optimal). I use them in cases like revenue maximization of internet operator via network admission control where you have to solve the optimzation problem in between 0.7-1.5 milliseconds. You can go around microsoft or google, anyone without a PhD will just be staring with their mouth open. If its solved the telecom wants to hire you - you just saved them a few millions.
I think it depends on if you are hiring for a Haskell/LISP/Ada/APL/(Other obscure academic language) position.
The Phd's I've met always turn their nose at writing in C# or Java...
All things considered equal, I would rather pay for experience than a degree. I personally know a CS person with a PhD and that person lacks the common sense to ever be anything more than a mid-level developer. A PhD, in essence, means that the person could study well, test well, and deliver a thesis. The translation to the real-world is not always a given.
Don't take it the wrong way, there are PhDs that are great - but I am not any more likely to hire a person based on a degree over the work experience that they have.
What about not enough budget?
Of course it depends on the job you're doing. If you're creating a simple CRUD app, I don't think it may worth it.
But if the product in question is the next killer app ( or close to it ) then there will be budget for that in first place.
I have met a few PhD engineers out in industry.
Each of them was not actually all that useful. I'd go so far as to say not that clever, even.
As if they had hidden in academia simply because real life was too hard.
In fact, one chap really sticks in my mind. He was actually completely utterly clueless about the very part of CS that he had done his study on! He could say all the buzzwords and yet he didn't truely grok anything. He hurt the development of one particular operating system far more than any other individual, and it was an OS that was hurt a lot by PhDs in general...
That's my data-points.
I often work in a university where I am surrounded by PhDs.
Without question, the one biggest factor I would have with most of them were I in a hiring position, would be their lack of people skills. I think it comes from spending so much time in an office researching on their own.
I would also add, that I have never met an academic who was a also a great manager (although I'm sure they exist!).
I know this sounds like a generalisation, and it is, but it's true to my experience,
Personality aside, I imagine the biggest negative would be the fact that PhDs have spent more time in school, and as a result tend to have less industry / work experience than their counterparts. IMO industry experience is often more valuable than post graduate studies in the IT industry due to its ever evolving nature.
They often have a tendency to be bored by the "trivial" problems of the real world and end up creating too much abstractions in code that should solve fairly simple everyday problem, often making the total solution needlessly complex.
I have come to know this as the meta-illness. Non-phd's also get this disease, but phd's are over-represented.
* they put their effort and motivation on the wrong problems
Researchers have to understand the best methods, procedures etc. about an area before improving that area. It is sad that others do not understand the value of this additional pain they go through to give world class solution the first time.
* they lack interest in tedious, productive work like debugging
Yes if the debugging is something that could be done by a much lower grade worker.
* you the employer harbor negative feelings towards PhDs
Perhaps Microsoft, Google, Intel, Sun,Alcatel Lucent, Motorolla, Nokia and every company that produces advancement in technology are exceptions:)
* they have problems to cooperate with team, lack people skills
Perhaps. I don't see PhDs fighting among each other though.
* of poor design and coding skills
They don't hire a PhD for their coding skills , do they? That's what a programmer is for. A PhD is usually hired to let his/her team members know the best options available, or to improve that option.
* you cannot afford to hire a PhD, or their expertise is not valuable to you
I don't expect a salary of a CEO. PhDs can solve many problems besides their thesis (research is about finding everything about a topic and doing things better than those already working in that area).
* many of them entered the PhD program because they couldn't get a real job
If that came from Joel, well, he lacks at least one area I have experience of. I am a CS grad, PhD, coder, and entrepreneur. PhD is much MUCH MUCH harder than a real job, and much MUCH harder than doing business.
* they can sometimes be bitter or arrogant
Yes. Read phdcomics.com for humorous take on the reasons.
* they lack valuable industrial experience * they are reluctant to use industry standard tools (C#, java)
If you are hiring someone with no experience, yes, they need to pay their coding dues. Great guys however have those experience. It takes them 2-3 months to get to the speed, but then do the things better than others.
I don't have much to add to this however in regards to
Although slightly off topic. This is also the mantra of workaholics
Compare like for like. I think in the vast majority of cases people would assume you'd be stronger candidate if the time spent on the PHD was spent in the industry.
On the flip side if you are applying for work in a field that your thesis was about you will be the stronger candidate.