Comment by cryptica
4 years ago
PhDs often make the worst possible developers. People with PhDs (especially in Mathematics) are often lacking the most critical characteristic of a good developer; they don't know why they do things. Being good at math requires being able to solve problems whose solutions often do not have any practical uses or whose practical uses may not be clear. This is very different from how software problems should be approached. Software development is more about finding the right problems than it is about solving problems; to find the right problems, you need to understand the 'why' in as much detail as possible. Every line of code should be easily justified by how it brings the system closer to achieve its purpose. The PhD diploma itself doesn't have much practical use in financial terms; it's not a good investment to get a PhD for purely practical reasons. Detatchment from practicality is the worst attribute someone can have as a developer.
> PhDs often make the worst possible developers.
I personally don't agree.
> Software development is more about finding the right problems than it is about solving problems; to find the right problems, you need to understand the 'why' in as much detail as possible.
This is what a software or CS PhD makes you understand. You know the why's to the lowest level possible.
> The PhD diploma itself doesn't have much practical use in financial terms; it's not a good investment to get a PhD for purely practical reasons. Detatchment from practicality is the worst attribute someone can have as a developer.
In my experience it's the opposite. After I got mine, I realized that I can answer these "Why"s faster, infer my own knowledge and can write better code easier and in less time. The whole process got much entertaining too.
So, YMMV.
I say, it doesnt matter, PhD or no PhD. Alot of the smartest people in the world have no PhD.
What i will say is that, i suspect PhD people to be people that create more theories around how to solve certain problems. And this. is very very very bad. It leads to design patters and generic solutions aka. lazy solutions that are just bloated and slow.
And this is a problem i see often with people who learned to code via school/university or some code academy like BS.
Design patterns are evil, and solutions should always be custom made towards the problem and be made as simple as possible. Only then you wont end up like microsoft or 95% of all developers.
> Being good at math requires being able to solve problems whose solutions often do not have any practical uses or whose practical uses may not be clear to you. This is very different from how software problems should be approached.
I don't really agree. Being good at mathematical research requires recognizing the "core organization structure of a system" and solving the "core problem at hand". I'd argue that it's essentially the same in programming (and business) as well. The main difference is that a mathematical researcher is able to ignore non-pertinent information, while in practice those issues (usually) need to be dealt with.
That said I wouldn't say that PhDs (math or otherwise) make great developers. Their skill in development is a result of experience in developing software within the software industry and not something they gain simply due to "being intelligent" or by working on their on on their POC research implementations. But I'd point out that it's basically the same for professional software developers as well.
However, there are probably infinite organization structures describing a complex system and there isn't any ontological reality to Occam's razor. Programming is really much about deciding where and at what level to allocate partial structure, which again informs the broader picture of the core organization – and some of this may be even intuitive.
Are we actually in disagreement? I could just as well describe math as "deciding where and at what level to allocate partial structure..." in the same way. Mathematical researchers also build intuition over time allowing them to see certain big picture ideas more easily.
If I really take a step back and re-think this whole thread, I'd say the main different between mathematical researchers and programmers is just incentives. Funding and output are just fundamentally measured differently and the work is done very differently with respect to cooperation with others.
Still I'd say that the thing holding back mathematicians from being good developers is simply that research mathematics does not provide development experience.
A bit if a generalisation. For a different view: currently almost all the core devs for NumPy and SciPy (those are the ones I know personally) have doctorates.
I think that we can agree that if you want to become a generalist programmer, able to hop from random web startup to random web startup, then a PhD is probably not that useful. If however you want to become more of specialist, say being able to develop novel solutions to complex fluid dynamics problems then a PhD is very useful place to start.
Meh, it's better to treat software development and underlying academic competencies, like mathematics, as completely separate fields.
Sure, the latter helps the former, but rear in seat experience is best for (I'm assuming) both.
I have a PhD (physics), and I worked in a quant team with maths, physics, engineering and comp sci PhDs, and I can assure you the bell curve demographic is identical there as it is in a department of non PhDs. There are some very good developers, the odd mythical "10x" developer (in this case, someone that really just writes repeatedly same thing in every job to be honest), and some very poor developers.
> The PhD diploma itself doesn't have much practical use in financial terms; it's not a good investment to get a PhD for purely practical reasons.
I don't know if you say this because you have don't have one, or haven't worked with many (not just one) PhDs?
In the UK at least, your starting salary will be significantly higher than just a plain degree, and it also opens up a broader job market (in the City, at least, and aerospace and defense) where PhDs can be a requirement in some jobs because (junk) degrees are now ten-a-penny.
You learn writing skills, and analytical skills both of which are financially useful and practical.
I get the feel that what you're implying is that PhDs are less imaginative and perhaps less likely to be entrepreneurial. In that case, you may have a point.
My point is that, on average, in my experience, they are more interested in big complex theories and hypotheticals than in reality and all its tedious subtleties. They can miss the point that all these tedious subtleties add up in terms of complexity and shouldn't be scoffed at.
This infatuation with complexity is itself a big problem. I've observed a lot of PhDs neglect the cost of complexity. Choosing complex solutions with significant practical drawbacks over simpler ones in order to get some tiny gains in performance (for example) or to get some specific characteristics which they feel is important but which the average user doesn't care about at all.
I find this generalization a bit hard to believe. Good academic researchers should be obsessed with knowing why they do things. After all, researching the state of the art and identifying a knowledge gap is what they do. And they should also be quite good at documenting the how since they write a lot of methods sections.
Maybe not in mathematics as I have no idea what a math PhD thesis looks like but for all other fields I know I'd expect a good researcher to be exceptionally good at giving a reasoning for why they do something and also at knowing what other approaches were tried by other people and what the pros and cons are.
But I find the comparison PhD vs. developer a bit unfair. I agree that you become a better developer if you develop for 4 years instead of doing a PhD. Even in CS, a PhD entails many things that are not developing, namely writing papers, getting grant money, teaching etc.
However, I also agree with you that if the goal is to become a better programmer, a PhD is not the way to get there (imo).
If you're hiring a PhD Mathematician and expecting them to be great developers, then you're quite frankly doing it wrong. Don't get me wrong there are great developers with a PhD in mathematics, but that's got nothing to with their PhD (in general). You hire a PhD mathematician because you have math problems relative to their expertise that you need solving, and if they're not great programmers you pair them with a great programmer to help implement their solutions.
According to the Amdahl's law: Let the smartest do the hardest. According to the Gustafson's law: Add more work if you want to keep the others busy.