
Ask HN: Do pure math grads make better software engineers than CS grads? - amichail
What has been your experience in this regard?
======
kenrikm
In 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.

------
kordless
My 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!

~~~
sitkack
Do dogs or cats make better pets?

I prefer farm mechanics and philosophers to cs grad when it comes to software.

~~~
kordless
Sounds like me. :)

------
mikekchar
My 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
I 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. :-)

~~~
RogerL
I'm close to that age, and try to always be growing and improving.

I don't look back at 30yo me with disdain. I do find all of normal
programmming pretty mundane and cookie cutter. Design this way or that way,
pick your trade offs, investigate gotchas, think about what this code will be
like in 10 years (most stuff I write has a long life, I don't do web stuff),
trade off robust design with get it out the door, and so on. No biggie.

I get my challenges now with new domains - computer vision, computation, math,
etc - stuff that requires reading research papers. It's fun. There is always a
universe of things you won't know, you just need the humility to understand
that, and I think by 30 or so most of us figure that out. If you don't you are
pretty bull headed, as the compiler will tell you 1,000 times a day that you
don't really know something if you don't. Most people get the clue after
awhile ;)

~~~
fragmede
> (most stuff I write has a long life,

Facebook is 11 years old now; Google is 17, and I'd bet there's a line of code
_somewhere_ in both of them somewhere there that hasn't been touched in 10
years.

> I don't do web stuff)

Feel free to pigeonhole yourself like that, but I've learned not to overlook
large swaths of industry because it's not 'serious'.

 _Reading_ research papers? Both Google and Facebook have been _writing_
research papers in many areas, including Computer Vision. As you point out,
you need humility to take the time to understand what's come before you, but
you also need the hubris to say "we can do better". In the case of FaceNet
(Google) or DeepFace (Facebook), _much_ better than state of the art a few
years ago.

~~~
greenyoda
_" Feel free to pigeonhole yourself like that, but I've learned not to
overlook large swaths of industry because it's not 'serious'."_

He never said that web programming wasn't serious. He just said he doesn't do
work in that area. I'm sure there are lots of areas of computing that the
average web programmer "doesn't do" either, like kernel hacking or embedded
systems or computer vision.

 _" Reading research papers? Both Google and Facebook have been writing
research papers in many areas, including Computer Vision."_

I'm not sure what your point is. Reading research papers is how you learn
what's the state of the art in any field of research (ask any PhD student). If
computer vision is a new domain for him, he has to begin by reading, not
writing. Even the people who write research papers read many more papers than
they write.

------
mildbow
Nope.

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.

------
jordigh
As 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.

------
Chris_Newton
I 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.

------
throwaway28749
There 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.

------
analog31
I'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...

------
pan69
I 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.

------
kvcc01
One 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
Not 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
The 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.

------
liquidcool
If 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.

------
Yadi
I 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.

------
hetman
In 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.

------
skierscott
Better 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
Nope.

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.

------
fsk
Advice 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.

------
benburwell
As 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.

------
philippnagel
A 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
[https://xkcd.com/435/](https://xkcd.com/435/)

How would Physics be more low-level than mathematics?

~~~
philippnagel
In an applied sense. But you are definitely right in general!

------
mariusz79
No, 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.

------
karmakaze
Neither. Experience makes better software engineers.

------
EdoPut
Software engineers? Hell no. Programmers? Maybe if you add Latex in the list
of programming languages.

A mathematichian who knows some code

------
m00dy
Of course not

------
skimmas
it depends on what you'll be engeneering

------
copsarebastards
No.

------
_1
No. What prompted this question?

------
lgas
Sometimes.

------
dudul
No.

------
ocfx
Your 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.

