6 ms·
I really don't want to sound rude, but this sounds like a classic case of correlation not causality, and I could see the consequences really hurting some people
by Rooster61 12y ago
I really don't want to sound rude, but this sounds like a classic case of correlation not causality, and I could see the consequences really hurting some people.
I am REALLY terrible at algebra (to the extent that I am borderline LD in math), and I have completed a degree in CS and hold a steady job as a software engineer. And I am definitely not the only one. Ask a room full of developers how many are bad at math, and I guarantee the results will surprise you. On the other hand, I know a plenty of folks I went through school with that were math majors so good at algebra they could do full page derivations piss drunk without at hitch. And yet, they would take an intro java course and be totally lost. If they didn't get a java intro class, how do you think they would have done with something as algorithmic as an assembly language, a functional language, or understanding the nuts and bolts like Turing machines and automata?
Algorithmic thinking is definitely an important part of programming, but it is just that, only a part. And quite a few types of development don't emphasize that sort of thinking. I could perhaps see this being a PARTIAL solution for areas where one would be doing a lot of functional programming, but the vast majority of the job market these days is still OOP.
This could really quash the job prospects of programmers who are perfectly capable of writing quality code but are poor with algebra.
- spacehome 12y agoI don't think the author claimed causality. He's interested in prediction, for which correlation is perfectly well-suited. Also, nobody is claiming that the correlation is perfect. You can perfectly well see outliers in his graphs, but outliers don't disprove the correlation.
- Rooster61 12y agoFair point, but showing these graphs complete with the outliers gives a very poor platform to base handing out algebra tests in interviews without establishing causality.
- ObviousScience 12y ago> very poor platform to base handing out algebra tests in interviews without establishing causality Why? It probably shouldn't be your only criterion, but if it has a high correlation, why wouldn't that be sufficient for handing out algebra tests? A high correlation corresponds to predictive power, even if it's not a causal relationship.
- Rooster61 12y ago> A high correlation corresponds to predictive power... That's a bold statement. And one that is unfortunately often times false. Spurious correlations pop up everywhere. They can be notoriously bad at predicting things, and care must be taken not to take rash actions based on correlations that may have no actual clout. I'd say denying someone a job based off of an algebra test is sufficiently rash.
- tjl 12y agoThere's some correlations I love that illustrate this. You have "Lack of Pirates Causing Global Warming": http://www.forbes.com/sites/erikaandersen/2012/03/23/true-fact-the-lack-of-pirates-is-causing-global-warming/ http://www.forbes.com/sites/erikaandersen/2012/03/23/true-fa... and one I hadn't seen before, "Internet Explorer vs. Murder Rate", http://chrisblattman.com/2013/05/24/correlation-versus-causation-in-a-single-graph/ http://chrisblattman.com/2013/05/24/correlation-versus-causa...
- spacehome 12y agoIf I'm trying to pick years with global warming and all I know is the pirate population, I can do pretty well.
- ObviousScience 12y agoWhy do you think those correlations don't have predictive power, eg, that if you give me a graph of the pirate rate over a long period of time, I can't make a pretty good guess about the global warming rate? Now, obviously, these are only very coarsely correlated because they don't reflect small scale variations in either data set (which is why the graphs are so coarse). However, in this case, both seem to actually be driven by a hidden factor (technology and societal advancement), which means that they'll actually likely stay correlated (as long as the correlations with the hidden factor stay strong). Similarly, internet explorer and murder rates. tl;dr: Your articles are correct that correlation doesn't imply causation, but I never argued that increasing math or computer science education would improve scores in the other. Instead, I merely argued that as long as they're correlated, knowing about one will tell you about the other. (Also, the examples you picked don't meet my definition of strongly correlated, because they don't mimic fine features of the data, but that's actually secondary, because the argument you presented doesn't even relate to what I claimed.)
- xivzgrev 12y agoI agree. I think we need to be specific about what's being measured here. Seems it'd be more helpful for backend algorithm development, less critical for front end coding. I don't think it's oop as you suggest - I saw same correlation in a college c++ class. Half the class had easy a's, the rest had really hard c's. I've never seen such a bifurcation in any other college course, usually it's more gradual / continual distribution.
- Rooster61 12y agoThe reasoning behind it not being oop seems misread. I meant Object Oriented Programming. I'm not sure how the c++ correlation refutes that. Did you mean something else?
- stinos 12y agoCompletely agree. In the test presented one can probably replace 'algebra' with 'electrical engineering' or 'electromechanics' or 'physics' etc and get to the same outcome. I'm not exactly good at algebra either, mainly because it's not my field, but know enough about statistics in general to see that this article (well, not so much the article but some of the conclusions presented), is flawed.
- ObviousScience 12y ago> If they didn't get a java intro class, how do you think they would have done with something as algorithmic as an assembly language, a functional language, or understanding the nuts and bolts like Turing machines and automata? I would argue that your last several examples (functional languages on) are more likely to be understood by people really good at math than Java is, and that Java isn't especially predictive in that regard. Functional programming languages are closer in their structure to the way that math is structured than Java itself is, while Turing machines and automata are pretty much just outright math. (Especially when you start talking about the computational power of automata versus Turing machines and the equivalence between some kinds of grammars and automata.) I expect you listed these because they're "hard" computer science, but I'd argue that you think they're "hard" computer science because they're mathy and not your forte. I, for one, had much less trouble with Turing machines, autoamta, formal languages, computability, etc than I did with learning Java.
- Rooster61 12y agoI think I would agree with you more if we were talking about Java on a full implementation basis (actually using the nuances of the language at a high level vs just learning the basic concepts such as variables and control structures common to most languages). I also found Turing machines and automata much easier than conventional math classes. The point I was making was not that they are necessarily harder, but rather that they require a different type of mathematical thinking than your typical algebra based math. I would wager the same true for discreet math. As for functional languages, I admittedly have never programmed in one and perhaps spoke out of personal ignorance. I have, however, heard from colleagues that back my original statement. It's basically hearsay, so take it or leave it.
- evincarofautumn 12y agoThere is a difference between “algebra with numbers” and “algebraic manipulation”. You do the latter all the time with code when you observe and use equivalences like this: if a then return b else return c === return (if a then b else c) I.e., “return” is distributive over the branches of the “if” expression, so you can factor it out. When you see “bad” programmers redundantly specifying Boolean expressions like “x == true” instead of “x”, it’s because they haven’t internalised the fact that “if” takes any algebraic expression denoting a Boolean, not just a special sort of expression with “&&” and “||” and “==” and “<”. Beginning programmers often struggle with learning the elements available in a language and how they can be composed—and that is exactly what an algebra is. I would be very surprised if an aptitude for algebra did not correlate with an aptitute for programming.
- jimmaswell 12y agoThis skill can help to write more concise code and refactor better but I wouldn't say it's the core component. Very well-functioning, maintainable code could certainly be written that was full of "== true" lines. That is preferable to indecipherable long-winded one-liners with no comments that are hard to parse.
- evincarofautumn 12y agoThat’s a false dichotomy. An indecipherable long-winded one-liner with no comments is not well factored code either. I didn’t mean to imply that syntactic manipulation is the core component of programming, only that it’s a required skill, which beginners commonly struggle to learn. I’ve tutored a good number of beginner CS students, and a big issue is developing a general understanding of a language from the few concrete examples they’ve seen. If you’ve only ever seen “name.name()”, you may be surprised that “(expression).name()” is possible. If you’ve only ever seen “if (name == expression)”, you may be surprised that “if (name)” or “name = (name == expression)” are possible. This article concerns how beginners learn to program, and I’m only arguing that I would expect an early understanding of the algebra of programs to be an advantage in learning how to productively manipulate programs. When you’re comfortable with the syntax, it is much easier to reason about the more important issue of semantics.
- jimkri 12y agoI completely agree. My roommate is amazing with math, he has taken every math class available at Drexel for undergrads, but he can not code. He took a intro to programming class and did not pass. I on the other hand am okay at math, including algebra, but I can code. It is easy for me to understand, but it is impossible for him to understand. I think it goes down to Algorithmic thinking but also logical as well. That's the difference I see between my roommate and I.