I’m working my way to a CS degree and am currently slogging my way through an 8-week Trig course. I barely passed College Algebra and have another Algebra and two Calculus classes ahead of me.
How much of this will I need in a programming job? And, more importantly, if I suck at Math, should I just find another career path?
you can program without math, but it will be hard to pass a rigorous interview without math.
You should strive to learn symbolic math at least, and make sure you can do all the leet code problems and explanations using whatever math you are comfortable with.
The field is incredibly broad. Choose a field or employer or project that’s not doing that an you’re fine.
Anywhere from very important to not important at all, depending on your specific job.
There is some good news though, you’ve been lied to about sucking at math. Whether by yourself or other people I do not know, but the education research I have seen has been pretty clear that the main difference between people of normal intelligence who are ‘good at math’ and those ‘bad at math’ is how long they’re willing to work on a problem to ensure the correct answer before moving on.
I know ‘try harder’ sucks as an answer but it’s the best one I know of and at least in this case will actually make a difference.
Agreed. Math, for the most part, is very rule oriented and problems only have one answer and often one strategy to get to the answer. If you work on many different problems (in the same subject) you should start to get used to the rules.
Overall I would say a strong math foundation is important to CS but CS isn’t just about coding. You can absolutely get a coding job without strong math skills or even without a degree, it’s just a bit harder to get started. If the discipline still exists you might consider a Business Information Systems degree (we used to call it CS lite). Depending on the position a company might equally consider BIS and CS majors.
i would disagree that math problems only have one strategy for getting to the answer. there are many things, particularly in more abstract math, which can be understood in multiple different ways. the first example that comes to mind is the fundamental theorem of algebra. you can prove it using complex analysis, algebraic topology, or abstract algebra. all the proofs are quite different and rely on deep results from different fields of math.
i think the same thing holds in the less abstract areas of math, it’s just that people are often only taught one strategy for solving a problem and so they believe that’s all there is.
problems only have one answer and often one strategy to get to the answer
Totally disagree
You’re thinking of equations, which only have one answer. There are often many possible ways to solve and tackle problems.
If you’ll permit an analogy, even though there’s “only one way” to use a hammer and nail, the overall problem of joining wood can be solved in a vatiety of ways.
You’re absolutely right. I was referring to equations which, in my experience, is 90% of undergrad math.
Do you have a link to the research? I’m a math educator and I’d like some good materials for encouraging my students.
It really depends on the role you are looking for. If working with data and doing analysis, you need some knowledge in stats and probability. If you are working on simulations, you will need basic calculus and algebra. If you are looking at game development, you will need basic trigonometry and vector arithmetic. The one thing you don’t need is mental arithmetic because you have a computer.
That being said, you can get by without these skills, it just becomes harder to see what you need to do, even if you would know how to implement it. This is alleviated if you are working in a team however.
IMO mathematical/logical/abstract thinking is critical for programming well, but IMO that’s different from “math degree” math.
Software as a means to an end can be used in almost every domain, so proficiency within that applicable domain is often either useful or necessary. That is to say, “math degree” math is likely needed for 3d rendering (certain games), scientific computation (incl machine learning), etc, but maybe not, otherwise. It depends on what software you’re trying to build.
To be more specific, general programming is definitely and specifically different from trig and calc. However, because math is also broad, “mathy” concepts like type theory, relational algebra, set theory are considered important for programming, even if only informally or indirectly so.
Programming is Concrete Math and becomes more and more Math the less abstraction you expose yourself to.
Both are fields you have to engage in problem solving, the better you are in one, the better you are in the other.
Don’t confuse Math with pure arithmetic operations though, its just the base concept which provides the fundament you’re building upon as you dig deeper.
I for example was quite bad at Math up until I got interested in IT, because then I had a reason for learning and be excited about it, but I guess thats a heavily subjective thing.
Engaging with interpreted languages and solving problems on certain sites with those also helped in further developing my problem-solving skills, which made Math easier for me.
Don’t need a degree, but computer programming is fundamentally logic and algorithms. You need to have internalise reasoning logically. In some ways critical thinking is closer to programming than trig is.
Being comfortable with algebra is kinda essential, however you probably won’t make much use of calculus unless you go into certain parts of the industry such as game development.
Practice makes perfect though, you may suck at maths today, but there’s nothing stopping you from getting better at it if you work at it
Depends on the career path. Some need only the very basics - for example in frontend development, you’ll mostly use % and basic +/-.
tbh. Most of the useful programming related knowledge you’ll learn at yoyr first job, not at uni.
The curriculum sometimes will force you to learn something unrelated to your career and it has multiple purposes:
People learn the fastest in the topic where they already know a lot. And the slowest where they know very little.
Learning stuff outaide of your comfort zone literally works out your brain. You learn to learn. And your thinking becomes more flexible.
You should not become somebody who is only good at one narrow singular task and a complete idiot at anything else.
You never know if it becomes useful later in life. So I suggest still trying to do your best at any topic. And studying more for the exams where you are not as proficient.
As to which career path to go for:
Don’t be afraid to change midway, but make sure that you enjoy it. If you enjoy compsci, keep at it. (Or if you have student loan, put some more thought into the cost of switching).
Math, despite being a great skill to have, is not mandatory for a large volume of programming roles. It may hurt you in some interviews but interviews are a fucking crap shoot / shit metric either way. Computers do most of the math, so you don’t have to!
Source: I’m dyslexic, suffered from dyscalculia and migraines until I was allowed to use a calculator, and barely passed high school math. No degree. No bootcamp. 8 years as a dev.
I’ve also excelled in multiple roles where colleagues were math or CS PHD’s, and become the senior or go-to on more projects than not. The key part is to know your strengths. I’m never gonna accept a role developing accounting software, or anything that would require me to code complex math on a regular basis. You’d be surprised how far you can get with Google.
You’ll encounter math eventually. It could be as simple as implementing linear interpolation for a custom type, or understanding why a type is not suited for a particular application (e.g. never use floating points to represent money). If you delve into low-level networking, you’ll need a good understanding of binary/decimal/hexadecimal conversions and operations. If you go into game development or graphics, you won’t survive without a deep understanding of vectors, matrices, and quaternions. Any kind of data science is just math translated to a machine-readable language.
In my opinion, knowledge of the basic concepts is more important than being good at actually performing mathematics with pen and paper. For example, if you need to apply a transformation to a vector, nobody expects you to whip up a program that does the thing. Instead, you should immediately know:
- what a transformation is (translation, rotation, scaling, projection, etc),
- that each transformation has a corresponding transformation matrix,
- that you’ll have to deal with inhomogeneous and homogeneous coordinates, and
- that you’ll have to combine the transformation matrices and the original vector.
That abstract knowledge will give you a starting point. Then you can look up the particulars – the corresponding transformation matrices, the method to convert between inhomogeneous and homogeneous coordinates, and the process of matrix multiplication. I know because I failed calculus.
I don’t think you necessarily need to have studied a lot of math to be successful in programming, but you will need it if you want to get a CS degree, which in turn can be a good lever to a fruitful programming career.
My advice when it comes to math - math skills build upon the concepts you’re expected to have learned before, meaning that if you didn’t fully get everything in the past, then your foundation is not in great shape and you will struggle at higher levels. Going back and repeating the fundamentals just so that you fully understand everything is very helpful in my experience.
I also think that understanding math is rewarding in itself, for what it’s worth!
I tried to go to University for CS but never quite got the hang of the math part. Instead I got a Certification in Computer Science from an apprenticeship (idk if that’s the right Translation, in German we call it “Fachinformatiker für Anwendungsentwicklung”) within 1.5 years and with extreme ease, because it was way less math-heavy and more focused on actual programming.
I stayed with the company that I did the apprenticeship with and got promoted from Junior to Regular within a year. I work exactly in the field and position I wanted to work in when I was going for the CS degree. In fact, I have the exact same responsibilities and the same pay as my colleagues with CS degrees. It might not be like that in every company, but it did work out for me.
Just for fun, I actually went back to Uni this semester to try and actually finish one or two math modules, but dropped out within 2 weeks because I was hopelessly incapable of even understanding the basic concepts lol
Calc 1 and 2 are going to be substantially harder than algebra or trig. People who consider themselves good at math still struggle with calculus. A lot of the people I knew who were not good at math ended up taking one or both calculus courses twice, and in many of those cases, switched their degrees.
Math skills can occasionally be useful, but I don’t see it as a dealbreaker.
The good thing about being good with math is that it usually means you’re a good problem solver, and problem solving is an important skill for programming. But the reverse isn’t necessarily true. You can be good at problem solving but still be bad at math.
I would say if you’re struggling with the programming courses, then maybe look somewhere else. Otherwise, go ahead.