> Master the mathematical foundations essential for computer science
I get that this is marketing fluff, but I really don't like this sort of gatekeeping - it's what kept me from programming until I was almost 30
These days I'm quite a prolific programmer both on the clock and in my free time, and I wish I could have started earlier now that I know how little math is involved or required to build useful and beautiful things as a programmer
I'd say algebra is required, just because that's what introduces variables and functions. If you get into programming without knowing algebra, you'll learn algebra on Day 1 without realizing that's what you're doing.
Programming doesn’t require algebra[1], which is about manipulating equations.
You only need to understand processes and assignments, neither of which appear in a typical algebra class. You certainly won’t learn how to pass an algebra class about manipulating equalities by programming.
It's unambiguously true that some amount of math beyond high school like that studied in Discrete Mathematics is essential for computer science.
That's not the same thing as being essential for programming.
That being said, studying more CS will only open more doors for you, giving you the tools to solve ever more complex problems, or the ability to recognize when something is effectively impossible.
It's not gatekeeping to point out that a field of knowledge will help you access other fields of knowledge. It's an invitation.
During my professional career the most complex math I had to use was, perhaps, a square root. Something on that ballpark. And that's coming from somebody who enjoyed learning Runge-Kutta methods in college.
Your mileage will vary. I didn't even touch a DBMS after college, either, and I think that is going to be far more useful for the average programmer.
The university I went to started its math education with groups, which is really unfortunate and they never even mentioned monoids.
Monoids are a key idea in computer science and I think that everyone should know what monoids are. Monoids are EVERYWHERE and once you recognize that you have a monoid you can immediately use known methods to compute over monoids in efficiently (e.g. https://static.googleusercontent.com/media/research.google.c...).
Once you have a certain lattice (I'm leaving out some details), you can solve problems efficiently by known methods (e.g. using dataflow solvers) and automatically have a proof that the solution always terminates.
I really wish that more people took their time to learn these fundamentals and I think this is a wonderful introductory site. I don't mean to offend anyone, but if you've never heard of most of that stuff, then I think that you don't deserve to call yourself a professional programmer. Why? You will reinvent solutions to problems that have been solved before much more efficiently then you will be able to i.e. you're an amateur.
> I don't mean to offend anyone, but if you've never heard of most of that stuff, then I think that you don't deserve to call yourself a professional programmer [...] i.e. you're an amateur.
Every person is going to have a different idea of what knowledge is essential, and as you point out, we don't know what we don't know.
It is easy to look down on people who don't know what we consider fundamental, but it takes a little bit of humility to realize that we are ignorant of what other professionals value the most. Different roles require of different knowledge.
20 comments
[ 1.5 ms ] story [ 64.2 ms ] threadOtherwise there are plenty of more important things to learn for software dev.
https://news.ycombinator.com/item?id=1041744
I get that this is marketing fluff, but I really don't like this sort of gatekeeping - it's what kept me from programming until I was almost 30
These days I'm quite a prolific programmer both on the clock and in my free time, and I wish I could have started earlier now that I know how little math is involved or required to build useful and beautiful things as a programmer
There’s certainly roles that require more — but they’re the minority and you can always be taught on-the-job if it really matters.
You only need to understand processes and assignments, neither of which appear in a typical algebra class. You certainly won’t learn how to pass an algebra class about manipulating equalities by programming.
[1] — The high school kind.
That's not the same thing as being essential for programming.
That being said, studying more CS will only open more doors for you, giving you the tools to solve ever more complex problems, or the ability to recognize when something is effectively impossible.
It's not gatekeeping to point out that a field of knowledge will help you access other fields of knowledge. It's an invitation.
Your mileage will vary. I didn't even touch a DBMS after college, either, and I think that is going to be far more useful for the average programmer.
Monoids are a key idea in computer science and I think that everyone should know what monoids are. Monoids are EVERYWHERE and once you recognize that you have a monoid you can immediately use known methods to compute over monoids in efficiently (e.g. https://static.googleusercontent.com/media/research.google.c...).
Once you have a certain lattice (I'm leaving out some details), you can solve problems efficiently by known methods (e.g. using dataflow solvers) and automatically have a proof that the solution always terminates.
I really wish that more people took their time to learn these fundamentals and I think this is a wonderful introductory site. I don't mean to offend anyone, but if you've never heard of most of that stuff, then I think that you don't deserve to call yourself a professional programmer. Why? You will reinvent solutions to problems that have been solved before much more efficiently then you will be able to i.e. you're an amateur.
Every person is going to have a different idea of what knowledge is essential, and as you point out, we don't know what we don't know.
It is easy to look down on people who don't know what we consider fundamental, but it takes a little bit of humility to realize that we are ignorant of what other professionals value the most. Different roles require of different knowledge.