5 ms·
Ask HN: Do pure math grads make better software engineers than CS grads?
What has been your experience in this regard?
- 0x12345 12y agoAbsolutely not.
- dudul 12y agoNo.
- m00dy 12y agoOf course not
- jordigh 12y agoAs a pure maths grad, I had to spend a lot of time learning things on my own before I could become marketable hacker. Fresh out of my degree, I had no clear idea of how to do real software development. I think I was able to learn a thing or two, but sometimes I still wish I could have learned about things like networking, database design, and compiler theory in a formal classroom setting. I have seen people say how useless a CS degree is for doing real work, but it seems to me that it offers many benefits that are not easily replaced by self study or a maths degree.
- lgas 12y agoSometimes.
- lgas 12y agoSometimes.
- benburwell 12y agoAs someone graduating next week with an undergrad degree in CS and a minor in math, I don't think I'd be a very good software engineer with just a math degree, but I'm definitely a better software engineer because of my math background.
- _1 12y agoNo. What prompted this question?
- philippnagel 12y agoA pure math grad knows nothing about software engineering, while a CS grad should know some things. By your logic a pure physics grad would be an even better software engineer, as physics is even more "low-level".
- drakenot 12y agohttps://xkcd.com/435/ https://xkcd.com/435/ How would Physics be more low-level than mathematics?
- sitkack 12y agoConstraints for the actual universe we live in?
- philippnagel 12y agoIn an applied sense. But you are definitely right in general!
- analog31 12y agoI'm not employed as a programmer per se, so I see it from the other side. I was also a math major in college, and as a student, my only exposure to CS would have been a single obligatory course in programming. Fortunately, I programmed as a hobby. Most of my classmates took the course and then promptly forgot most of its content. So, pick any random math major and any random CS major, and at the very least, the CS major has a better chance of having the foundations needed to become a good programmer. On the other hand, pick math and CS majors from among the ones who have actually shown enough interest in programming to steer their careers in that direction... now the gap is potentially much smaller. Now compare math and CS majors who have worked for 10 years in software development...
- kordless 12y agoMy experience says that asking questions that have no answer is the surest route to suffering. Of course there are better math major programmers than CS major programmers, just as there are better CS programmers than math major programmers. It goes without saying that asking a question which has multiple truths as answers is equivalent to asking a question with no answer. It would then beg to ask the question, "Why are you asking questions with no answer?". My advice is to ask a better question next time!
- hetman 12y agoIn my experience, maths grads can be really good at very specialised engineering problems like digital signal processing. Beyond that though they tend to produce poorly structured code that will be difficult to maintain. If their problem requires a sizeable amount of code and they have no experience with software engineering best practices then it's best to pair them up with someone that has.
- skimmas 12y agoit depends on what you'll be engeneering
- karmakaze 12y agoNeither. Experience makes better software engineers.
- kenrikm 12y agoIn my experience even a CS degree is not a very good predictor of how good a software engineer someone is, I've met recent CS grads who could not build a stable piece of software to save their lives. Past experience building actual software however is generally a good indicator. With that said this question really has no answer, some math grads are better, some CS grads are better and some beauty school dropouts are better.. as with anything that requires learning and applying a skill those who work harder or are blessed with a talent in the subject tend to be more successful.
- copsarebastards 12y agoNo.
- throwaway28749 12y agoThere are probably some cases where the answer is yes, because a math major who is now a software engineer has had to put in the extra effort to learn the computer science, and the computer science major never needed to do quite as much practice working with abstractions. Most people who go into software without a CS degree learn the practical side of things quite well out of necessity. I expect math majors are more likely than most to pick up the theoretical side even when self-taught, since the level of math involved is what makes it difficult for most people. But regardless of the greater level of self-teaching, the math major is unlikely to have had as good a survey of CS ideas as the CS major. Edit: I agree with everyone else who says that major in school isn't a very good predictor of software engineering ability. This is just my opinion on the direction of the small part that does come from major is.
- ocfx 12y agoYour education in school has nothing to do with your efficacy as a software developer or engineer. There are so many other variables that have nothing to do with how much you know or how fast you are. Soft skills are way more important.
- skierscott 12y agoBetter how so? Faster? Math grads might be able to use some mathematical trick to dramatically speed up the code. Better modularity? Version control? Tests? Experience with SDKs?
- mildbow 12y agoNope. What math trick? You mean knowledge like how caches work? Or, how to spot n^2 solutions that could become n? Or, dynamic programming? Or, linear optimization? Unless you are doing something math specific(in which case you should have someone with more math knowledge than a new grad who can spot these. My first internship had a math phd in the team just for that reason), you will fare much better with your CS grad.
- mariusz79 12y agoNo, what makes you good at software engineering is experience, determination and knowledge. How you achieve any of the above does not matter, especially if you consistently work on improving yourself.
- kvcc01 12y agoOne area I’ve seen math and programming interplay is quantitative finance, i.e., quant-developers attached to trading desks in Wall Street. In this microcosm, the people I see rise up in the world are those who started off with solid finance theory skills (which is applied math), who then taught themselves programming to be just good enough to implement their ideas. This seems doable. The reverse OTOH seems more challenging. I’ve seen many CS graduates who tried to self-study their Black-Scholes, but rarely do they achieve anything more than a superficial understanding of the underlying theory. [I’d except HFT from the above. That specialty seems to reward programming skills more than math skills.]
- noname123 12y agoNot a facetious but serious question, but what theoretical part of Black-Scholes is really important for a options trader's everyday trading? I'm a programmer by trade but I trade options on the side. A long time ago, I read Hull's and Sinclair's derivation of BSM line by line. Nowadays, I totally forget all the math except the intuition as it relates to the greeks and base all my trading on those. Talking as a non-professional, I found the math of BSM to be helpful for me to understand better the option greeks and the model's limitations (assumption of smoothness, doesn't take into account volatility simile's). But not sure how the theory can really help me hedge better, come up with better implied volatility as compared to the current open source plug n' chug frameworks that computes Black-Scholes pricing (e.g., QuantLib). Options trading is a hobby of mine and I'd love to hear a pro's take on these. Thanks!
- lordnacho 12y agoThe BSM will give you all the things that you know intuitively about options. Gamma is high ATM front month, Vega is higher with time, theta accelerates as you near expiry, and so on. In everyday terms, BSM vols are also what's used to talk about what the price IS. So even if you're using a fancy model, to talk to someone else about it you pull out the BSM vol and tell him that way. What will help you hedge better is finding a way for your surface to fit what actually happens when the market moves. It isn't an exact thing; many traders ask for a little more or a little less floating skew from their quant guy.
- mikekchar 12y agoMy experience is that what you did at university (or whatever else you did to get your first programming gig) is far less important than what you did afterwards. I have met many programmers. I have met many new grads. Of the new grads that I have met who learned programming at school, I don't think I have ever met one that was a good programmer right out of the gate. Certainly many can code and make things work. None of them are good enough for me to look at their code and have it influence me in a positive way. That's not to say that I haven't met good, young programmers. It's just that all of the ones I've met had been programming regularly for 10 years or so before they went to university... Some of them didn't go to university at all. I should say as well that I have never met a really good programmer that has less than about 10 years of coding experience, either. I've met lots and lots and lots of people with less experience who thought they were great programmers, but that's different, isn't it? So, from my perspective the answer to the question is "No". Working with great people and devoting yourself to improving makes better software engineers than either doing a math or CS degree in university.
- Chris_Newton 12y agoI suspect a lot of 21-year-old CS grads think they’re great programmers. And a lot of 25-year old professionals with 4 years of experience in the software industry wonder what they were thinking at 21, now that they know how you really build software. And a lot of 30+ year-old professionals wonder how a 25-year-old who had so little experience after working on just one or two different projects for only a couple of years each could possibly have believed they were such an expert. I wonder what 50-year-old me will one day think of 30-year-old me. I have concluded that I will probably think I was ignorant and naïve back then, and that this feeling that everything you did a long time ago was terrible is called being alive. :-)
- copperx 12y agoAnd you will wonder why at 50, with all your experience, you are now unemployable.
- 12y ago
- Chris_Newton 12y agoI studied maths for my undergraduate degree, then did a postgraduate diploma in CS[1]. These days, I make software. The maths background was helpful for developing logical reasoning, rigorous arguments, and working with abstractions. Studying CS exposed me to a wider range of computing ideas than I’d encountered before, from formal models underlying relational databases to functional and logic programming. It also provided some basic but useful general knowledge about things like data structures, algorithms and complexity along the way. I’m glad I studied both areas during my academic career, but for me neither is “better” than the other for someone starting out in the software industry. They just prioritise different skills and mindsets and provide different background knowledge, so each gives a different kind of head start. I wouldn’t say either course taught me anything of great value about software engineering specifically, if we’re talking about the processes and tools used to actually design and build production software here. I think SE is more of a vocational/industrial field, and I wouldn’t necessarily expect a new grad in either math or CS to have much experience in, or even awareness of, the kinds of issues that come up in practice. [1] Very roughly speaking, the diploma course was a one-year conversion course for people with a technical but not CS background, which included the same kinds of topics you’d study in the first couple of years of an undergraduate CS course. Sadly, I don’t know of anywhere that offers a similar course any more.
- fsk 12y agoAdvice to employers: Interview both and pick the one that seems smarter. (or a better "cultural fit" or whatever other stupid metric you use) Advice to students: Pick the area that interests you more. If you plan on pursuing a software career, pick at least a minor in CS.
- mildbow 12y agoNope. Pure math people are significantly worse devs in their first jobs. Significantly. Why? They just don't have the language or training so you can't really give direction that assumes anything. And interns are raw enough anyway, this lack of shared language hurts. My experience is based off of interns though. I'm sure given 2-5 years, it will depend on the person/continuous learning, blah blah rather than what courses they took in college. Now, another aspect of the question seems to be: are pure math grads smarter than cs grads? Nope again. Put a pure math and CS guy in the room together and I'm sure either could flummox the other with arcane jargon/an exercise. We choose what to do in college based on our interests at that time rather than only basic ability. I have CS, Stats, and Math degrees from college and I didn't notice any difference in raw mental horse power or work ethic or work load amongst those 3 majors. Aside: there was a marked difference in work load when comparing my engineering/math/stat classes and my econ minor classes though: weekly assignments for econ took 30 mins before class whereas cs/math assignments easily took a whole day or two of the week each. Aside2: And no, you can't generally say philosophy or physics grads make better software devs too.
- Yadi 12y agoI think one can become a better software engineer only by working your way up to be better in software engineering. Doesn't matter that much (to a certain degree) if you are the CS Master, Math Wiz or the Alchemist, you have to program, program and program to become a better software engineer. It's true that studying CS will give you the privilege of understanding some pretty darn complicated concepts that you wouldn't actually read in your free time. And the same for studying Math, picking up all the good logic and proper way of writing your algorithms. But again, the only way to become a better software engineer is to do software engineering.
- liquidcool 12y agoIf by pure math you mean not even a CS minor, then no, not out the gate. But majoring in math is (or should be) a sign you actually enjoy math. That's important for a few domains like computer graphics and data science/machine learning. I think most CS majors are good at math, but that doesn't mean they enjoy it. Furthermore, there is a huge gap between getting good grades in math and actually understanding it. For most coding jobs, that's OK. The workaround is simple: get a graduate degree. If you get a CS PhD (maybe an MS) specializing in a math-heavy domain, you'll end up with the fundamentals and domain knowledge you need. For many positions, it could be a requirement.
- EdoPut 12y agoSoftware engineers? Hell no. Programmers? Maybe if you add Latex in the list of programming languages. A mathematichian who knows some code
- pan69 12y agoI don't think education is a great indicator of intelligence in the first place. Some people are really smart and an education can bring them to a next level but there are also people who are just good at remembering stuff. These people pass all the educational tests designed to test their "intelligence" but they're actually just tested on their memory capabilities. To me, intelligence is creative problem solving, not memorizing information. However, if you have both, that would be a great advantage. To the question, Math is an exact science. Building software is a creative architectural and design process. My guess is that Math can be very helpful on a algorithmic level but not so much on an software application level.