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.

You doing C++? Avoid.

You doing basically anything else? You’ll prob be fine with regards to math.

Usually when people say “I suck at maths”, it means that they are bad at doing manual calculus. Maths is extremely useful in programming, but it’s absolutely not the same kind of math. I don’t think that the grade you had in math at school will influence in any if you will be good or bad in programming.

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

Math is less important than logical thinking which often, but not always, goes with math skills. More important still is intellectual curiosity. Do you like solving puzzles? Do you like the feeling of breakthrough after a frustrating struggle figuring out how something works? Those will take you a long way.

I know I am.

AFK BRB Chocolate
link
fedilink
English
269M

Title question first: yes, you absolutely can be too dumb to program.

But as others have mentioned, being bad at math isn’t necessarily a deal breaker, especially if you’re taking about the actual arithmetic part of math.

What turns out to be key to programming is breaking down a problem into steps and figuring out the logic to do what you want to do. The computer is going to do the actual arithmetic, but you’ll need to tell it what you want to do step by step.

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.

@WalrusByte@lemmy.world
link
fedilink
English
69M

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.

Xariphon
link
fedilink
29M

I’ve often thought that I am.

I find that I understand most of the things when I sit down and do a lesson or exercise, but the problem I have is that I don’t stick with it. The gulf between where I am and what constitutes useful programming feels insurmountable, and it drains the motivation right out of me until I wander off and forget all about it.

OpenStars
link
fedilink
49M

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.

Is there a reason you want to start with lisp? If you’re like, intellectually incapable of complex languages, the simple one I’m familiar with is python, which works great for a beginner who doesn’t want to get into the nitty gritty of implementation. As long as you’re not developing for a business or similar, I doubt you’ll even notice there is an efficiency difference. IMO, the increased readability is tantamount to Python’s usefulness to newbies.

THIS!! Start with something simple like Python. I don’t think you need to be good at math to be a good programmer. If you understand the concepts of math theny you will be fine. I heard Rita Wilson say the other day something like “If you keep practising something you can only get better at it”. (not a direct quote) Find a Problem then solve it. That is the best way to learn.

What even is “learn how to code” these days? I work in PowerShell, Shell, Docker Compose, and various xml, yml, json config files. Do I code? When I debug a particularly nasty DNS bug using netcat, dig, nsupdate and other tools it certainly feels like when I was coding Java. And when I push a CI-CD workflow to our tools git repo I work in many of the same tools as the Developers. But I’m not even sure I’d call what I do coding.

That said you can be too “dumb” (hate that word) or rather disadvantaged that you can’t figure out doors and then coding is probably a step too far. But if you can grasp the English language and use it to construct sentence and describe a work task to a colleague for them to perform with it then you can certainly learn how to build at least simpler programs in a programming language, it’s really not all that different. It’s the language of how to tell a computer to solve a task.

Try start with How to design programs 2nd which has a online version. The authors believe everyone could have fun programming and so am I.

Most of the time, you just don’t need that much math to write codes and to be a good application developer.

mhredox
link
fedilink
4
edit-2
9M

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.

I’m starting to believe I am. Been at this for a year and I still don’t understand how to use methods like .filter() or .map() despite reading and practicing, it’s all just smashing the keyboard until it works. I know some other devs will come in and joke they do the same thing but no, I feel truly lost when trying to figure this out.

I have over a dozen years of experience as a software engineer and I started learning Scala and monads recently for a new job. I’ve come to the conclusion that monads are terrible and make things more difficult despite the on-paper description. Don’t worry about it, you’re much more competent than you think.

I’d like to believe that, I really would but I can’t when it takes the better part of 2-3 hours of frustration just trying to figure out how to reverse a string before just doing a for loop and going over each individual character, only to find out all I had to do was something stupid simple like str.split().reverse().join()

But now you know for next time! Everything is a mystery, until you figure it out.

mhredox
link
fedilink
29M

I’ve mostly reached a point where I’m not always having to go back a look up documentation, but for some reason array methods still get me.

Every. Single. Time.

corytheboyd
link
fedilink
4
edit-2
9M

It took me a long time to really grok iterative methods like this, but once it clicks, you will absolutely know and feel like you have unlocked a new super power.

It starts with completely understanding that you are just passing functions as arguments, and those functions are being invoked, in a loop, for each item in the collection. Once you have that concept internalized, you should then learn the difference between filter, map, reduce, etc. The general difference boils down to: 1. How the iterator function changes the value being iterated over (most don’t) 2. What does the iterator function itself return (i.e. map itself, not the function passed into map. map and filter both return a new list, reduce returns the data structure being reduced into)

I would skip trying to understand reduce at first, though it’s the method you can implement all other such iterative functions with. The derivations like map and filter are just easier to start with.

And again, seriously, it took me like 2 years to completely internalize all of this, even after CS classes.

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.

Create a post

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person’s post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you’re posting long videos try to add in some form of tldr for those who don’t want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



  • 1 user online
  • 1 user / day
  • 1 user / week
  • 1 user / month
  • 1.11K users / 6 months
  • 1 subscriber
  • 1.21K Posts
  • 17.8K Comments
  • Modlog