You Don't Have To Be Good At Math To Learn To Code
HughPickens.com writes: Olga Khazan writes in The Atlantic that learning to program involves a lot of Googling, logic, and trial-and-error—but almost nothing beyond fourth-grade arithmetic. Victoria Fine explains how she taught herself how to code despite hating math. Her secret? Lots and lots of Googling. "Like any good Google query, a successful answer depended on asking the right question. "How do I make a website red" was not nearly as successful a question as "CSS color values HEX red" combined with "CSS background color." I spent a lot of time learning to Google like a pro. I carefully learned the vocabulary of HTML so I knew what I was talking about when I asked the Internet for answers." According to Khazan while it's true that some types of code look a little like equations, you don't really have to solve them, just know where they go and what they do. "In most cases you can see that the hard maths (the physical and geometry) is either done by a computer or has been done by someone else. While the calculations do happen and are essential to the successful running of the program, the programmer does not need to know how they are done." Khazan says that in order to figure out what your program should say, you're going to need some basic logic skills and you'll need to be skilled at copying and pasting things from online repositories and tweaking them slightly. "But humanities majors, fresh off writing reams of term papers, are probably more talented at that than math majors are."
Programming -- I don't think that word means what she think it means.
I've fallen off your lawn, and I can't get up.
"...In most cases you can see that the hard maths (the physical and geometry) is either done by a computer or has been done by someone else..."
Ok, so you can do a lot of coding without knowing math. So what? If you want to do anything really sophisticated, like design games or do high performance computing or any non-superficial use of a computer, you have to know math.
As an obsessive pure mathematician who is obsessed with twisted forms of coding minimalism to stave off boredom and so on, and who did his PhD in arithmetic.
1. You learn to count from 1 to 100 so well it is effortless.
2. You do so in a way that is fun (e.g. snakes and ladders).
3. You learn to code.
4. When your coding problems require mathematics, you look it up in a book.
Crucially, if you do it this way, you will have motivation to learn the hard maths. Really, motivation does seriously make a difference here.
John_Chalisque
...when you need to google the hex representation of 'red'. *much* better to understand the encoding, and it certainly isn't hard or requires tricky math. it's literally RRGGBB
This is why so much poor software exists in the world. I can only imagine what nightmare code is being generated by such efforts. Yes, anyone can code, just as anyone can build a house. Whether or not the house collapses immediately, whether it has any real value, or by any other measure still depends on the skill of the builder, just as in software. Garbage in -> Garbage out, applies to the code as well as the data. -AB
I spoke to a computer science professor about 2–3 years ago who said he had noticed a curious thing over the last few years. The students in his classes didn't seem interested--or even willing to--in solving programming problems. They just expected to be able to come in, download this framework and that framework, find a solution to a tricky problem on Stackoverflow (or wherever), and maybe write some really rudimentary code to just glue the bits together. Many of the "old " assignments--implement three different sorting algorithms and compare their properties just seemed totally archaic to his students--why would you ever want to actually write a sorting algorithm? After all, somebody out there has already done it better, and that's nothing you would ever need to do as real programmer.
The professor was somewhat alarmed by this, but not totally in disaster mode, because it was probably true that MOST of his students would never need to write a sorting algorithm. Most of his students would never need to implement an algorithm that draws a circle, etc. But still--this was computer science--not community college.
The writer here seems to fall squarely into this class of learner. Honestly, the first thing this article made me think of was that awful Barbie learns programming book where Barbie gets some other people to write the code for a program she designed, thereby becoming a real computer programmer. Maybe the book wasn't that far off the mark after all...
You don't need to be good at math to learn to code...... but as programming at its core *is* mathematics, learning math will almost certainly help you to write better code.
File under 'M' for 'Manic ranting'
You can build simple apps with only basic math skills (such as adding ints together where necessary, etc.). Stuff like that is mostly logic anyway, and it's more important to know how to plan ahead and when/how to do each subroutine to accomplish the larger job. On the other hand, anything low-level usually requires a far greater math understanding. For instance, you aren't going to invent a new crypto algorithm/implementation without a mastery of the underlying mathematical concepts.
"It is a denial of justice not to stretch out a helping hand to the fallen; that is the common right of humanity."
need to be skilled at copying and pasting things from online repositories and tweaking them slightly
This person seems to be confusing the mechanic for the automotive engineer.
I've been writing software for more than 20 years at this point. While yes, if you're doing anything involving creating algorithms or computer graphics/gaming you will likely need higher level math, the average programmer (making websites, making desktop business apps) does not need to learn anything more than basic mathematics.
It irritates me when I hear elitist coders or hiring managers harp on about the need to be a PhD Mathematician on the side while also being an expert in coding. Just as you don't need Picasso painting your bathroom, you don't need a rocket scientist to code your shitty business app.
So humanities majors who trained themselves to crank out large volumes of bullshit text and might occasionally produce something of quality, because probability, will be good programmers because they can train themselves to produce large volumes of spaghetti code and occasionally produce something that compiles and runs, because Google?
No, this isn't programming. A good knowledge of math and logic and structures is vital. Do you REALLY want somebody cranking out volumes of crap code in the hopes that something of value will eventually be pooped out, or do you want a well thought out, concise, understood solution? The humanities hack probably will code for much less per hour than their mathematical counterpart, but the latter will get you to an understood solution much, much faster, thus being the more economical choice of employee in this application (middle management quarterly math aside).
Left MS Windows for Linux Mint and never looked back!
Vote for Bernie in 2016!
These resumes from India all have 10 years of programming experience in html 5 and everyone of them have a degree in mathematics or cs! It is time Americans also had such backgrounds or we can't find enough qualified workers to do differential equations for Adobe Dreamweaver
http://saveie6.com/
We have Google!
Lord, help us!
“He’s not deformed, he’s just drunk!”
This is exactly what is wrong with a lot of modern coding. People become too reliant on "black box" functions and libraries where you simply pass in values and the output magically appears. The problem is that there are a lot of poorly written libraries that simply get used over and over again without a care in the world.
Yes, it makes it easier for common tasks but it also takes away a lot of the creativity that drew me to programming in the first place.
"In most cases you can see that the hard maths (the physical and geometry) is either done by a computer or has been done by someone else." (Since the author of TFA was too lazy to [sic], I too should follow her example)
What happens when this become a recursive problem where all programmers rely on the "someone else" programmer who doesn't exist based on this definition?
"Journalism", yay!
And there's a shit ton of CRUD apps that people want written that don't need anything of the sort. There's a world between high-performance computing and the most superficial use of a computer. Excel macros spring to mind, as an example. We can also draw a line between simple computation and more complex mathematics -- simple calculations are absolutely the computer's job.
To answer your "So what?": useful shit can be done even without having learned everything that you did. What useful purpose does elitism serve?
Those who advocate genocide deserve every protection afforded by law, and none afforded by common human decency.
The author doesn't seem to understand what math IS, how and why programming IS math. The author writes that you don't do a lot of algebra and such in typical web pages. Does your PHP script use SQL? That's algebra, relational algebra. It's not that you need to remember mathematical formulas; it's that have a half decent design for your software, you need mathematical THINKING. If your high school algebra homework was wrong, your sql is probably wrong too.
The author likes to copy and paste a lot. Yeah, I've seen a lot of that kind of code, mostly while rewriting it to work properly.
Programmers with a clue #include, they don't copy-paste.
It's not that you need to write the tangent function from scratch, and purely from memory. It's realizing that tangent() SHOULD be a function, which you should call from libmath. The author managed to copy-paste code that computes a tangent into the middle of the onclick() handler. That's Doing It Wrong.
Certainly, not every programmer with a strong background in math is like this. But I've worked with people who are proud of their math ability, and who would be the first to tell you how critical math is to programming, who write terrible code. And I think their math ability may be at the root of the problem. I've decided that the kindest thing I can assume about them is that they're, perhaps, math savants.
They pride themselves on their "uncommon" ability to keep lots and lots abstract details "in their heads," and in their "analytical" skills. Their ability, I imagine, encourages them to write their programs as one big ticker tape, and their programming suggests they have no idea of how to name variables, much less compartmentalize. Next, they "debug," which translates to running their coughed up hairball of code through the debugger, iteration after iteration, until they've finally straightened it out and "got something working." And, then, that's the end of it for them—program, done.
I would much rather work with someone of either more modest math ability, or someone who, in addition to their math ability, had some idea of how to communicate (which, I think, is a critically important skill to a good programmer). That person might actually have a chance of writing maintainable code, instead of producing a "class" that's 5,000 lines long with 30 instance variables, and a 7 or 8 methods all marked "static."
quiquid id est, timeo puellas et oscula dantes.
Yet have spent most of my career as an embedded programmer. Arithmetic and basic algebra have done fine for me.
// Sorry, I'll write an apology and sin it
/// After I get my boss to cosine it
/ Only time I use my math degree is when I go off on a tangent
Yes, anyone can code, just as anyone can build a house. Whether or not the house collapses immediately, whether it has any real value, or by any other measure still depends on the skill of the builder, just as in software.
If builders built buildings the way that programmers wrote programs, then the first woodpecker that came along would destroy civilization.
Faster! Faster! Faster would be better!
When I coded up an orbit propagator, a lot of math was involved. Oh how I wish I had consulted with Olga Khazan, to learn her math-less way of doing it.
That that is is that that that that is not is not.
quickly dismissing this article out of fear. Fact is we're not special, anyone can be trained to do 95% of what we do, the other 5% can be broken off into it's own world and there won't be enough jobs for that 5% as we train up more and more rank and file programmers. Gates & Zuckerberg figured this out, why the hell can't we? If you want a future start asking for protectionism right now. There's a reason Doctors and Lawyers have a Union (AMA/Bar). They're not dumb, and they learned that 95/5 rule I mentioned above centuries ago.
Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
Just because I can change my break pads, or replace the vacuum assist for them, doesn't make me a mechanic. I found that article to be insulting to programmers, men, and women. I can't believe I just read an article that said the only reason math and CS are linked is because they are full of men. Really?!?!
Seriously. This person makes me hate working in tech. I bet that asshole makes decent money to google "HEX CODE FOR RED", as well. Fuck this. Fuck this industry.
If you were me, you'd be good lookin'. - six string samurai
Yes you don't need math to write a terrible web site. But if you wan't to write anything better than a blog page you certainly better be at least great at algebra. Even things like transitions are at least functions, which you won't understand if you don't know the basic math behind them. Sure its abstracted away but this is exactly how you get unmaintainable and insecure code. Algebra is not that hard, take the time to learn it before trying to program. Linear algebra and calculus I agree can be googled when you need them AS LONG AS IT IS NOT PRODUCTION CODE. In production code if you don't fully understand the math edge cases will destroy your codes reliability and security.
Sounds like she's well on her way to being a full-stackoverflow developer. I know a few of those. I work with a few. Some of them are surprisingly good at their job, as long as their jobs are producing working web-code on a deadline. It's not creative or clever. All of the actual mathematical work is done for them. They're fine people who would be utterly and completely lost if Google and Stack Overflow weren't there to point them in the right direction.
They are reading your comment and Googling "how to be a manager +red -education" right now.
"So long and thanks for all the fish."
Math is a tool like a hammer or a screw driver. A carpenter typically does not love their tools, but they sure know which one to use with a nail or a screw.
Math is being taught wrong. Most math teachers love their subject and do not understand why the students do not also love the subject, when they provide no practical use. Practical uses are many, such as amortization, 3D physics accurate simulation, and robotics.
For example, I teach typical HIGH SCHOOL students bubble sort, then merge sort using recursion in GCC. We then create a list of 1,000,000 fake names using "rig", and temporarily replace the /usr/bin/sort program with our own, discussing the big O.
The students typically enjoy these assignments as they begin to understand the GNU tools, and have a practical use for both math and logic. The problem solving process and application of new concepts are valuable whether or not students will ever write a sort program again in their lives.
Coding is what kids do in their basements and students do in CS class. Coding is to a professional software developer/engineer what skating is to a professional hockey player. The job can't be done without it, but it's only one of many core skills. Yea, it may not require a lot of math, but don't expect to be able to just code and get far.
It was probably due to your education - specifically learning by rote. The person who decided to teach mathematics by rote needs to be assaulted. It was not until higher levels of education where I had someone properly explain the concepts and give me the tools to visualize the maths that I became able to actually understand. After that, honestly? It was kind of easy. I do think that it may have something to do with the way my head works. Let's just say that it is not normal (I don't think - I used to think it was) and you probably would not be comfortable listening to my thought process.
"So long and thanks for all the fish."
Based upon my three decades of programming experience, programming at rare times may require you to brush up on what you learned in engineering school, but essentially your degree is mostly a worthless piece of paper in terms of career usefulness. I've used much less than 5% of what I learned there, and probably more like less than 1%. My most useful class was software engineering, because it touched on the non-technical aspects of being a programmer.
There are small subsets of programmers that use geometry and calculus, but even if we only remember the basics those types of programmers don't need to worry about nit picky details because we all use libraries. You'd be absolutely foolish to open up a calculus book and write your own library function, unless you're doing something extremely novel. Novel is bad when you are trying to write maintainable code.
What is useful to you as a programmer is to understand what big O notation is. It's advanced math beyond calculus, but it always seemed like common sense to me. If you have to do n^2 operations for every n, that's worse than having to do n operations. In 30 years I've never had to worry about little o or logarithms. Google gets specific in interview questions about all of these notations, but I'm telling you what is actually useful.
What is not useful to you is mastery of the syntactical details of any language. Try to program as if you're writing English. Write software in such a way that you could be doing it in any language. Write software that the next person can read, instantly understand, and begin modifying.
Programming isn't purely doing Google searches. What I spend most of my time on is seeing how the software I'm working on already solves a problem and to use as similar techniques as possible, so that the next person who works on it will encounter consistency. Every change I make I make for a reason, and I understand every change I make well enough to explain it to my mom.
Another way of looking at it is the technical interview is almost completely useless. You can ace a technical interview and write the shittiest code I've ever seen. You can perform average on an interview and write the cleanest code I've ever seen. If anything, detailed technical knowledge should count against you. The next person to maintain your code might not know every trivial little feature of the language you're using and has no admiration for your cleverness.
Write software like Hemingway, not Thomas Hardy, and don't sweat the math.
Is this some kind of click bait? Maybe a joke? If you can Google how to do your job, then your job must be very easy that anyway who knows how to Google and knows basic math can do it. It sounds like the next job to be automated. :)
Anyway, I wouldn't hire anyone to work for me as a programmer than has a 4th grade level math understanding or hates math. Anyway, programming and algorithms are math, or at least a sub branch of math...at least up unitl the 50-60s or so when Computer Science was its own thing. ....sigh...
Thanks for the reminder of only taking programming jobs that can't (likely) be done by a person like this, or someone who went to a coding boot camp of some kind.
Certainly, not every programmer with a strong background in math is like this. But I've worked with people who are proud of their math ability, and who would be the first to tell you how critical math is to programming, who write terrible code ... They pride themselves on their "uncommon" ability to keep lots and lots abstract details "in their heads," and in their "analytical" skills.
Throughout elementary, middle, high school and even into college (dependent a bit on major), we tell kids that "math" is learning your times tables, balancing a checkbook, and basically arithmetic skills. There's some algebra thrown in there in high school but for the most part, most people think of math as doing arithmetic. I'll give you an example. My mother says "You're so good at math!" whenever she's baking cookies and asks me how much flour to use if she wants to double the recipe and she typically uses 1/3 cup of flour. This isn't unusual; I heard this all through my life, from family, friends and even teachers.
Mathematics, however, is really just logical thinking. It is the art of logical reasoning about problems. Often applied to numbers, sure, but it doesn't have to be, or at least not in a concrete sense. It's more about reasoning about patterns, abstracting different types of problems (realizing that two problems you thought were different are actually the same type of problem!) There are whole college courses in mathematics I took back in the day where not a single number was written on the board. It was all symbols and functions and proving properties of things (meaning: what can I logically conclude about something based on this list of facts?). Being good at math really means being good at reasoning about problems, abstract away the difficulty, and notice patterns.
I think the disconnect is that there is a healthy population of people running around that declare themselves "good at math" because everyone they know (family friends teachers) tells them they are good at math... because they did arithmetic and basic algebra well. The end. I've met several people like that. Doing those things at a high school level is more about memorization (think: memorizing times tables, memorizing "FOIL" method for multiplying polynomials, memorizing quadratic formula, etc.) than logical reasoning. You might get a taste of that in high school geometry if you're lucky, but honestly even that seems to mostly be "memorize this proof about geometry" without really building logical reasoning skills that can be applied to other problems. You just do it for the sake of doing it, from the students' perspective.
The people that are "good at math" you meet that suck at programming are likely the people that fall into this category. They were great at K-12 math classes because they can memorize and hold a lot in their head, and they probably learned programming by the same method -- look at code (in a book, google search, whatever) and memorize the code. They memorize what functions do what, and how to throw things together, but they never really internalized that abstraction and problem solving that a true mathematical mind has. So they never really learned how the code goes together, or why one pattern is better than another. They just memorized an approach that worked in the past. I've seen a lot of that too unfortunately.
A real college level course in mathematics is really eye-opening (likewise, I think physics majors and a few others also experience this), and I think that ability to reason abstractly really does make a huge difference in how you approach problems. Even if you never directly use your math classes at your job, having gone through those classes permanently change how you think about and approach problems, and I think that is a huge benefit. It's a shame most people -- even the ones "good at math" -- never take one of those classes.
When I was in hobby programming, I was advised that Combinatorics is necessary for learning (at least basic) algorithms, but combinatorics require some set theory, linear algebra, and group theory. Computer graphics, I thought linear algebra is enough. But modern CG requires also calculus, digital signal processing, etc. Digital signal processing require mathematical analysis, probability, calculus. Computer vision requires knowing statistical mathematics, but to understand statistic, one must understand probability, which requires at least mathematical analysis.
Apparently this dummy, Olga Khazan (if that is indeed her real name) doesn't realize that there's a difference between "hating math" and not knowing any math beyond that taught in the 4th grade. Shit, I hated math, but I went through Calculus and Real Analysis. Then I married a mathematician so that I could get my partial differential equations solved via the bonds of matrimony. You know, whenever the need arises.
If you don't know basic algebra, you're not going to code for shit. It's like that Republican legislator from Arizona, Al Melvin, who believes that doing math with letters instead of numbers is a liberal conspiracy.
https://freethoughtblogs.com/p...
If you can't do that liberal math with letters instead of numbers, you can't code for shit.
You are welcome on my lawn.
It's probably partly true. But only for the case where the software you are going to write is not big or complex.
As soon as that aspect comes around the corner, people with a mind trained in logic and structural thinking (mathematicians, physicists), have a very clear advantage, and it will show in the the quality and maintainability of the code.
JQuery.
If builders built buildings the way that programmers wrote programs, then the first woodpecker that came along would destroy civilization.
The phrase "software engineer" is a horrible joke, they are bumbling fools akin to "Theodoric of York" in the SNL sketch. "more buffering!"
its pretty basic and anyone can get it but learning something like Perl or PHP even Javascript you need certain kind of brain to do it. I can do html and css again its as basic as you can get but for me I can't for the life of me write a basic Perl or PHP script no matter how much I try. I can create great graphics, can fix cars with most issues, build hydroponics systems and amaze people with growing plants in them but fuck me I can't get programming.
by TheSpoom (715771) Uncaring Linux user here. I have nothing to add to this but please continue. *munches popcorn*
A problem that I see *often* is in not knowing how to do math on a computer. People have a working model that numbers have infinite range and floating point numbers have infinite precision. Thus you see a lot of "(giantnumber * giantnumber) / tinynumber" and the get an overflow; or worse, it works for their test cases and their customers are the ones to get overflows and bizarre results.
I knew someone who stored floating point numbers as text (a waste of space), because otherwise the results seemed to be inaccurate when stored as binary. But so many common decimal numbers can not be represented in binary floating point with a fixed number of bits, like "0.1". Occasionally there would still be problems and the person would come to me and ask why two numbers did not compare as equal even though they looked the same when printed out.
Are you implying that Slashdot editors misrepresent the content of articles in order to generate more activity on the forum?
Well it doesn't matter. The real purpose of links in Slashdot stories is to take boring people out of the way of a good discussion by leading them to another website. Apparently it doesn't always work.
lucm, indeed.
"You Don't Have To Be Good At Math To Learn To Code"
But it certainly does help.
That is true for some things, but if you want to do something related to modelling just about anything in the real world a lack of understanding of geometry and calculus is going to get in the way. In other situations a lack of understanding of probability and statistics will mess you up.
For example, Carmack is considered awesome for (among other things) both understanding what a CPU could do quickly and what he was modelling, thus getting an effective approximation quickly without precision that was not required. You can't do that with 4th grade mathematics.
It's called "Cargo Cult" and it applies to more than programming. But yes, this is why so many things suck.
it's going to be maintainable by that person, because they were the ones that wrote it.
No, actually it won't be. These kinds of programmers write code which even they cannot maintain, not an hour after they wrote it.
Math is a symbolic subset of LOGIC. Math must BE logical but not all things which are logical are also math. That said, anything which is logical should representable as math but just because something isn't represented as math does not make it illogical.
Coding is not math. If you showed C to a mathematician he wouldn't know how to read it unless he also knew C.
What is important in coding is LOGIC. Highly logical/rational people do well at coding. People that are good at math are generally also good at logic. However, I've known quite a few math whizzes that were actually pretty bad at logic outside of traditional symbolic mathematics. Why? They were bad at defining variables, operators, etc. They couldn't convert the situation into math. And because they couldn't do that, they couldn't leverage their facility with math to solve the problem.
And that goes both ways. There are some very very logical people... highly highly rational... that are utter shit at higher math.
Take a lot of business leaders that do very well year after year. They make BILLIONS by understanding complex systems and relationships and choosing the optimal solution repeatedly so that they make boatloads of money for themselves, their investors, and their companies.
But do you think these guys are sharper with the math than your average math graduate student? Generally not. Put those two people head to head though in the business world and that veteran business mind is going to prison rape the math graduate when it comes to results.
Being good at math is not the same thing as being good at logic IN GENERAL. And being good at logic does not make one good at complex mathematics.
I've decided to stop wasting my time responding to AC trolls/sockpuppets... so if you want a response from me... login.
A lot of relatively old calculus textbooks in the USA, UK etc resemble those Russian ones in effectiveness.
Plain descriptions.
Examples.
Lots of exercises.
Those books of the 50's, 60's and 70's were good enough to get the NASA guys going and that part of mathematics has not changed at all at the textbook level since then. Sure, many kinds of numerical solutions are practical now but the textbooks then and now are about analytical methods.
A problem that I see *often* is in not knowing how to do math on a computer. People have a working model that numbers have infinite range and floating point numbers have infinite precision. Thus you see a lot of "(giantnumber * giantnumber) / tinynumber" and the get an overflow; or worse, it works for their test cases and their customers are the ones to get overflows and bizarre results.
I knew someone who stored floating point numbers as text (a waste of space), because otherwise the results seemed to be inaccurate when stored as binary. But so many common decimal numbers can not be represented in binary floating point with a fixed number of bits, like "0.1". Occasionally there would still be problems and the person would come to me and ask why two numbers did not compare as equal even though they looked the same when printed out.
You don't even need a floating point unit to confound most programmers.
Overflow of simple integer arithmetic is the #1 source of bugs.
CPU specific behavior, outside of the realm of the C specification, makes the bugs even bigger and badder.
I assume you mean COBOL, since COBAL isn't a language. I wrote stuff in that language before I was even taught in school that half of what I was doing was called "basic algebra".
A language being old doesn't suddenly mean you're required to be a Math major to do something in it.
BeauHD. Worst editor since kdawson.
In Australia the girls are getting better scores at high school mathematics than the boys by a wide margin. There was a bit of an effort in the 1980s to do something about the almost complete non-existence of girls in the advanced maths classes in co-ed schools while the effort to promote mathematics in general was reduced. Over the last few decades it's become a weird cultural thing where mathematics is seen as "girly" by the boys that are trying to be the alpha males via sport and peer pressure discourages the boys just like the girls were discouraged before.
Whether or not you need to be "good" at math, or even "like" math to be a good programmer really depends on what discipline you believe that logic falls under - a lot of people who are scared of "math" don't think of logic as math. This is also why in Computer Science can be owned by either the Philosophy department or the Math department ( assuming it doesn't have it own. ) If you don't treat high level reasoning and logic as math, then you don't really need ANY math to be a competent programmer. While strict definitions of both math and philosophy might include computer science in them, the lay person doesn't really care about them. A lay person tends to think of numbers and equations when they hear "math".
That's how I see it. Given inputs produce outputs using logical operations, theorems (e.g. libraries), and lemmas (other code snippets).
putting the 'B' in LGBTQ+
It's hard to do almost any programming without understanding boolean operations (both logical and bitwise), and one will be really limited if one doesn't understand binary arithmetic and how hexadecimal works. I don't think this stuff is ordinarily taught in grades K to 4. One isn't going to understand how what integer types in many languages do unless one understands modulo-2^n arithmetic. Again, that's not ordinarily taught in grades K to 4. It may not even be taught in grades 5 to 12 (no doubt depends on school). None of this is *hard* mathematics, but it's mathematics nonetheless.
Generally speaking, all algorithms should probably be thought of as mathematical entities. So whenever one is trying to figure out an algorithm for a task, one is doing mathematics. It's not the sort of mathematics one typically does in K-12, but it's mathematics nonetheless. And it's not uncommon to have to do a little bit of traditional mathematics on the side to figure out if you're going to run out of memory or take too long.
And even if you're not trying to understand an algorithm yourself, at least you need to be able to understand statements like "Worst case performance of a merge sort is O(n log n) while the average case performance of a bubble sort is O(n^2)" in order to choose between off-the-shelf ones.
"covers gender and health"
So?
I know a microbiologist that later went into journalism who covered travel and lifestyle for a few years. Then he did political and crime reporting (same thing for a while). Meanwhile the science reporter at that paper was an idiot with a long list of obvious mistakes but he had been in the role for a while. Sometimes the science reporter went on holidays and the microbiologist got to do a few science articles, despite being the "travel and lifestyle" guy.
Drilling down into sub-specialities of journalism isn't going to do anything other than make you feel smug based on limited information.
There is enough in the message to attack without going after the messenger. In many cases she's probably right despite the others where it's completely wrong (eg. the reason why I have scientists here churning out crap code that at least does something instead of CS grads that don't even have high school calculus in their heads so would not know where to start).
I hope she applies, she sounds like a great talent that I'd love to have on board!
As a programmer for over 20 years, this flies in the face of all my experience. While, there may not be a direct correction to one’s mathematical abilities and one’s programming skills, I have never worked with a *good* programmer who disliked or was poor at math. You need have a strong mathematical background to be a decent programmer.
The real question here is why the hell a staff writer for The Atlantic who specializes in gender issues writing this article? From this quote: "From my experience, one thing you do need when learning to code is an ability to stifle your rage when computers don’t do what you want. Which is, alas, why I am not a good coder."
Sounds like she too some online "web coding" class, failed miserably, and decided to turn it into a bullshit, poorly researched story. I mean really "People who program video games probably need more math than the average web designer.” Probably? I mean that's like saying Olga Khazan is probably smarter than my dog. Although with articles this poorly written, maybe that's a bad analogy.
You should take a step back in time, to the early 20th century, and have a talk with Russel and Whitehead. They put an awful lot of effort in to producing a completely analytic account of mathematics. You can probably guess how that turned out...
Required reading for internet skeptics
Yes, anyone can code, just as anyone can build a house. Whether or not the house collapses immediately, whether it has any real value, or by any other measure still depends on the skill of the builder, just as in software.
If builders built buildings the way that programmers wrote programs, then the first woodpecker that came along would destroy civilization.
I've seen those little devils at work, and you are right!
The shepherds did so well protecting the flock that the sheep no longer believed that wolves existed.
This is not programming. It's *definitely* not developing. It *might* be coding, although if that's the case then that should be regarded as an insult to someone.
"Coding" by googling and copying code is no better than monks who couldn't read who could copy important texts by copying the "pictures" (letters) before the printing press existed. Except this has significantly less value, and more danger - the internet is not magically full of "better" information on writing code than it is about anything else. The vast majority of the answers to the questions you will google will either be flat out wrong, or intentionally naive/trivial, as they are probably (at best) trying to teach a concept outside of the context of whatever you are doing. Without greater understanding you won't be in a position to know that the answer you found isn't the answer you want.
And of course this is how you write apps with horrible security vulnerabilities.
Please, deliver me from the legion of "coders" who take this seriously.
I don't need math to build a bridge or skyscraper because some googling and youtube how to videos allowed me to do some home renovations.
Worldwide we are heading for idiocracy.
Uh, I built my house from googling. It really was not that difficult. Youtube helped a lot too.
I'm sorry, but if you think that math is not important to coding you're completely ignorant. Not only is math important but the ability to grasp foreign languages is also very important. Computers do math. That's literally all they do! If you don't have a solid grasp of algebra, trigonometry, geometry (proofs et al), statistics, calculus, matrices, vector algebra and beyond you have little use to the coding community other than to do scripting, or as the author points out, rudimentary web site work. FFS, computer science is applied mathematics at its core! Then you get into the linguistics aspects. Yes, I know they're not spoken languages, but programming languages are still functional written languages. They have grammar, syntax and morphology just like any other, so if you're good at picking up foreign languages AND are good at math you can learn to code quite well. If you suck at languages and are good at math you can code, but if you suck at math you're going to suck out loud at coding. The author of that article is a complete idiot, but so are most "journalists" these days. Hell, most of them can't write properly in their own native language let alone code something! Don't believe me, go read some news articles on some major news websites. It's pathetic.
Oh god help us all! If this is the mentality of "coders" today, just fucking google it, we're doomed. Thanks codeacademy!
Don't neglect applied math.
This person seems to be confusing the mechanic for the automotive engineer.
Do you hire an architect when all you want to do is add on a new room --- or simply chose from a stock set of plans and a local contractor who knows his job?
I'm pretty good at writing astronomy type applications, but have never written html or sql or a windows, mac or android software. I mostly reuse libraries though. Yes, I've written math libraries in assembly, but it was because I had to. The overwhelming majority of people don't have to.
Let's call this style of coding "Dunning-Kruger-coding".
99.8% of people are not doing what Carmack did.`
Do I need one thousand and two examples for the slow and/or lazy who cannot relate to the one I gave?
Carmack was doing entertainment and not designing a filter for seismic data or a finite element analysis mechanical design tool. My point is that even doing entertainment he has an advantage due to his depth of understanding.
A bunch of copy/paste/edit iterations.
And good luck finding a job in software, by the way!
Sorry, but the line "or it has been done by someone else" alone is enough to dismiss what is said as rubbish.
There is a lot of things this world needs desperately. Another batch of cargo cult programmers is not among them. You needn't invent the wheel twice but you should know what makes it turn so you don't install it sideways. If you do not understand WHY you do the things you do, at the very least you will end up with very inefficient code. At worst with very insecure code.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
For reference, see your CEO at his next speech.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
Personally, I think humanities majors should be good at math too. (And, for that matter, journalists and politicians.)
Of course the level of math you need to have varies. But I don't think you can be a "good" programmer without understanding logic.
Certainly you don't need the single spearhead knowledge of a single or a few topics that a "math major" gets. And you can probably ignore most of calculus and analytic algebra. But knowing trigonometry and signal theory will most likely make you better and higher paid pretty quickly. Being able to look up and study the math you need at the moment, quite certainly so.
But that doesn't mean that a lot of girls that think they are bad at math should stay away from trying programming. Girls specifically have a tendency to undervalue their own knowledge. (While guys tend to overvalue.) (I personally think this behaviour is social training.)
If you think you are bad at math but programming comes easy, you might find that you weren't actually bad at math.
(shamelessly copied from the jargon file)
Tom Knight and the Lisp Machine
A novice was trying to fix a broken Lisp machine by turning the power off and on.
Knight, seeing what the student was doing, spoke sternly: “You cannot fix a machine by just power-cycling it with no understanding of what is going wrong.”
Knight turned the machine off and on.
The machine worked.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
You need at least basic algebra and understanding of maths. If your planning on doing analysis, modelling or even 3D graphics youll need to have a decent understanding of higher level concepts.
Electronic Music Made Using Linux http://soundcloud.com/polyp
You don't have to be good at anything to plagiarize
With the nose to the grindstone you can code applications. However, coding libs, reusable components or system software is a completely different ball game.
Unfortunately, regardless of how hard it is to write libraries and regardless of how much good libraries boot performance and reduce costs, most attention, fame and money reaches the application programmers.
I hadn't the slightest objection to his spending his time planning massacres for the bourgeoisie... (P.G. Wodehouse)
That's really good news for my son. Will have to show him this. http://www.24hrlocksmithinleic...
And another one thinking that mathematics is about numbers. All the code is math and nothing but math, because it's in formal languages.
That does not mean you will ever be any good at it or master more "advanced" things like addition. Really, "coding" is not putting basic building blocks together in obvious ways, because that is something any halfway smart and educated person can do.
Also, WTF has writing HTML to do with coding? Are we now so cretinized that people do not even have a basic understanding of what coding means?
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
We have Googling and trial&error because documentation of APIs is universally deficient.
I just spent two days trying to figure out why my OpenGL 3.2 context would not initialize on Linux. In the end I found it was because I was not using a private colormap. It doesn't make any kind of sense to me, even now, and even knowing what to look for I wasn't able to find any kind of warning in what is laughably called a "manual" (it sure looks like a quick list of function calls without any structure and barely any explanation to me, but YMMV).
How many times do we have to see this:
int CreateContext (int, void*)
"this function creates a context. The first parameter is flags. The second is used to pass additional information."
and are left wondering:
- what _is_ a 'context', what do I need one for, and what is its lifetime?
- what flags can I pass? What do they do, _in detail_?
- what "additional information" can I pass? Is it mandatory? Is it flag-dependent? What structure should it have?
- can there be errors? How do I see them? How do I decode them into something human-readable?
- if I delete the context, will it take any associated items with it, or do I need to free those manually?
- what sort of thread-safety can I expect?
The problem is not skill level, although it certainly helps to be equipped with knowledge of other APIs and the right level of paranoia. It is, for a very large part, badly designed and even badlier documented APIs. And it really doesn't matter where it comes from, amateurs or pros, open source or closed, it's all painfully bad. The best you can usually hope for is a list of function calls, but almost never any sense of how it hangs together, good explanations of parameters and return codes, and let's not even start about thread safety...
As an example of good documentation, I'd like to point out Postgres. These guys really work hard on documentation, and it shines as a result. MSDN, assuming you can find what you were looking for to begin with, is not bad either. And on the other end of the scale we have things like OpenSSL, where I believe lack of documentation is in fact part of their business model. That alone should be reason to avoid it...
I fell on my knee and cleaned and bandaged the wound all by myself. Anyone can do it with some googling.
Yes, there really is a cobal programming language
... to be a driver
Similarly one does not need to know math to be a data entry clerk
As for TFA?
Pfffft !!
Muchas Gracias, Señor Edward Snowden !
Most commenters here seem concerned with calculations needed to be done while constructing some software (usually not very much). I think that is maybe the wrong level of thinking about the post.
One of the fundamental skills needed when programming involves abstract thinking: generalizing algorithms (very basic example: not only detecting the maximum of two ints, but also the maximum when you have 0, 1, or many ints - or any numeric type for that matter). For this you need to be able to recognize patterns - one many levels, not only for a variable number of items, but certain code constructs, all the way up to architectural constructs. (Between a function taking a variable amount of input, and Go4 patterns, there is a range of issues where you might become a much faster/less error-prone programmer if you start constructing utility functions, use generics/streams/lambda functions etc.) Then there is induction ( [correctness of] later results depending on preceding results).
I believe a lot of these are similar to the disciplines one needs to perform formal algebra, trigonometry, logic, discrete maths, etc. To be sure, mathematics never was my favourite subject, and perhaps one should spend more time thinking about the similarities between programming and maths to make a more rigorous argument and much less "gut-feely" than the previous paragraph. However, I feel that the 3 years of maths training I went through at college was not wasted, even if I never consciously employ any of the concrete fields of study in my job.
In the same vein, one could also argue that music and maths have similar interplays, e.g. the similarity and differences of "themes" as found especially in classical music, relationships between various pitches, and more. Then there is the concept of concurrency once you start to move beyond a simple melody line....
In short, I'd certainly recommend formal training in mathematics, as well as at least some music beyond being a consumer, to anyone wanting to become a programmer.
Free, as in your money being freed from the confines of your account.
I think this just shows how IT is basically a service industry. Only a small fraction of coders are needed for the hard, interesting and creative parts -- the rest can just use these via libraries and frameworks.
Escher was the first MC and Giger invented the HR department.
I'm curious what definition of math you could possibly have that would let you reach that conclusion. Do you think of mathematics as being only arithmetic?
Here's a reasonable definition / description from Encyclopedia Britannica:
The science of structure, order, and relation
If you're not familiar with relations in the mathematical sense, a relation is basically a table. A relation is an (unordered) set of tuples. What specific discipline is concerned with manipulating relations, or tables? That would of course be relational database, like MySQL.
It says structure. What discipline is concerned with manipulating structures of numbers and other data, like this?:
struct Person { ...
integer height,
int64 birthdate
}
That would be programming.
As an English major and failed computer science minor who went on to 20+ yr career in web development, including linux sysadmin, perl/python/javascript/php/asp etc., and db admin, I think that there was a stretch where developing web applications involved a mix of skills and technologies - design, writing, logic, communications, creativity, ability to learn and understand - for which being able to self-teach, communicate with others, and creatively solve problems and integrate technologies was the greatest skill to have, not necessarily a mind for hard sciences that allows one to recall complex formulas and quickly grasp multi-layered abstractions.
Just like a mind for school doesn't always translate to a mind for work - in the real world you have many chances to get it right, and you have opportunities to figure things out in multiple ways - not be forced to do division using the stick method and show you know it in one test. You test yourself, and turn it in when it's right. That's why I failed C++ 202 but went on to build successful timesheet systems, CMS systems, etc.
That said, I think that stretch is ending - coding and design is Wordpress, and programming even small web apps is growing more and more like traditional software development.
You mentioned CSS, which is an interesting example. For those who don,t know, in CSS, each expression has two parts, the selector and attributes. The selector is something like "nav link !#subpage ". Which means:
The intersection of set "nav" and set "link", minus (set difference) the set "subpage". So 100% set theory.
I set theory is mathematics, CSS is mathematics, because the left side of any CSS statement is pure set theory.
The right hand side attributes combine in more complex, thoroughly mathematical, ways.
THIS is exactly why we have so many exploits available in systems today. We have too many 'coders' who have no idea of how the underlying system functions. In the company where I am currently employed, there are individuals who are writing code for new services that don't know what a TCP 3-way handshake is.
IT is the only profession on the planet which does not have a governing body of any sort. There are no exams, no licensure requirements, no educational requirements. Nothing. Anyone who can convince a hiring manager, who themselves is unlikely to be versed in technology, that they "know what they are doing" can be hired into a position of impact. And we wonder why software written today is so bloated and filled with exploits.
What did you expect?
Here's an example for you. Is this math:?
The intersection of set "nav" and set "link", minus (set difference) the set "subpage".
Sounds like set mathematics to me. The author of the article would express that in CSS syntax as:
"nav link !#subpage ".
Every statement in CSS begins with such a set expression.
Programming would be defining a order of functions to evaluate the set expression, in order to apply it to the correct members.
I made a "B' in 2nd level calculus, so hence I am "bad at math".
I only look human.
My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
Ugh. One of my pet peeves. I also do a lot of SQL.
People always look at me like I am some kind of moron when I say S-Q-L rather then "sequel", however I hold that they are the one bastardizing language, not I!
At least she admits at the end of the article that she is not a good coder. Maybe she should have led with that.
Most coding does not require a great deal of math knowledge, particularly if you're coding in a business environment.
Several years ago, when my ex-wife and I were still married, she decided that the prospects for jobs for English majors were too poor, so, she thought she would try her hand at web design. We went to the book store and together picked out a book on HTML -- a visual book, that was even simpler than one of those "For Dummies" volumes. She said she would begin using it the next morning.
The next day I went to work as usual. When I came home that evening, I found the book sitting in the trash bin. "What happened?" I asked. She said, "The first thing it told me to do was to open something called Notepad. I spend FOUR HOURS trying to find f**king Notepad on my computer! I couldn't find it, so I gave up!" I calmly walked up to her pc, clicked Start, Accessories, Notepad. "Here it is," I said. "I have no business doing web design," she responded.
So yeah, you can try to Google and copy and paste your way through coding, but you kind of need to know how a computer operates first. And then there's the whole problem of troubleshooting when things go wrong. It's like saying, "Hey, all you have to do to be a mechanic is watch Youtube videos on car repair." Well, you might get a clue how to change your oil, but you won't neccessarily have any idea what to do when your car is making a funny noise.
Proverbs 21:19
Excellent point!
Proverbs 21:19
So first off it really depends on what you are doing. Generally speaking, I doubt much math is really required for *most* programming. Sure certain specialized fields will require it, but most do not. I got a CS degree, and the "maths" that were required, however most of them were a waste of time. Perhaps if I worked in the scientific or gaming world, I might have more use for them.
I think the math "requirement" in universities is a bit of a anarchism from when there were very few programmers and much of what they did was either fundamental CS stuff, or working in academia using something like FORTRAN to solve for some mathematical or scientific problem that would be more difficult to do without use of computers and looping basically.
Now that "programming" is used more ubiquitously the math component is more of a specialized field.
A language being old doesn't suddenly mean you're required to be a Math major to do something in it.
Maybe not, but my knowledge of hexadecimal sure came in handy when tracking down 0C7 errors from a memory dump.
Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
This is why so much poor software exists in the world. I can only imagine what nightmare code is being generated by such efforts. Yes, anyone can code, just as anyone can build a house. Whether or not the house collapses immediately, whether it has any real value, or by any other measure still depends on the skill of the builder, just as in software.
I dunno. I started programming in C on my Commodore Amiga many many years ago. Bought a book, not much different than Googling nowadays. Eventually learned data structures and algorithms.
There is code of mine that was started in 1998 and I have not touched since about 2002 that is still running on the internet. It has never crashed, it has never acted poorly, it has always done what it is supposed to do. The source code was distributed and some really nasty hackers did their best to make it choke but the "best" they could do was DDoS it. One DDoS attack took out all of San Diego. Another DDoS attack took down all of Arizona and irc.blackened.com stepped out of the IRC business for a while.
My code still ran perfectly fine and still does to this day despite no updates for well over a decade.
"Someone needs to talk to the tree of liberty about its ghoulish drinking problem." by ohnocitizen
As a web/system administrator, I would never call myself a coder. A programmer. I've fooled around with coding a bit, and written some shell scripts and SQL, but I wouldn't consider myself a programmer.
In fact, I wouldn't call even the most hot shit web designer using HTML & CSS coders. Unless they're writing their own original JavaScript scripts.
That said, even if you don't like math, you can learn enough to do some programming. You may even learn to love math after the fact.
Go Victoria!
Yes, you don't need to be good at math to learn to code. It is also true that you don't need to be good at math to learn math.
However, I think that if you are good at coding or mathematics, it'll make you life easier learning the other.
I am a computer scientist and mathematics is a priori for this. Mathematics is a study of structure, forms, order and most importantly, abstraction. If you can not abstract concepts into their corresponding code space/software entities, you are not an effective developer. Copy and pasting code does not make you a coder.
In one of my previous jobs, I was responsible for interviewing and hiring new web app developers.
Over and over again, I kept seeing people list "HTML" as one of the "programming languages" they knew. I got so annoyed with this, I developed a quick two question filter to get rid of the idiots.
First, I asked them to confirm whether or not HTML was a "programming language".
If they said no it wasn't, it was just markup/typesetting, I would then ask them why they included it under programming languages on their resume. Usually they would reply that it was just easier or more convenient etc... They'd lose points for clarity, but ok, no biggie. Occasionally they would say something like "because HR people are idiots and don't understand the difference", fair enough, no problem with that.
... BUT *most* of the time, they would emphatically declare that: "yes HTML was a programming language". These people then got my followup question:
Here's a pen and paper. Show me how to do iteration and conditionals in HTML pseudocode.
For those people, that was the end of the interview, bye!
Clerks at fast food restaurants don't need math either. There is no way I could have written programs without knowledge of the math I was solving
I got my first programming job only knowing basic algebra and trigonometry. I went on to study calculus, statistics and discrete math ending up with a Computer Science degree. There was precious little in any of these math courses that were useful to me as a programmer. I worked in data compression, image and signal processing, and pattern recognition. These fields required higher math but that is what mathematicians were for. They understood the how and why. My job was to determine the requirements and code it in a way that was robust, efficient and maintainable. There were a lot of programs I wrote where I had a general feel for how they worked but the math was way over my head. I say don't try to understand 'em, just rope 'em, tie 'em, and brand 'em.
Uh... HTML and CSS aren't programming languages.
Come back when you've written something non-trivial in a real programming language. Say, some 3D visualisation in C++, without knowing about math (who needs matrix transforms, right?).
Like in any craft, you can do some simple things with little knowledge. Every idiot with two hands can put up a garden shed. That doesn't make you an architect and it doesn't make you a builder.
Assorted stuff I do sometimes: Lemuria.org
Trig is. Matrices aren't. Translation, rotation, scaling, texturing, light and shadow simulation -- all can be done without matrices. Matrices have nothing inherently linked to 3D about them. They are simply a neat way to concatenate operations and/or factors that can be, but don't have to be, used.
I've fallen off your lawn, and I can't get up.
...to play in the superbowl. It just really really really helps.
There is a difference between coding, and coding *well*. Math counts, literally.
Mathematics -- I don't think that word means what she think it means. Mathematics is not same as arithmetic. Mathematics is problem solving, logic, abstract structures etc. That means, most things that are needed for programming.