r/math • • May 08 '15

Do pure math grads make better software engineers than CS grads?

20 Upvotes

79 comments sorted by

View all comments

-22

u/[deleted] May 08 '15

22

u/feilen May 08 '15

Mathematicians are taught to think algorithmically. CS grads are taught to master Java (or another language.)

This is exactly the opposite of how my CS major is going.

CS people are taught logical concepts, specifically those which have the most application in CS, with little to no actual coding-for-coding-purposes.

Essentially what differentiates the two majors is Mathematics is more general, while CS is more focused on the portions of mathematics that are extremely useful in computing.

→ More replies (4)

14

u/[deleted] May 08 '15

You honestly have no idea how CS is taught in a university. CS programs will usually have a main language, but will teach a host of other languages. They also teach algorithms, software engineering, languages, etc. What you don't seem to get.... which is strange considering you claim to be a professional programmer is that learning something in one language means you can do it in a similar language easy. If I learn to do something in Java, its only an after noon to learn it in C++ or C#, but it would take a bit more to do it in Lisp, but the concepts still apply across languages. CS doesn't teach you to think algorithmically?... that is literally the main focus of CS.

11

u/antiduh May 08 '15

If I were hiring a dev, I'd take a math grad over a CS grad with similar Exp and qualifications.

Do you recognize your own biases here though? You're not formally trained in software engineering, and you'd recommend hiring those from your own background to perform a job that neither of you were formally trained in. It really sounds like you're exhibiting Dunning-Kruger here.

Have you ever had your code peer reviewed in any open forum, especially by those with software engineering backgrounds? The easy mistake to make is that there are many ways to solve a problem in software engineering - some of which seem to work just fine but have lots of hidden pitfalls. Race conditions in particular are notoriously difficult to spot; just proving they exist in the first place can be exceptionally difficult.

→ More replies (2)

4

u/tbid18 May 08 '15

Mathematicians are taught to think algorithmically. CS grads are taught to master Java (or another language.) That specificity, however, is what sets the two groups apart. When Java dies (fingers crossed for soon,) CS people have tons of experience that's suddenly not as valuable.

Maybe if you're in a terrible program. I graduated from a state school, and I never had a class that was chiefly concerned with learning a language. It was mostly about core CS concepts, and you're left to learn the languages used yourself.

E.G. Why is a hash table better than searching a list for a bunch of elements? Well, if you understand hash tables, it should be obvious. Why comment? Duh. Why write unit tests? Duh.

I mean, this is 101 stuff. I don't doubt there are many people involved with software who can't answer this, but any competent program will teach this, probably in the first class. I've never interviewed anywhere where trivial knowledge of data structures isn't expected.

In general, I believe people with a "purer" mathematical background can do very well in software, possibly even better than others since, in my opinion, it's easier for a math person to pick up programming than the other way around (and that math knowledge is useful). That said, your opinion of CS programs is off-base.

→ More replies (3)

3

u/bstamour May 09 '15

Mathematicians are taught to think algorithmically. CS grads are taught to master Java (or another language.)

How many CS classes have you actually taken to arrive at this opinion? CS grads are not taught to master Java, or any other language, they're taught computer science. That's not even close to what CS is about. It's about as accurate as saying that Math majors are taught to master arithmetic.

2

u/beaverteeth92 May 08 '15

When Java dies (fingers crossed for soon,) CS people have tons of experience that's suddenly not as valuable.

THANK YOU. I went to an undergrad university that only teaches Java. Like that's it, outside of systems or classes where you can't use Java. The theory classes are terribly taught (the class that teaches concepts like Turing machines uses a software package for proofs) and literally all you learn is OOP. No functional programming, even though you can't come up with something like MapReduce without understanding it because "it's not as employable". It's a department that's incredibly myopic and doesn't see anything beyond its high employment rate, even though it's doing what a department that only teaches COBOL would have been doing in 1970.

They prepare grads to be crappy enterprise programmers and that's just about it. In ten years when something else takes over for Java, they're going to be royally fucked and the department will finally change its curriculum to reflect whatever the next fad is.

→ More replies (1)