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
You do have to learn math, almost all of programming invoices math in some way. Yeah I don't have to understand the inner workings of complex function optimizers to know if I found a minimum when I throw my data into a function, but when stuff breaks down and it only returns a good result I do
...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 have to be good at math to be a shitty coder -- and there are lots of shitty coders that make a decent living, but we hate you for making our jobs suck and driving wages down because management is bad at productivity math. So, if this is your approach just become a manager and stay the fuck away from the code.
Indeed. Googling to "learn to code" is as stupid as Googling to "learn how to build a house".
There are books for a reason. People that want to learn things should start reading them. For example, I've learned how to program in grade 7 thanks to C for Dummies and C++ for Dummies and later that year from compiler's reference book. Those books are 10000% more comprehensive than any "googling" blog entries and today there are even books for grownups that deal with how to use algorithms and such things.
Anyway ....
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/
You don't have to be good at telling fibs to be a politician, but it sure does help!!
We have Google!
Lord, help us!
“He’s not deformed, he’s just drunk!”
A person may be able to code a bit without math, but project Euler taught me that there are places I can never go because I don't have the math for it. And even when I Googled the answers, I still didn't always understand what was going on -- Some math is a bit beyond mere Googling.
You don't have to be good at math to learn to code.
You do have to be good at math to be good at coding.
Though 'math' here really means logic and algorithms, not traditional stuff life geometry and calculus.
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.
...is that I didn't like math very much. Enter the computer, which could do the math for me with a fraction of the effort!
I know that algorithms are supposedly a form of math. If you count logic as math, that's true, but you can write lots of useful programs that have very little actual traditional math (arithmetic, algebra, calculus, statistics, etc.) in them. Programming logic may be related to mathematical talent, but it is an independent skill. You can be a very good programmer without being a math genius. You just won't be writing many astronomy applications.
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/
Can I use the phrase "utter fucktardery" on Slashdot? In other news: the creative process requires nothing but copy-paste from many, many, many different sources.
I admire the writer's ability to adapt their approach to coding to writing an article.
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
Sure, flail away with your 4th-grade math education. Many 4th-graders actually do the kinds of "coding" the articles talk about, on about the same level as an adult with a 4th-grade math education. And if you're an adult and you want to learn to program, you absolutely should.
If you didn't like math and/or weren't any good at it, you probably don't have or will not enjoy acquiring the symbolic reasoning, persistent mental focus, fastidious attention to detail, and advanced analysis that you must must have and apply fluidly in order to do programming as a profession and to do it well. These are exactly the same things that are required to learn and apply algebra, geometry, calculus, differential equations, and so on. The people who went down the math-heavy track in school are almost without exception the same people who get good at programming.
The exception to all this is people who were told they were poor at math by a bad teacher, or who stopped at 4th grade math because they had an unrecognized learning disability or matured late or were told they were stupid. These things happen to many people, and that's why no one should shy away from learning to program. You might find you enjoy it, and in the process find that you are good at math, too.
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.
I hated math in high school. I took a couple of coding classes when I got to college, and soon thereafter got a few jobs programming. I didn't really enjoy what I was doing, so I went back to school.
Programming taught me how to think rigorously. With a mind geared towards precise thinking, I found math to be a breeze. Now... I'm a mathematician who spends all her time programming -- I can tackle problems that old pencil & paper mathematicians balk at.
You don't have to be good at programming to do math. You'll just suck.
Also, math is not just arithmetic and calculus, you incompetent fools.
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.
Try coding in COBAL without decent Math skills thank-you-very-much.
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.
Even if we go along with her, I have one minor nit to pick!
She admitted good logic skills are needed. How does one learn good logic skills? The only actually logic class I had was fairly high up (ok, middle ) in the MATH dept chain of classes. It was at college, so it was after algebra 3/4 sometime. You can't suck too bad at math to get to the 'good logic skills'
Or are we counting on innate skills? Good logic skills are less common than common sense and....
WTF is up with coding everywhere by everyone? What the bloody hell are they all going to program? Or is coding refering to more like her example of change the color to red?
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.
I started out as a Comp-Sci (Bs) major in college. Got A's in all the software classes (Pascal, C, Fortran, Modula-II, etc - even that disgusting thing called Java), but just struggled through the math classes. Took me almost a year to get past Calculus 1 (yes, the intro class) with a C-, only because the instructor took pity on me. Turns out the reason why I could not hack my way through the math classes is because all the math profs were 'pure' math majors - not programmers or engineers, with no idea how to explain real-world usage. I learned more in a 10 minute conversation with one of the Engineering students - a conversation about how calculus [specifically, the derivative] actually worked and what it did - than I did in almost a year of struggling in class.
I've dabbled in OpenFOAM, 3-D graphics, real-time control loops, state-machines, assembly (x86, 65xx, Atmel, ARM, etc), and even taught myself enough COBOL to understand how a supercritical wing design program worked.
Since graduating with a Cultural Anthropology (Ba) degree, with a linguistic and comp sci minor, I haven't missed much. More than half of the graduating class of CS majors I went to school with ended up working in service jobs. A couple went to Microsoft as testing lackeys. One wrote a cook-book. Supposedly there is one working as an English instructor in Korea.
Take away of all this:
1. You don't have to be a math geek to program. What you need to learn, you will pick up. Curiosity is more important.
2. You need to learn math from someone who knows what math can do - not someone who knows what math is.
3. Calculus is a virgin.
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.
You could get sued for copying someone elses code the way you are going.
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.
Cargo cult programming.
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!"
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
honestly, i can say that if it gets the desired results, who cares. it's going to be maintainable by that person, because they were the ones that wrote it. now, if this was a team effort, however, that would be a completely different matter. if there was a requirement to have a maintenance contract in place, for the long-term success of the code and the project, that would be, again, an entirely different matter.
i *do* actually successfully use the technique that the author uses - i have been using it successfully for over 30 years. however, during that time, i have added "unit tests", source code revision control, project management, documentation, proper comments, proper code structure, coding standards and many many more things which make a successfully *maintainable* project.
whilst such things are most likely entirely missing from the projects that this individual is tackling, the projects that this individual is tackling are also likely to be ones that *don't need* such techniques.
in essence: none of that de-legitimises the *technique* of "programming by random research". it's a legitimate technique that, i can tell you right now, saves a vast amount of time. understanding comes *later* (if indeed it is needed at all), usually by a process of "knowledge inference". to be able to switch off "disbelief" and "judgement" is something that i strongly recommend that you learn to do. if you've been trained as a software engineer, adding "programming by random research" to your arsenal of techniques will make you much more effective.
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*
While I too would not consider basic Web design true programming, I would agree that for most programming nothing more than basic algebra is required. I myself have learned multivariable calculus and differential equations as part of my degree, I have never used any of it in programming. At most I've used trigonometry and only because I wanted to write my own graphics engines for practice.
What has been of immense usefulness is learning other languages. I learned to program in several programming languages before learning several spoken languages, and as a programmer it was extremely easy because it's just like using a different syntax. This also goes the other way; understanding the grammar of multiple spoken languages makes it easy to pick up new programming languages, and it has given me a huge edge over my peers by drastically reducing the learning curve. They say if you know 3 or more different (spoken) languages it makes it substantially easier to learn new ones, and I would definitely say that includes programming languages. It's really just an ability to quickly learn new structural rules and templates, which apply equally to programming and spoken languages. Conversely, in my experience people that struggle to write grammatically correct papers also do poorly at programming.
That being said, knowing how to use a programming language is very little of what it means to be a programmer/software engineer. The ability to properly apply design patterns and create code that not only works but works well and doesn't blow up when subjected to incompetent users is a whole other skill that is specific to engineers and typically is not something you just learn by trial and error.
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.
I would not equate learning HTML with learning to program, and the kind of programming I do requires a lot more than 4th grade math.
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.
The author of the article has real no understanding of either maths or coding. What matters, however, is clarifying why math is useful for coders. True, there are graphic and simulation applications, but is a much richer reason for math in coding.
Maths is declarative. Programs have both declarative and narrative.
The more declarative your program is, the easier your program is to build and maintain. It usually is more performant as well, as processing is replaced by mere assertion.
If you don't understand this, then there is just a side to programming you don't know about yet.
How do you program declaratively? Attempt to write as much of your program as possible in the manner of declaratives, so that as much as possible, it resembles a theorem.
Math isn't what you learned in class. Math is what mathematicians do. Back to you now. Be on the outlook for every opportunity to replace narration with declaration and watch your software shrink in size, communicate what it does with amazing ease, run faster, and have fewer bugs.
Think like a mathematician. Formalize the invariants. You will be able to solve bugs in days that people have tried for years.
Also expect resistance as meat heads insist on pounding out useless, slow, and buggy narratives, all the while pounding their chests with pride.
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.
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.
you might have been right in 1980 with 3 speed automatics using a hydraulic analog computer to determine shift points.
Today, with 6,7,8 speed automatic transmissions and electronic controllers, there are VERY few situations (even with a 4 speed auto) that a manual transmission will be more fuel efficient than an auto on the average.
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!
I've been programming since the 90s (mostly Java) and I've gotten the most use from:
-understanding O notation- this is basically what all data structures and algorithms are explained with- if you don't understand this stuff, knowing which ones are suitable and unsuitable for a particular purpose is very hard
-understanding binary, including bitwise operators
-being able to do multiplication and exponential math quickly so I can estimate memory usage quickly
-ditto for estimating performance
Even simple 2d graphics requires you to know trig and be able able to do lots of basic math in your head constantly to calculate where to draw pixels. Sure, the program does the calculation, but you still need to know in your head what the computer is supposed to be doing before you write the program.
And this isn't even touching on stuff like crypto, 3d graphics, solving math problems with programming, etc.
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.
The Dunning–Kruger effect is a cognitive bias wherein relatively unskilled individuals suffer from illusory superiority, mistakenly assessing their ability to be much higher than is accurate.
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...
The people who went to college for a Computer Science degree and then called themselves Software Engineers are, the people who got degrees specifically in Software Engineering aren't. I have an undergrad in one and a graduate degree in the other. Except your intro to programming courses, they are completely different. None of the software engineers I know call their work art. There are specific pros and cons to different design choices and you apply the one that fits the requirements best, requirements you took the time to gather and understand not requirements you made up thinking the customer would think they're awesome.
Business requirements and budget limits destroy much software quality, but some of us take our work seriously.
And another one thinking that mathematics is about numbers. All the code is math and nothing but math, because it's in formal languages.
Yup. We had a Pakistani "developer", who proudly showed me that he had googled how to find the center or a div.
I asked my brother who is a plumber, and who lost interest in coding after "20 GOTO 10" whether he could solve it without googling. He immediately interrupted me, insisting he does not have a clue about programming. Told him to hear me out. When I finished telling him what the guy had done, he said "isn't that just half?".
But maybe that's unfair - a plumber sometimes does need to drill a hole in the middle of something...
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
Don't throw them all in a bin. You cannot compare the formal logic and deciphering skills of some "English literature" major with someone specializing on antique languages and philosophy. I mean, some classical Greek sentence running over 1.5 pages in a maze of nesting where the main sentence just happens to be missing a verb, instead using some nominal phrase... That shit is real. And they have a Dual between Singular and Plural and a Medium between active and Passive and an Aorist between presence and past tense and an Optative between Indicative and Conjunctive and not just Nominative, Genitive, Dative, and Accusative but also Vocative and some Locative forms. Something like "you two should have started to feel a little bit ashamed" is a single word (a verb) in antique Greek. Old Arabic is supposed to be harder.
Whenever I encountered some non-trivial Emacs hacker without a STEM background, it was invariable someone from the older and darker side of the Humanities.
Logic is a subset of mathematics. Period. Formal languages are all mathematical by definition. Period.
... 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.
Whoever said you need maths to code in the first place? Linus Torvalds? True, for some programs that are actually required to do something mathematical like linear algebra then knowing how to do it will save time... But it is not exactly difficult to learn given a resource as rich as the internet. i.e. provided you have a reasonably well developed frontal lobe then you can learn to code. Whether or not you'll enjoy it & not make a total pigs ear of it is another thing.
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 passed some sort of IQ & maths test to become a programmer for the UK Civil Service way back in the 70's but I seem to remember that somebody did some analysis of the effectiveness of the tests and found that there was a very good correlation between those who regularly did cryptic crosswords and good programmers.
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.
I thought HTML was a design layout language . It would be closer to art composition than 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.
When the script kiddies fail at a problem, because they can't solve x in the most basic equations, I get job security.
I can do linear algebra, calculus, oh and logic too, but in higher-order form, and first-order, but also their primitive kind of logic, that I can hardly believe yields efficient approaches. Oh and a lot of other stuff. I do algebra at home, because its fun you know. Such as inventing new ways of calculating PI. Crazy ways.
Anyway, I can derive that formula, that makes things work. And they can't copy it, because that formula I derive, just didn't exist before I derived it.
Because not all problems have been done before. Some math is completely business specific.
But whatever. Code monkeys code, and I do the fun stuff, which is inventing things, using my head, instead of copy pasting things endlessly.
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
who had trouble figuring out how to call functions in VB.
Yeah, all that math helped that guy!
I bet she's a doctor too. Just a google search away from another self-diagnosis!
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!
To solve differential equations, either. But it helps.
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
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.
If the woman ends up with decent logic skills, she'll be way ahead of the rest of her gender.
It lead me to a interest in math and engineering. So much so that I now want to do real engineering and get the fuck out of this god forsaken business all together... Good for her, good for me, stop clicking on flame bait, and stop qualifying yourself by a job your boss is almost too ready to replace you with someone who does it for 1/2 the price...
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!
I like this quote ... "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."
Thankfully that "someone else" knew math.
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.
First of all HTML is not programming. it's word-processing. What you've learned is the modern day version of short hand... yes, in a word you're a secretary or in today's terminology and "administrative assistant". Which is perfectly fine if that is your aspiration.
That said, this is a prevailing mischaracterization in today's world.
Even if you were really coding in JavaScript or C# or Java or whatever..... That doesn't make you a software engineer.
It only means you can translate English instructions into a programatic language. Somewhat a kin to begin able to translate from Spanish to English and that not making you a great author.
There are millions of developers/programmers who can code in one language or another who aren't particular adept at building great software. Sort of the difference between being a plumber and a hydraulic engineer. Putting in a new toilet in a residence simply doesn't require the expertise of lets say designing the the hydraulic system on a Boeing 777. Both are valuable roles but they are very different.
1) HTMLers are secretaries. Sorry, I meant to say Administrative Assistant: Job Skills: HTML, MS Word, Excel, etc.
2) Coders/Programmers are trade school lever translators. Sorry, I'm sure that offends many, but it shouldn't the world needs millions of you. So be pleased it pays as well as it does and keep learning that new set of U/I Javascript libraries, or Cobol, or the next version of MVC web application framework. The pay is good and its a world better than digging ditches for a living.
3) Software Engineers: design and engineer software solutions that will not only meet business requirements but also achieve very specific engineering characteristics (maintainability, operational behaviors, supportability, etc.), as well as code and program on top of that. They tend to have a deep understanding of hundreds of different technologies and must make choices amongst the set in terms of applicability. They know many languages and many physical platforms and understand how software is created, maintained and evolves. Some have even read and understand Encyclopedia of Algorithms and know where each algorithm might be used. You get the gist....
In any case, what you learned to do is not to "program". Sorry to pop your bubble.
Software engineers design systems and also code. Programmers do not necessarily design systems more often than not they just do what there led to do by real software engineers.
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.
Reading through the comments, I find it interesting how many attempt to criticize the article by reiterating its basic premise, which is that coding up simple web stuff isn't rocket science and doesn't require much in the way of math skill, but other problem domains do.
Why does anyone even question this? It's absolutely true, the same way that posting a comment on Slashdot doesn't require a comprehensive knowledge of English grammar, or even the ability to spell correctly, but those abilities sure help if you're writing a novel.
I'm just going to toss this out there, but my 10 years as an IT manager in a university department confirms the author's general premise. At least in my corner of the universe, IT work typically is less about math than it is about communication, following best practices, and understanding the business processes of the organization. And yeah, that includes the programmers in my unit, all of whom have Comp. Sci, degrees. I will also note that my absolute worst staff member, who had terrible communication skills, an ego big as all outdoors, and wrote terrible spaghetti code, also had a PhD in math.
This isn't to say math is completely unimportant, but just that there are other things I care about a lot more when I'm making hiring decisions.
The only reason this is a contentions subject is that all these programmers want to think of themselves as math whizzes - give me a break. The highest level class that has been thrown around here with any seriousness is DQs. Most bright science track students take that when they are 19 years old, and it wouldn't even remotely be considered an advanced mathematics course. The vast majority of programmers never take Analysis, Abstract Algebra, or Topology - some of the really difficult undergraduate math courses. The truth is, some math is useful for programming in general, and that 'some math' is not very difficult. If you have facility with programming, you can probably muddle your way through calculus the way even an average student often does at the age of 16 in Europe.
Logic is essential in coding, as is being able to conceptualize ideas and concepts in a well defined manner. These are the same foundations for being able to understand mathematics easily.
Basically, yes you don't need to be a mathematician to code, but to be a good coder (i.e.: better than average) you need to have the kind of mind needed to become one.
Granted, we also have a problem where many people would be much better at math (and coding) if they'd just allowed themselves some patience and got over their fear of thinking hard about anything.
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
Whenever my kids say something about not being good at math I remind them that one time in their life answering what is 5 + 9 was difficult now you don't even think about it. Then answering what is 5 x 9 was difficult now you don't think about that either. Then answering what is 5^2 was difficult now you don't think about that. The point being, as you spend time learing a concept and practicing it eventually it becomes ingrained and suddenly is rather simple. It's not that you were bad with it before and are good now, it's just you need time to practice and let the concept sink in. it's amazing how helping my kids throught a worksheet with 20 or more questions turns them around from not understanding a concept to being comfortable with it.
Yes some people grasp the concepts much more quickly than others but in my opinon almost all of the complaints people have about not being good at math is not so much that they truly can't figure it out but rather that they didn't give it enough time. They think because the understanding didn't just automatically appear they are somehow not capable but I suggest most people are capable with more practice. It's not much different than learning music, there are geniuses but most people get good at their instruments through a lot of practice.
Many more people are going to know how to program, but less are going to be good at math -- which skill do you think will be more valuable?
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.
Americans don't need math because they're "coding" nonsense apps and think "Ruby on Rails" is coding. Programmers in the real world need to use C++, and that's why the rest of the world is coding the real stuff.
See subject: Depending on WHOM you're coding for, e.g. - engineering &/or scientific dutes (game programming's already covered here apparently) will MOST LIKELY require more math background - & that you really don't need, if someone around you has it (like engineers + scientists you're coding for) to supply the mathematical formulas you change into "computer math" to do the proposed task (usually data analysis/processing for an end result in a report many times).
I'll tell you 1 thing I've noted in coding professionally since 1994 - I did VERY LITTLE "higher end math" (like I saw in Discrete Math courses that I was required to take in a CS degree) - I did mostly financial or statistical math vs. higher end calc type work.
That's over a 23++ yrs. long professional career coding primarily around information systems work & reporting, accessing databases of said info. on midranges + mainframes largely, doing the "front-end" clientside work along with the DB work server-side, in a client-server environment.
APK
P.S.=> Your mileage may have varied - again, dependent on WHOM you were working for & what you were working on... apk