It’s a question that comes up time and time again in all the “Would you be a good software developer/engineer?” articles and YouTube videos. For me, it was always the most nail-biting question of them all when I was considering whether or not to pursue development as a career.
Where does maths come into coding anyway, I hear you ask? Long story short: If you’re familiar with mathematical and logical ways of thinking, you’ll be more likely to think of an elegant solution to a complex problem, able to condense your code down into fewer lines, and it will probably be more efficient and easier to read.
Some people say being good at maths is essential, some say it’s not necessary. I didn’t know who to believe, because hey, this is some random person on the internet, they could be right, they could also be wrong, everyone’s different… right?
Well folks, I am about to become yet another one of these random people on the internet. But this time, I’m going to approach the question from a new angle - an angle that I think will give anyone who is unsure of whether or not their mathematical ability is a deal-breaker for a career in software development. I’m then going to argue why that angle may be complete and utter rubbish.
Confusing, I know. Bear with me. First I’ll tell you why I think you do have to be good at maths, then I’ll tell you why restricting yourself to that way of thinking is a bad idea. I’m sure you’ve already read the argument that coding requires logical thinking, as does maths, so if the reason you’re not good at maths is because you’re not good at logical thinking, you won’t fare well. And this is absolutely true. However, you can improve these skills, if you want to.
Here’s the question I think people worried by the importance of maths in software dev need to ask themselves and truthfully answer:
If you had to take a high school maths class again, right now, and for an undisclosed amount of time, would you hate it?
If the answer is “maybe” or “yes”, in my opinion, software development probably (note: probably) isn’t for you.
Here I should give you an idea of my own mathematical ability: I’m not bad at maths. I got an A in my GCSEs and a C in my AS Level (for anyone unfamiliar with the UK education system, GCSEs are the qualifications you get when you complete mandatory schooling, and A Levels are generally is the level of qualification you need to pursue a subject at degree level - AS Levels are half of an A Level). Still, I wouldn’t say I’m “naturally good” at maths. I improved my grades from Cs to As during my GCSEs because I genuinely enjoyed the process of learning how to think mathematically. If I’d put in all the hard work and still gotten Cs, sure, I would have been downhearted, but I’d have still enjoyed trying. AS Levels were tough, but I was very proud of achieving a C, and I enjoyed the work that went into it. Please don’t ask me to recite my times tables, though. They left my head a long time ago.
As for my coding ability, I’ve been on my learning journey for 7 months. I’m still a baby. I’ve done a full stack JavaScript coding bootcamp, and now I’m flying solo, improving my skills and learning new things on my own. I’m in a position where I qualify for Junior roles. I’m not a certified fountain of knowledge yet, but I am absolutely in a position where I can tell you that, throughout these entire 7 months, I feel like I’ve been in one, very long, high school maths class.
This “maths class” feeling isn’t because I’ve had to do mathematical equations every day (though I have had to do a few), it’s because I’ve had to get back into the mindset that I was in while I was at school. I’ve had to go back through the process of being presented with all these fancy new words and symbols and being completely overwhelmed at first, then slowly but surely figuring them out. The process of completely not getting it, (why am I even learning this anyway, when will I use it?), pouring over it for hours and putting in some serious mental elbow grease, still not getting it, and then suddenly one day, it just... clicks. You understand what you’re doing and why you’re doing it. Often this will come to you at 3AM when you only just managed to push the problem out of your mind and fall asleep an hour before, annoyingly.
However, it won’t click unless you put in this mental elbow grease. And, unlike school, there’s no one there telling you you have to do it, or a grade at the end of it to motivate you (or frighten you into putting in the effort). You have to find your own motivation - and if you don’t enjoy doing it, where will the motivation come from? There have been countless times that I’ve been so frustrated by a problem, or a bug, that if I hadn’t enjoyed the process, I would have given up learning to code very quickly and thrown my laptop out of the window. The frustration of dealing with a tough bug in your code will destroy your mental wellbeing if you don’t enjoy the process of fixing it - I’ve only been at this for 7 months and I already know this to be 10000% true (mathematically not possible - I see the irony here).
And this learning process isn’t one that will end one day. There’s always new tech you’ll need to get to grips with, it’s always changing, there will always be something new. Therefore, it is one long high school maths class for an undisclosed amount of time. If the thought of such things fills you with dread, maybe software development isn’t the right path for you.
Now I want to look at the flip side of the coin.
Put everything you just read to the back of your mind for a second.
I don’t know you, dear reader, you might be completely different to me, so everything I’ve just argued could be garbage. If your logical thinking skills aren’t that great, it is possible to improve them, and in turn, your ability to tackle these mathematical problems. There are many ways you can do this which aren’t necessarily sitting and studying maths - for me, a lot of my skills have come from studying History and other humanities. Doing things like brain teasers or riddles can really help, whatever floats your boat. But one of the best things you can do to improve your logical thinking skills is, drum roll please… coding.
The articles I was reading 7 months ago forgot to mention that coding itself improves logical thinking skills. What if you start coding, and find that you love it, regardless of whether or not you liked learning maths? If you enjoy creating things using code, you may start enjoying the more mathematical/logical side of it because they are the necessary means through which you create. Don’t forget, you learn as you go along. You don’t need to have already fine tuned your skills. If you enjoy this ultra cool feeling of making stuff appear on your screen, you will naturally improve your logical thinking as you learn how to do that stuff, and you will do it while you’re having fun.
What I’m trying to say is, give it a go. There’s no harm in trying. You can try it for nothing using resources like freecodecamp.org. The worst that can happen is that you realise “hey, I don’t like this”, and you’ve spent a week or two coding when you’d have rather been doing something else. The best that can happen is that you realise software development wouldn’t suit you, it didn’t actually take you that long to come to that conclusion in the grand scheme of things, you’ve crossed something off the list of things you think could possibly suit you, and now you can put more energy into finding what will.
All in all, to be a software developer, you will need to engage with maths, which at times will hark back to the days of punching numbers into a calculator that look like rude words when flipped upside down. If you remember finishing school and being excited by the prospect of never having to hear the words “indices”, “function”, or “variable” again, in my opinion, chances are software development isn’t for you. But there’s only one way to find out - give it a go.
Top comments (6)
Sadly in my professional experience when there was an opportunity to use something really mathematically elegant or even write a data structure it was usually a symptom of overdesign and couldn't be justified in terms of value for the product. It's often better to have something simple, maintainable and performant rather than something that is pristine art but requires a skill to understand/maintain.
The exception to this is in terms of having a profound intuition about what is happening in your application that could be causing problems. I think a mathematical mind is useful there.
Another huge exception to this rule is if you're actually INVENTING something. If you have something that is fundamentally better than what's out there and you're inventing it and it's the central aspect of your product, then yeah.. spare no expense. Go the full math route if that will help you gain advantage.
So I'd say you don't want to complicate things with math if you're just doing standard development. You might want to leverage math to UNDERSTAND and to INVENT novel things if that is part of your business.
A mathematical mind is always good.. but if it's an area you're not good at there's still lots of room for you in the business.
All very good points! Thanks for commenting, I hope readers see this because it very much enriches this post, gives really good insight.
Linear Algebra and computation are intertwined. Programmers should understand this field of math imo, not even just high school math.
Did you mean “maybe” or “yes”? This contradicts the rest of your post.
I certainly did, thanks for pointing that out!
I think it's interesting that you say "programmers" and not "developers" - when I think of a programmer, I think of someone someone who is writing things like operating systems or that sort of more computer science-y thing. When I think of a developer, I think of someone developing software such as an app or website, which is what I was getting at here. That could be a whole blog post in itself, maybe I should do that, and maybe I should edit this post to add a little disclaimer about that somewhere.
So, I guess it depends what you're trying to create, but that being said, you can always learn. If you keep needing to know more maths-based stuff and you remember enjoying it at school, even if it was difficult, then you're probably going into the right field. :)
Tl;Dr;
No, but it will help you if you are 🙂
The main point I was pushing is no, but if you don't ENJOY maths, likelihood is you won't enjoy software development. However, it might be that you enjoy coding itself enough that you don't mind doing the maths, so you have nothing to lose by giving it a go :)