Hacker News new | ask | show | jobs
by NoZebra120vClip 1096 days ago
No. In fact, I didn't study any of that. I'm bad at math. I took a required Calculus course (again) about 5 years ago, and struggled mightily, although I did achieve an "A".

For the things I've programmed, I barely needed any math. I found it more beneficial to study things like systems architecture and computer science. Knowing theories behind data structures, functional/imperative programming, algorithms, networking, file manipulation and more, that was the sort of thing I studied and exercised in my programming days.

For the record, I programmed Unix systems and services in C, Bourne shell, Perl, and similar languages. That was my professional career. Of course I got a real early start with BASIC, LOGO, and a little bit of assembly.

1 comments

> For the things I've programmed, I barely needed any math.

I understand that countless engineers have this opinion, but really (and bluntly) all it means is that you’re unaware or ignorant of how maths applies to what you’re doing.

> I understand that countless engineers have this opinion, but really (and bluntly) all it means is that you’re unaware or ignorant of how maths applies to what you’re doing.

I disagree.

I am aware of trigonometry, for example. Sines, cosines, tangents. Circles, curves, parabolas. Degrees and radians. None of that stuff is even encountered in systems programming.

Calculus I know. Derivatives and integrals. Rates of increase and decrease, acceleration, calculating areas and volumes. Totally unnecessary for systems programming. Or is it? Of course, if you're into profiling programs, taking metrics, observing historical trends, then you'll need calculus to make sense out of that type of monitoring data. But if you're slinging code to make an authentication server work, it's irrelevant.

Now, the math that I have handled in programs is basically integer operations. Floating-point math is likewise nonexistent in systems programming. Simple arrays in one or two dimensions, usually. Pointer arithmetic and making sure you're dereferencing the right thing. Bitwise logic with AND, OR, XOR. Different numerical bases: binary, octal, decimal, hexadecimal; converting among those formats and reading them in and out. Exponents, certainly. I learned all the powers of two so early in life!

Again, my background is in Unix systems programming and text manipulation. You just don't need trig or calc in those domains. Not to put a basic program together and get it debugged and deployed, or hack someone else's code.

I think the last time I must have run into trigonometry or floating point in code was in college when I was ftp'ing and installing a bunch of Unix adventure games. Wasn't my code, though; I didn't touch those sections.

And an interesting case in point is LOGO: how do you draw a circle in that language? All you need to do is

  REPEAT 360 [FD 1 RT 1]
Now you may protest that knowing 360 degrees is a tenet of trigonometry, but it seems just like common sense to me.
As someone who has studied a lot more math than CS (including grad level physics and math courses), and does SW for a living, this is nonsense.

I mean, sure, algorithms involve math. If you're dealing with trees/graphs, that's math. If you're compiling a program there is math behind the scenes. But for the majority of SW engineers, actually knowing the math is of little benefit to most problems that SW engineers need to solve. As long as you know the rudiments of algorithmic complexity (big Oh notation, etc), you're good.

(I am excluding trivial things like arithmetic and very basic algebra, as clearly this submission is speaking of more advanced math).

A developer can barely need maths and also benefit from an understanding of maths at the same time. Unsure what your point is, if not just to dunk on programmers without math backgrounds.
To be clear, I don’t have a math background beyond a handful of undergrad classes (I studied biochem). I just really despise the anti-intellectual attitude of “YAGNI” applied to maths.
What's more anti-intellectual, me explaining why someone might use math as an SWE and what I chose to study instead, or you telling me that I'm "unaware or ignorant" of things I'm quite familiar with?