Skip Navigation

Can one be too dumb for programming?

I've always flunked at math; and knowing how intertwined programming is with math, I'm skeptical of my ability to learn how to code. Can someone be too dumb to learn programming? If it helps, I'm mostly interested in learning Common Lisp.

89 comments
  • Directly answering your question: Yeah you can be too dumb to program. If you cannot read, write or count, you have learning to do before trying programming. I don't think that's you, because you were able to put several coherent thoughts together.

    Let's talk about math class. Because I bet you're not bad at math, you're bad at math class, and this is because for the vast majority of students past about seventh grade, math class is so badly designed I'm going to call it an outright waste of time. Right around seventh grade, they throw away stuff like "If you have three pies and five friends, how do you cut the pies so everyone gets the same amount?" and start with "The transitive immutable property of additive inequality" or whatever. "For the rest of your adolescence and your entire early adulthood, math class is now about your ability to memorize and consistently apply completely arbitrary rules that we're only going to explain to you in nineteen dollar words.

    That meme of 6/2(4+2) or whatever where people argue about whether it comes out to 0.5 or 18 is a symptom of this, because it turns out that meaningless math is meaningless. Funny how it's never a problem in shop class or science class where the numbers actually mean something.

    Yes, there's math in programming. There's math in programming that your math teachers never even tried to teach you because the kinds of people who write school curricula aren't the kind of people who do things for society. You weren't taught boolean logic, you weren't taught base 2 or base 16 math, etc. Find a good tutorial that works for you and you'll learn it.

    I'm also going to give this advice: Don't approach it from the perspective of "I'm going to learn a programming language." Because when you see how big a task that is, you'll be overwhelmed and quit. Instead, pick a project, something you want to build, and say "I'm going to learn how to make a calculator in this language." or "I'm going to make a simple game in this language." You'll learn the parts of the language you need for that, and get it done. Then pick another project, you'll find new aspects to learn about. Keep going in that fashion and before long you'll know how to program.

  • Like with anything, you will not know if you are going to be good at it until you spend a lot of time trying and failing and learning. If you enjoy it, just keep doing it.

  • I wish I could get my head around programming. I've tried learning from books, I've tried learning from codecademy, and all I can do is follow the lessons, I don't understand how I'm supposed to turn all these lines of gibberish into a program that does something. The most common bit of advice I get is "Just make up a project! Find something that you want the computer to do, it's easy and fun!" And I'm over here like... "OK, how?" It's like someone pointing to a pile of metal and a welder and saying "Build something!" Sure, someone who knows how to weld can do that, but most people are going to need more information.

    • You need to pick a project to start out so you have a goal, then from there it's just google searches for each individual part.

      I started learning in High School because I wanted to create a game. I had learned a little bit of Java from a book my dad gave me, but I was kind of in the same spot as you at first where I didn't know how to do anything other than follow along with the book.

      But once I sat down with my goal to make a game, and just started Googling stuff, that's when it started to click.

      Python has easy syntax, so that might be a good place to start. You could google: "Python game library" and it would pull up something like PyGame. Then you could look up "Pygame tutorial" which would give you a baseline on how to set up a window, etc. If you have a hard time with Python fundementals, you could just google "python for loop" or "python functions".

      That's pretty much what my learning process looked like: start with a goal, google how to get started, google each problem as it comes up. I still follow that same process to this day, and I have a CS degree now.

      At the end of the day, it's a skill just like anything else. Just takes practice. I don't think anyone is too dumb to learn it, but it depends on how much you want it. If it's not worth the effort for you then you probably never will.

    • What I tell people is to find something you regularly do manually, and automate it. I download a lot of torrents, then need to rename the many many files so my media server knows what they are. That’s something that can be automated. A perfect project for someone who’s just learning to program.

    • Why not try simple scripts at first? You could write a little script in Bash, JS, or Ruby to create folders or text files. Besides the very basic stuff I did on the high school robotics team, my first programming project was when I worked as a print broker and we invested in a digital press. I needed a program to calculate the cost of a print job, so I learned a little BASIC and wrote a program on my TI-98 to do it for me. It would ask a series of questions (eg - paper cost, single / double sided, color / black and white, how many imposed on an SRA3 sheet, etc) and spit out the cost of the job.

      As for how you use the code, say you write a ruby script; to run it, you'd navigate to the script directory in the terminal and type ./scriptName.rb to run it. If you're using a compiled language, you'd compile it (your lessons would cover how to do this) and then you'd run the resulting binary the same way.

    • I think all three of the people replying to you are wrong. They all think you're having trouble finding a project you want to work on. But I think you're saying you struggle to understand how the logic of a program fits together into accomplishing anything.

      I think you should follow one of these lessons to produce some example code, and then use the debugger to watch it function line by line.

    • Go through the book Automate The Boring Things (Python)

      Then AFTER figure out your own projects.

  • You can definitely learn to program without being great at math. Obviously, depends on what kind of programming.

    If you want a computer science degree though? You’ll need the math.

  • People equate maths to programming, but I think if it more as a creative, problem solving field. Most real world coding problems don't have a precise single correct way to solve them; it's more like architecting a building: you have multiple goals and a lot of freedom in how you achieve them and to what degree

  • I failed math 3 years in a row in high school and I made plenty of minecraft clones using nothing but logic and basic algebra. Math isn't as important to programming as people say, I still can't do division or multiplication on paper, but in a program, I can make it do that for me.

  • I have been programming for years, and although I did minor in math, I can only think of 2 times that I have ever needed any math beyond that of highschool algebra. And those were very niche one-off situations. As others have stated, logic is much much more important, and a good understanding of Boolean logic will take you MUCH farther than any other math related discipline. But even still, logic is, well.... logical if you just think about it. You really don't need to take any courses on it.

    I think the main barrier for entry is that there are simply too many options and different paths to go down when beginning to learn. Also, there just aren't too many really cool things you can do as a beginner that are truly interesting and will keep your attention. The typical "hello world" exercises are boring as hell and of course people aren't going to keep being engaged when they're bored.

    That's why I usually recommend beginners who want to learn to start with an Arduino, regardless of what their final goal language is. Generally speaking, once you learn one language it's pretty easy to learn others, as the foundational knowledge is mostly the same i.e. variables, loops, functions, etc.

    What I think is great about the Arduino is that your code produces a physical, tactile response. Usually one of the very first programs you write (which can be completed in probably 10 minutes by a beginner) is making an led flash something like "SOS". This is leaps and bounds more interesting than something like "hello world" and will usually keep you interested and engaged much longer while learning the basics.

    I started on an Arduino many years back after stumbling upon a Paul McWhorter lesson randomly on Reddit. After becoming pretty proficient with an Arduino, I transitioned over to JavaScript and started learning web development, and I'm now a full time engineer.

  • Keep in mind that many math teachers are incompetent at their jobs - some of that may have had little to do with you.

    Though you are correct that math does involve patience, a willingness to fail often until you eventually get it right, and a logical progression of steps where at each stage you keep track of the results of previous steps.

    I'm saying that you can most likely do it! Though it may be frustrating, especially at first, while you sharpen those skills that math should have taught you but bc of cheapening out in education, you may have skipped over. It's all up to you now though... my advice is that even if it takes you 10 to 100 times longer than someone else to do some little thing, so the fuck what, the important thing is that you can do it! (And if you practice, it gets a heck of a lot easier over time) I love this quote (from C.S. Lewis):

    Don't judge a man by where he is, because you don't know how far he has come.

  • I suck at math and I know programming fairly well. It's more about logic and order of operation than anything. Knowing when to add, subtract, multiply or divide. At least when it comes to math knowledge needed. I feel like most people, even the worst at math, know when to use certain operations even if they couldn't solve the equation they wrote.

  • It’s pure logics and some maths. I suck al logics so I’m not good at programming. But anyway I try to learn to do basic stuff. I won’t use the word “dumb” tho.

  • I used to hate statistics classes in college since they were very focused on what the formulas were and how to do them manually. It was tedious and boring. However, in my Master in Data Science I ended up loving those classes. It was no longer what the formulas were and how to make them. The computer did all that for us in a single function. It was about how to apply them, what logical conditions are needed and how they can break. When moving away from the numeric side of math into the symbolic and logical side I loved it lots more. That may be the case with you

  • No, I don't think so.

    It just takes a bit longer for some to grasp certain concepts of a programming language. If I think I need more time I try to solve an issue for my own projects first. When I need a thing for work, it won't be the first time anymore I see a particular problem and deal with it faster.

    I consider myself an average programmer, but I am also proud of the programs that do some valuable things for me and I can rely on. You can always go back to your old code and optimize it as soon as you learn new things.

    I have respect for those who seem to program only at work and don't show when they are in trouble (stressed because of deadlines), but in the end their code works, too, after it came back from the second review.

  • No unless you're terribly bad with basic algebra and discreet math. When people that interested with programming say they're bad at math, they usually mean they're bad with calculus.

  • The machine does exactly what you tell it to. That's the agony and the ecstasy. All problems in computer science are breaking goals down into things you can do, and then describing them correctly so that they actually happen. The former is what makes programmers feel like geniuses. The latter is what makes programmers feel like complete idiots... over and over and over.

    Coordinate systems are my arch-nemesis. I try converting from one to another by reasoning through the steps, and get complete nonsense. Then I see where I had something backwards, and fix it, and get even worse nonsense.

    What determines if someone is cut out for programming is whether they can say "fuck it" and try every possible combination of steps until something looks right, and then build up from that until nearly everything looks right. It's like a puzzle game created by your own stupidity. You occasionally have to admit you have no goddamn idea why something works, even though the whole project depends on it, and you're the one that wrote it. You can't worry about it. You'll go crazy. Just solve the problem.

    This is a cult that talks to rubber ducks and collects mantras that contradict one another. Because it works. You don't have to feel smart. You just have to make the thing do the thing, and convince yourself that it's not-doing-it because of something you did. If you find yourself staring at six lines of code and repeating "this should work!" until you realize it should be five lines of code - that's not being too dumb to be a programmer. That's what being a programmer is.

  • I feel you, OP: when I started college I was afraid too that I was too bad at math for programming, but it turns out you just have to be good at logic, understanding how things work, breaking down problems and finding solutions, all of which have nothing to do with math ;)

89 comments