Are Math and CS knowledge really necessary for developers, engineers, and programmers?

Skrew Everything
From The Scratch
Published in
7 min readMar 9, 2021

The infamous question among beginners and programming enthusiasts who are just getting started is-

“Should I know the topics of computer science and mathematics to become a good software developer or engineer or programmer?”

If God can make a random person billionaire every time this question was asked, then the price of a single bread slice would be 1 Billion 💸💸💸

If you are just starting out and search in Google whether math is really necessary then there is a 99 in 100 chance that you come across these type of answers

https://twitter.com/kaktohomo/status/1363759305661546496

Once headmaster (HM) of my school asked me: who do you want to become?

Me: a programmer.

HM: are you good at math?

Me: no.

HM: oh, you’ll need that in order to become a programmer.

Me: …

Now, 8 years later, I am a Web developer, working from home.

I’m still not good at math.

The problem with these types of answers is, although they are not wrong but often taken out of context and quite misleading for beginners who fail to distinguish between developers and engineers.

So, let’s answer some basic questions before we go for a debate over the importance of Math.

In the software industry, the terms developer, engineer and programmer are used interchangeably.

Who is a Software Developer?

A Software Developer is a person who develops applications or software using libraries, APIs, and frameworks.

The libraries, APIs, and frameworks do all the heavy-lifting and the job of the developer is to piece everything together to meet the requirements.

The developer needs to have good logical thinking to reason the components and working of the software. Developers are not expected to solve problems. The job of a software developer is to convert requirements into working code.

When a person is being interviewed for a developer position, the organization expects the person to be fluent in the programming languages, libraries, and frameworks that are being used by them in the production.

For example, if you need to develop a website with animations, you just use the framework. Usually, animation requires the knowledge of mathematics but the framework does all the heavy and exposes an API.

Another example, every database is built on top of complex algorithms, data structures, and memory management techniques, etc., which are used by software developers.

Who is a Software Engineer?

A software engineer is a person who develops software, frameworks, and also systems that will be used by other developers.

These people are the ones who do all the heavy work that’s going into libraries and frameworks etc.

Like any other engineer, Software Engineer should have strong problem-solving, and math skills. Additionally, knowledge of algorithms, data structures is a must no matter what you hear on public forums.

Apart from having those skills, they are also expected to have minimum knowledge about Operating Systems, Databases, Networks, Distributed Computing, Architectures, and Design Patterns, etc.

When a person is being interviewed for an engineer position, the organization expects the person to be fluent in the algorithms, data structures, and minimum knowledge in Operating Systems, Databases, Networks, Distributed Computing, Architectures, and Design Patterns, etc.

This is the reason why many companies during the whiteboard interviews, don’t insist on a particular language. Even in the job postings, they just mention “experience with at least one OOP-based programming language”. The main thing the companies are looking for in an interview is for a person who can solve problems and the ability to build systems that are highly scalable, performant, and maintainable.

For example, if a website needs an auto-suggestion system for its search bar, then the Software Engineer writes a code that takes text as input and produces an array of suggestions, efficiently. Then the software developer uses the API to send the text and display the suggestions to the user.

So, for building an auto-suggestion API that can handle high Queries per second(QPS), the use of data structures, algorithms, and a plethora of other concepts like Memory Management taught in Operating System class, distributed computing, databases, etc., are a must.

Who is a Programmer or Coder?

A programmer is a person who can write code in general. It doesn’t matter whether you can build Tesla’s autonomous driving system, create websites, or participate in hackathons.

If you can write a code, then congratulations!🥳🎉 You are a Programmer now.

Avengers Infinity War

Disclaimer: Sorry to break your heart 💔 but HTML and CSS doesn’t count 😑.

Conclusion

Software Developer: Math and Computer Science topics are not needed but can help in the long run.

Software Engineer: Math and Computer Science topics are must. No excuses! No shortcuts! Although there are multiple frameworks for every small thing these days, still you are expected to learn the internals or at least have a high-level understanding just in case to tear it and modify it to suit your needs.

Programmer: A Superset of Software Developer and Engineer. Nothing more than that. And please don’t call yourself a “Programmer” or “Coder”. It is really cringy to hear. Especially, experienced developers and engineers hate it and look like you are an amateur. So, never use this word in the software industry!

For reference, the below articles are examples of what Software Developers are expected to have knowledge about:

If you look at the titles of articles above, you realize that those are language and platform-specific, just like how I told you in the beginning.

For reference, the below articles are examples of what Software Engineers are expected to have knowledge about:

So, first, decide what you want to become and then try to concentrate on things which are necessary. If are interested in UI/UX and your ultimate goal is to be a front-end developer then wasting your time learning algorithms and data structures is impractical. And the same goes for the back-end developers. If your work is to query the database, use third-party APIs and scheduling tasks, etc., then learning about memory management, distributed computing is futile.

But learning a new thing is never a waste of time. It will always come in handy when needed

So, go ahead and bookmark it, and don’t be selfish! Share it with fellow developers to help them out

Want to have a talk with me? Twitter.com/@SkrewEverything.

Liked it? 👏👏👏 it and Share it.

--

--

Skrew Everything
From The Scratch

A wannabe artist 👨‍🎨, but can’t draw 😫. A wannabe athlete 🏃‍♂️,but can’t run 🥵.Found my peace with coding 👨‍💻 and writing ✍️. Twitter.com/SkrewEverything