20 votes

Not a 'math person'? You may be better at learning to code than you think

15 comments

  1. [3]
    cptcobalt
    Link
    This is 100% me. I am not a math person at all—I do basic arithmetic using my fingers. Anything more—like Algebra—makes my brain completely stop in its tracks. I consistently failed math classes...

    This is 100% me.

    I am not a math person at all—I do basic arithmetic using my fingers. Anything more—like Algebra—makes my brain completely stop in its tracks. I consistently failed math classes in high school. (The only math I'm not adversarial with is some basic stats, actually, but I never took it in school.)

    But dang it, I can build nice websites and super useful tools for people. I can wrap my brain around a problem, break it down, and implement a quite functional solution with ease. My biggest project right now is an ETL on the Tesla API where I'm taking timeseries and weather data, and trying to calculate a super rudimentary solar forecast based on historical data. In my last job, my coding work was business-critical: things like performance monitoring scripts, data visualization, daily reports, ticketing, and pipeline tracking systems—you name it. All this from me—not a "math person". (If I need help with the math, I can always talk to people; they don't even need to know how to code—I can usually figure out how to translate their assistance into the exact building blocks I need to implement it.)

    Actually, it was my ability to code that tricked me into studying Computer Science in college in the first place. This totally fucked me over. I'm a creative, literary, bookwormish kid that stayed up late on school nights reading and writing fanfiction, not doing my math homework. I wasn't prepared to handle calculus, the first math class I encountered in college—and I failed it spectacularly. Turns out, at the school I studied at, a math minor is only one or two extra classes away for a CS student. In my second semester, I started taking art classes—planning to change majors—but encountered so many institutional and familial issues trying to do that. As icing on the cake, depression caused by the whole experience basically made me stop going to the rest of the classes I was enrolled in.

    So I dropped out.

    I wish I had known better, really. But, really, "the system" failed me. My 5 on AP Computer Science fooled me, my high school, my college, and my parents into thinking I had what it takes—I was by far the best programmer in my AP CS class, but only because I had already taught myself how to code—the new concepts were easy to pick up. However, my consistent Cs, Ds, and Fs in high school math classes should have told anyone that knows a computer science curriculum—like high-school advisors—that I actually wasn't going to do well. In the end, I really needed to find some of creative art/design degree (or even a business degree—with less math, perhaps) with a concentration in systems and computer programming—I'd have really flourished.

    That's not to say that I haven't kept up with the pace in life—all this has just forced me to be a smart, scrappy, and hungry. I'm not incapable. My non-conventional education has definitely caused me some problems, but also when people have taken risks on me, it's paid off in giant ways.

    Anyway, all this to say, I really agree with this article. Programming is really like another level of literacy. With my perspective, I don't feel like math is relevant in any way to programming, unless you're using code to do math. I had a leg up because I taught myself to code early, and didn't lean on math to help me learn how to do so—I wound up making little games with programming (all basic control flow stuff). If you're not a math person, you can certainly learn how to code. And, just like languages, early exposure is far better.

    Actually, side thought. I wonder how I'd do with math in school if I could have taken a math class that introduced concepts in a "code-first" manner. Rather than calculators, graph paper, and many many fuckups....what if I could have just implmenented my own rudimentary functions to do the required math for homework/tests. Certainly forbid libraries—your own implementation would prove your understanding, but a "code-first" math class would have avoided about 90% of my pain. I'd probably be in a drastically different spot today, perhaps.

    23 votes
    1. hamstergeddon
      Link Parent
      I have a really negative relationship with math. I was never good at it and by the time I got to highschool and my other nerdy friends were in advanced math courses while I was taking catch-up...

      I have a really negative relationship with math. I was never good at it and by the time I got to highschool and my other nerdy friends were in advanced math courses while I was taking catch-up courses, I started to associate being intelligent with being good at math. Which did awful things to myself esteem and how I viewed myself. I thought I was a big idiot.

      Then my senior year of highschool we had a catch-all multimedia class centered around web development, graphic design, and for some reason creating a school newsletter (that nobody read). That was the first and only time in HS where I felt like the smart kid because I'd taught myself HTML/CSS before that and was running circles around most of the class. It encouraged me to pursue web development as a career and that's ultimately where I ended up. Took web dev classes at the community college post-HS (I assumed my math grades would keep me from going to a "real" college...idk why tf I thought that) and I ran circles around most of the students there, too.

      But anyway, I've been in web development for over a decade now and I don't think I've ever encountered something more advanced than basic arithmetic. And even then it was mostly for CSS and with the advent of SASS/LESS, you don't even have to do the math yourself anymore. Just plug in the numbers and let it calculate things on build.

      7 votes
    2. teaearlgraycold
      Link Parent
      I was always good at math - it's part of why I decided to study computer science. But if I have any major complaints with math education it's the notation. Math only has a loose standard notation...

      Actually, side thought. I wonder how I'd do with math in school if I could have taken a math class that introduced concepts in a "code-first" manner.

      I was always good at math - it's part of why I decided to study computer science. But if I have any major complaints with math education it's the notation. Math only has a loose standard notation to it, and it follows a lot of conventions that are universally accepted as wrong among programmers (esoteric symbols, single-letter variables, the same notation means different things in different contexts).

      I would love to try and teach people calculus by having students perform numerical analysis in Python. I feel like manipulating function names like integrate(f, limit_start, limit_end) would be much more understandable than

      01

      From there, composition of functions become a lot easier to understand as well. u-substitution, double integrals, everything would be easier to parse in your head and manipulate as needed.

      6 votes
  2. [4]
    teaearlgraycold
    Link
    I'm a professional programmer but never learned a second (human) language. I suppose the correlation works both ways. Maybe I should give a second language a shot. I'm past the ideal age for...

    New research from the University of Washington finds that a natural aptitude for learning languages is a stronger predictor of learning to program than basic math knowledge, or numeracy.

    I'm a professional programmer but never learned a second (human) language. I suppose the correlation works both ways. Maybe I should give a second language a shot. I'm past the ideal age for learning languages, though.

    12 votes
    1. [3]
      Death
      Link Parent
      Ideal age for language acquisition is not a prescriptive limit on whether or not you can learn languages. It just means you should go in with managed expectations, mostly that you are less likely...

      Ideal age for language acquisition is not a prescriptive limit on whether or not you can learn languages. It just means you should go in with managed expectations, mostly that you are less likely to become fully fluent as fast as a young person might.

      6 votes
      1. [2]
        teaearlgraycold
        Link Parent
        I was told I couldn't become fluent past a certain age. Is that wrong?

        I was told I couldn't become fluent past a certain age. Is that wrong?

        1. Death
          (edited )
          Link Parent
          The short answer is "yes" that is wrong. We've since moved past this idea. The longer answer is that while it is pretty indisputable that learning slows down as age progresses, it is not a simple...

          The short answer is "yes" that is wrong. We've since moved past this idea.

          The longer answer is that while it is pretty indisputable that learning slows down as age progresses, it is not a simple question of whether a person's age is past a certain numerical threshold over which fluency is impossible. Age is not the sole deciding factor in whether or not you can become fluent.

          The root of the issue is that adults not only learn slower than children, they also generally have less time and energy to devote to learning. You can very much become fluent in a language at middle age but to do so requires a lot of time and exposure to the language.

          This generally holds for learning in general. Whether it be music, programming, maths...it's not unique to language.

          5 votes
  3. reese
    Link
    First, here's a link to what I suspect is the paper. Second, the article is overgeneralizing a bit. The study was limited to the Python programming language. See this excerpt: The study is...

    First, here's a link to what I suspect is the paper.

    Second, the article is overgeneralizing a bit. The study was limited to the Python programming language. See this excerpt:

    The popularity of Python is believed to be driven, in part, by the ease with which it can be learned. Of relevance to our hypothesis, Python’s development philosophy aims to be “reader friendly” and many of the ways in which this is accomplished have linguistic relevance. For instance, Python uses indentation patterns that mimic “paragraph” style hierarchies present in English writing systems instead of curly brackets (used in many languages to delimit functional blocks of code), and uses words (e.g., “not” and “is”) to denote operations commonly indicated with symbols (e.g., “!” and “==”).

    The study is purposefully dependent on Python being an arguably human-readable language. The findings suggest that English language mastery correlates with ease of learning Python, which likely applies for any natural-like programming language. Surprising? Not to me, but apparently the results challenge long-held assumptions and beliefs held by others.

    I would bet money that effectively learning lower-level languages is far more dependent on mathematical intuition than language skills. I would also bet money that graphics programming and other math-intensive areas shirk the maxim of readability predicting proficiency. I anticipate more research to come that validates my assumptions, but I'd be happy to find out I'm wrong since I'm bad at math.

    I think the takeaway from this and future study is that languages should be as readable as possible, with the caveat being that performance also deserves a seat at the table. There tends to be a trade-off between performance and readability, after all. There are instances where what would otherwise be highly mathematical is instead visual: just look at Unity's Shader Graph or any graphics editing software. I think visual, and especially natural language, intent-based design, are the future of accessibility; languages like Python are just a step in that direction.

    10 votes
  4. [4]
    vegai
    (edited )
    Link
    My intuition has been from the start of my programmer's life some 20 years ago to today that programming is quite far (edit or perhaps I should've said orthogonal here) from mathematics.

    My intuition has been from the start of my programmer's life some 20 years ago to today that programming is quite far (edit or perhaps I should've said orthogonal here) from mathematics.

    2 votes
    1. [3]
      HoolaBoola
      Link Parent
      Depends. Algorithms, for example, are quite close to mathematics

      Depends.

      Algorithms, for example, are quite close to mathematics

      5 votes
      1. joplin
        Link Parent
        Yeah, I find that you can get very far knowing very little mathematics but there are certain domains that would be inaccessible with out it. Graphics, for example requires lots of algebra, a ton...

        Yeah, I find that you can get very far knowing very little mathematics but there are certain domains that would be inaccessible with out it. Graphics, for example requires lots of algebra, a ton of geometry, and a bit of trig for most stuff. But designing and building a great user interface may not.

        1 vote
      2. ali
        Link Parent
        Machine Learning is mostly Maths

        Machine Learning is mostly Maths

        1 vote
  5. cardigan
    Link
    I can't do math to save my life. I was in remedial math until dropping out of high school, and barely made passing grades. I'm totally reliant on my fingers for even basic arithmetic. However, I'm...

    I can't do math to save my life. I was in remedial math until dropping out of high school, and barely made passing grades. I'm totally reliant on my fingers for even basic arithmetic.

    However, I'm very good at Lisp. I tend to approach it like abstract art rather than anything else, although maybe there is a little cross-pollination between it and my love of (agglutinative) foreign languages.

    2 votes
  6. moocow1452
    Link
    Maybe there is some truth to this, because I was always pulled between being good with computers, and ambitiously creative. I'm not really fantastic at coding, I can read it and have a vague idea...

    Maybe there is some truth to this, because I was always pulled between being good with computers, and ambitiously creative. I'm not really fantastic at coding, I can read it and have a vague idea of what's going on, (or at least what levers of a greater machine are being pulled when this input is this number) but problem solving is a creative endeavor same as any, and programming is systematic problem solving, right?

    2 votes
  7. scrambo
    Link
    Like most other comments in this thread, I also had trouble with Math in college! Failed Calc 1 TWICE before passing it in a winter session (with an A- I might add), and failed Calc 2 once (before...

    Like most other comments in this thread, I also had trouble with Math in college! Failed Calc 1 TWICE before passing it in a winter session (with an A- I might add), and failed Calc 2 once (before passing in a winter session with a low B). All in all, I took calc 5 times to be able to graduate from my school, when I wasn't even in the major until 2 weeks before graduation 0_0. But absolutely, I agree that you don't need to be a math person per se to do well in a programming field. If you want the degree though, you'll definitely need some determination to get through the math classes :/

    1 vote