Slashdot Mirror


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."

86 of 616 comments (clear)

  1. Programming by fyngyrz · · Score: 5, Insightful

    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.
    1. Re:Programming by ColdWetDog · · Score: 4, Interesting

      Indeed, she thinks that 'script kiddy' = 'coder'.

      Possibly true for very small values of 'coder'.

      --
      Faster! Faster! Faster would be better!
    2. Re:Programming by Anonymous Coward · · Score: 3, Insightful

      "Me make website red. Me copy and paste hard stuff. Me programmer."

      Why the fuck is this on the front page?

    3. Re: Programming by Anonymous Coward · · Score: 2, Informative

      Saying you can code without Math is like saying you can repair a car without being a certified mechanic.

      Sure you can do some basic programming/logic but just like a backyard mechanic , you will still have limits imposed. Of course, there's no harm in learning but Math is necessary for more advanced programming.

    4. Re:Programming by Obfuscant · · Score: 3, Funny

      She wants her web pages to be red. To her, this is "programming". What color does she want her database to be? Then she can be an SQL programmer!

    5. Re: Programming by ShanghaiBill · · Score: 5, Insightful

      Math is necessary for more advanced programming.

      Linear algebra (matrices) and trig are essential for doing 3D graphics. Calculus and differential equations are need for doing simulations of physical processes. Otherwise, programming is not very mathematical. Web coding just requires enough arithmetic to do the layout, and most business programming doesn't even need that.

    6. Re: Programming by geoskd · · Score: 4, Insightful

      Web design these days is less and less about programming, and more and more about aesthetic and design. It has become so much so that the programming parts of it are largely unnecessary to be relatively successful.

      That having been said, almost no one considers a web designer to be a programmer. There is minimal overlap, but the tasks for which one would need a programmer are largely beyond a web designer, and visa-versa.

      --
      I wish I had a good sig, but all the good ones are copyrighted
    7. Re:Programming by presidenteloco · · Score: 3, Funny

      Let's say there wasn't yet a program to allow someone to create and edit and format documents containing words and pictures. (Arguably there still isn't a decent one in common use but that's another story.) Make such a program.

      Or let's say there isn't an efficient and secure peer-to-peer data storage sharing framework, infrastructure, and application. Make me one of those, or, for extra credit, first design and implement a new programming language which will make it easier to build this encrypted, distributed storage layer app, the write the storage thing. Oh and please make it simple to use and extend, performant and highly scalable, multi-platform, and maintainable.

      And I'd like it in red, by next Thursday?

      --

      Where are we going and why are we in a handbasket?
    8. Re:Programming by Jane+Q.+Public · · Score: 3, Informative

      Indeed. You can be a good programmer in most sub-fields without having a good grasp of multi-variate calculus, but you will never be a good programmer without at least some decent math skills.

      You might do okay at coding web sites. But even then: if you don't understand how the encryption works, how do you know what method to use for encrypting the passwords on your website. Should you just take someone's word for it? (Answer: no. And yet that's how bcrypt became popular.)

    9. Re: Programming by Anonymous Coward · · Score: 5, Insightful

      You're totally wrong. Only complete idiots or actual cryptographers roll their own.

    10. Re: Programming by Chalnoth · · Score: 4, Interesting

      Sort of. Many specific math classes aren't necessary, but most advanced programming has very close similarities to math. For example, graphs are used extensively in a wide variety of more involved coding, and graph manipulations are pretty mathematical. The thinking processes underlying most other algorithms are extremely closely-related to the thinking processes required for math.

      Also, if you're going to be doing any sort of mathematical calculation using code, there's no way you're going to be capable of properly debugging the code if you don't understand the math.

      I guess I like that she's saying that you can code even if math scares you, but all this says to me is that she had crap math teachers. If you can do a decent job of coding, you can learn math. It's just a question of finding the right learning methods.

    11. Re: Programming by chipschap · · Score: 2

      This comes back to the ridiculous idea that liberal arts majors are incapable of learning math, and the even worse idea that math is hard for women ... so there should be another way to become a "programmer."

      With decent teaching, the desire to learn, and the willingness to put in the time, math is just as much in reach as philosophy or political science or psychology ... maybe even more in reach, because you actually can solve problems with answers that are verifiably right or wrong.

    12. Re: Programming by Anonymous Coward · · Score: 5, Insightful

      math is the manipulation of symbols in a formal language.

      coding is the manipulation of symbols in a formal language.

      they are the exact same thing. If you can do one well, you can do the other well. Most people can't do either very well.

    13. Re: Programming by donscarletti · · Score: 2

      I think The Atlantic was trolling slashdot for subscriptions, since you need to subscribe to reply.

      Either that, or a lot of folks on /. have just stumbled upon why their work is misunderstood and unappreciated by those around them.

      --
      When Argumentum ad Hominem falls short, try Argumentum ad Matrem
    14. Re: Programming by Chalnoth · · Score: 4, Interesting

      Not necessarily just about care. Many people can get pretty bad anxiety about math due to the way they were taught. Especially if they just fall behind a little bit at one point, because math tends to build on previous things, it can become really difficult to catch up. All they need is one bad class and they may never make up for that deficit, with the way education in the US is currently structured.

    15. Re: Programming by RightwingNutjob · · Score: 2

      In either case. If they don't have their shit together for some modicum of success in one formal and/or quantitative discipline, they don't make good programmers. You do indeed need to be right every single time in rapid succession when your computer program handles millions of dollars of other people's money, doles out their medications, and keeps their credit card info secure, all to the nth degree if the program touches high voltage, high current, the throttle/brake of a car or the control surfaces of an airplane.

    16. Re:Programming by Darinbob · · Score: 2, Informative

      Good programmers know something other than how to code. People can code while being generally ignorant of all other skills, but that doesn't make them good at it. Math is important, at the very least so that you don't have to go to the next cubicle every ten minutes to ask a stupid question. If you don't know math, then don't even consider the advanced art of floating point and the countless ways that programmers who don't know numerical analysis screw it up. If you don't know abstract math then generally stay away from coding unless you have given highly detailed notes from your boss about every step of what you're doing, otherwise you'll screw it up and make dumb mistakes.

      If your program is going to be involved in some way with physical processes, then damn it you need to learn some physics! If your program is going to be involved some way with mathematical operations, then damn it you need to learn some math! If you're going to use graphics, you need to learn math. If you're going to be dealing with a radio then you need to know some physics and EE. If you're going to write something dealing with health or medicine (heaven forbid the ignorant masses attempt this) then damn it all to hell you need to know some small measure about health or medicine (and not from a tabloid).

      Why is this? Because you will NOT be programming exclusively. There will be times when you need to use your brain. Not the programming part of the brain but the part of the brain that has to deal with the actual problem that the program is solving. If you need to write a control loop then how do you do this without knowing about control theory? Google won't help as you'll spend weeks getting the basics. What normally happens is that these ignorant programmers will waste the time of their coworkers asking questions. Yes, you can't know everything, and yes you will have to ask your coworkers dumb questions, it's just a fact of life. But that college level science and mathematics really does help when you're trying to learn new things or have them explained to you. It applies to the arts and humanities too, not just science and math. Being a well educated person across the board is a huge advantage to a programmer.

      At the very least this ignorance will make one spend all day Googling stuff; something this author seems proud of. Like someone saying arithmetic is a pointless skill because you can use a calculator.

      About the only possible job you can get programming while knowing nothing about anything except programming might be web applications. Surprisingly, this is where most programmers migrate too, especially those who take things like "coding boot camp" courses. Even then you'll stay as an entry level programmer for your entire career.

    17. Re: Programming by Darinbob · · Score: 5, Insightful

      A lot of this just pushes all the buttons for me. My pet peeves with modern society are with the morons who revel in their own ignorance. There used to be a time when learning stuff was considered important. Even the president of companies would feel the need to learn what their company was about, how their product was made, how it worked, etc. Today ignorance is celebrated. Morons can go on the internet and say "I can code without knowing math", which sort of implies that people who do learn things are wasting their time. Cretins advocate that college can be skipped as a waste of time. Even those in college whine like kindergarteners that stuff is too hard or irrelevant to their future career behind a help desk.

      Ignorance should never be treated as a virtue. And yet that is what is happening and this original post proves that this attitude is still alive.

    18. Re: Programming by Darinbob · · Score: 2

      Even if you never use the stuff you learned in a difficult class in college, it at least has taught you to think better. Steroids for the brain. Someone who skips past all this stuff, taking shortcuts, avoiding theory, taking the easy classes like "math for athletes and web programmers", is going to have a flabby brain. They never learned how to think abstractly, never learned how to handle a complicated problem beyond their capabilities, and never learned how to learn. They're just going to have a glazed look in their eyes at the staff meetings whenever some complex topic is being discussed.

    19. Re: Programming by lucm · · Score: 2

      Apparently someone hasn't found the "Advanced" mode in Windows calculator

      --
      lucm, indeed.
    20. Re: Programming by Anonymous Coward · · Score: 2

      Agreed. I'll take a copy paster over someone naive enough to think he is capable of rolling his own encryption any day of the week. That said, I will give the poster the benefit of the doubt and assume that he was referring which encryption algorithm to use.

    21. Re: Programming by Anonymous Coward · · Score: 3, Insightful

      Graph theory is really under-taught in CS programs. I feel there should be at least one course devoted to it in entirety.

    22. Re: Programming by guestapoo · · Score: 4, Interesting

      My experience base on reading different maths textbooks:

      USA:
      Books aim at advanced students, (not all but almost) are likely encyclopedia. It's not that the material is hard, but the structure of the books is hard to follow, or not explain very well.
      Books for novice, for the masses, the "introduction/dummy" type. To describe this type of book: wordy and dumb. Endless explanations of trivial things, and strip, dump down necessary, important one to make it 'easy'. Beside of that, some 'favorite' authors like to write useless jokes in textbooks (It may be good thing if they do it when they lecture in a class)

      Soviet/European (mostly Soviet textbooks): maths books should be.
      Also, Soviet textbooks for novice are drastically different from USA ones. They use highschool level maths to explain advanced maths. The books are almost black and white, no jokes inside, but interesting read.

    23. Re: Programming by narcc · · Score: 3, Interesting

      I've done quite a bit of 3D graphics work, and I strongly disagree. You need very little. You say "Linear algebra (matrices) and trig" but you don't need much beyond what matrix operations to apply to achieve some goal (you need to actually understand very little, and far less if you use a matrix library) and soa cah toa on the trig side. Just about every major problem you'd encounter has a near standard solution.

      Calculus and differential equations are need for doing simulations of physical processes

      This is a bit outside my experience, as all I've done there is a 3D physics engine for a game. Even then, I suspect all you need to know are the equations and a few well-understood approaches to integration, actually understanding the math (or the physics) doesn't seem necessary. (Though I'll admit that it is helpful.)

      You can be an excellent programmer without strong math skills, even in some areas where a solid understanding of mathematics would seem essential. I'd even argue against the need for a strong background in logic. If Slashdot is any indication, most developers don't understand even basic logic. They've simply confused their rudimentary understanding of Boolean algebra with a complete understanding of formal logic.

      This isn't to slight developers, on the contrary. It's art, after all, not engineering. Be proud that you've mastered a skillful discipline.

    24. Re: Programming by shri · · Score: 2

      Hate to say this, but NO, NO and a big NO.

      Designers yes - web designers NO.

      A good web designer needs some fundamental architecture skills that are derived from math or science classes which teach you how to break down a problem into smaller bits, which bits to solve first and some fundamental boolean logic.

      A good web designer is not someone who throws in bootstrap, jquery and some pretty shit on a website. He/She understand how to break down the HTML/JS/CSS into smaller meaningful bits, how to include these bits depending on where and when they're needed. They understand how benchmarking goes (how long does it take a web server to respond, if the stack is sending a 1MB response from Alaska to Brisbane ..).

      I could go on and on about how much I've started to HATE people who copy paste shit, buy a theme, tweak a few colors, find some jquery snippets and animate a headline and go on to call themselves web designers.

    25. Re:Programming by Ol+Olsoc · · Score: 2

      She wants her web pages to be red. To her, this is "programming". What color does she want her database to be? Then she can be an SQL programmer!

      I understand her next project will be to create a national wireless system... After all, how hard can it be to not put up wires?

      also from Dilbert.

      --
      The shepherds did so well protecting the flock that the sheep no longer believed that wolves existed.
    26. Re:Programming by Wycliffe · · Score: 5, Insightful

      Because of this: how she taught herself how to code

      She didn't teach herself to code. She taught herself how to cobble together a website.
      Yes, you can cobble together a website with minimal coding skills by using already created widgets but what if you want a widget that doesn't exist yet?
      If you want to cobble together a website, there are plenty of programs like wordpress that require no coding skills at all.
      True programming doesn't require math as much as it requires you to be able to understand how to take small pieces like if statements and arrays and
      create something with it. I can explain if statements and a flow chart to someone in 10 minutes but the hard part of programming is being about to see
      how you can combine several thousand of those if statements to do something like generate an image. Being able to imagine the end product and plot
      a course to get there through several thousand steps using rudimentary blocks is what makes programming hard. Building a webpage is not programming.

    27. Re: Programming by Anonymous Coward · · Score: 3, Insightful

      I failed Calc I and III probably 3 times each in my Computer Science degree. I also have 9 patents, code running on ISS and a few satellites we don't talk about, and have a lead electronic systems architect position at a major space systems company. I passed Calc II with a B on the strength of my spacial intuition alone. In 15 years at a big corporation, I've learned that the mathmeticians on staff do the heavy lifting, the rest is silly algebra that a high school senior can do (or should). Real programming/SW engineering work can be done w/o the math minor demanded by idiotic university programs.

    28. Re: Programming by Lurking+Zealot · · Score: 3, Interesting

      Ignorance should never be treated as a virtue. And yet that is what is happening and this original post proves that this attitude is still alive.

      Yes, still alive.

      Not to sound like an old fart, but this is a very old problem that won't go away. It's easy to be frustrated by the infinite well of stupidity -- the human fate to play whack-a-mole with idiocy. For all the progress (including amazing tech) there's a tail in our intelligence distribution that is retrograde. Worse yet, there's a fraction in the intelligent part of the distribution that is cynical or lazy or evil.

      To be clear, I agree with you. Stupidity pushes my buttons too. I differ in that I don't think it's a problem exclusive to modern society. I'm pretty sure that there never really "used to be a time when learning stuff was considered important" *in the sense* that most people thought that way. Rather, I think we've been lucky to benefit from the smart and non-cynical people who have, by virtue of their creativity and (perhaps, accidental) generosity, given us pretty usable tools of agriculture, commerce, art and humor to work with. Of course, those tools only work well for some of us and the negative side of those tools can be downright nasty to those without the means of most slashdot readers.

      My point is that in spite of the large number of morons, I don't want to let that sap the infinitesimally small amount of good I just might be lucky enough to do without also, possibly, messing up in some colossal unintended way.

      Peace.

    29. Re:Programming by crioca · · Score: 5, Informative

      But even then: if you don't understand how the encryption works, how do you know what method to use for encrypting the passwords on your website. Should you just take someone's word for it? (Answer: no. And yet that's how bcrypt became popular.)

      As someone who works in the infosec industry, the fact this comment is rated +5 Informative fills me with panic. Yes, you should absolutely take someone else's word for it, specifically you should take NIST's word for it. Because unless you're one of a handful of the most knowledgeable people in the world, you don't know enough about cryptography to judge the merits of a cryptographic hash algorithm.

    30. Re:Programming by Zontar+The+Mindless · · Score: 2

      Try to program as if you're writing English.

      The converse of this, as I've learnt over the years, is that someone who can't write correct and sensible English* almost always sucks at coding as well.

      (*Placeholder for "coder's native language".)

      --
      Il n'y a pas de Planet B.
    31. Re: Programming by Jane+Q.+Public · · Score: 2

      You're totally wrong. Only complete idiots or actual cryptographers roll their own.

      I think you need to read my comment again. I didn't write ANYTHING about "rolling your own". I just wrote that you should have at least some knowledge of how it works.

    32. Re:Programming by Jane+Q.+Public · · Score: 2, Insightful
      Well, my comment has been so much misunderstood, I cannot help but think I could have worded it more clearly. I didn't mean what you seem to think I meant. Even so, THIS:

      As someone who works in the infosec industry, the fact this comment is rated +5 Informative fills me with panic. Yes, you should absolutely take someone else's word for it, specifically you should take NIST's word for it.

      ... is such utterly wrong, complete bullshit, I hardly know where to start.

      You're referring to the same NIST that tried to foist Clipper Chip and Skipjack on a mostly-unknowing public in the early 90s? And planned to continue with the plan even though 80,000 negative comments were received during the public comment period, and a mere handful of positive comments? The same Skipjack that was later shown to have serious flaws?

      Or, let's see... wasn't that the same NIST that has been implicated in trying to push a compromised form of elliptical-curve key generation on the businesses and public of the US?

      That NIST?

      It is to laugh.

      No, people should listen to private-sector experts, and not listen to the Government at all, or at least take what it says with a grain of salt the size of a basketball.

    33. Re: Programming by randalware · · Score: 2

      You may not need much math to do web programming (CSS,HTML,PHP).

      But you start using a more robust language like Ruby,Swift,Go, Javascript you will need it.

      Logic & math go hand in hand, without it, you will produce bloated, buggy, slow code.

      It may work, but it will be hard to maintain, even by the original author.

      Every coder should look at code they have written years before (or code by others) to see how much they have learned.

      You "I don't need math" people need to try using C or assembly for a non-trival program, then port it to another system(with a different OS & CPU)

      Spreadsheet macros need math, and those have been a non-programmer computer user activity for decades.

      Pay attention in math class & do your homework.

      I always hated the math teachers that couldn't explain what some math was good for.

      You may not need engineering calculus, but it helps.

      --
      This is my opinion based on what little I know and understand of the rumors and lies Thanks, Randal
    34. Re:Programming by Hognoxious · · Score: 3, Insightful

      I've had that conversation too. Then the other person said he couldn't possibly program $_something_complicated_about_signal_processing (or was it $fiendish_mutimodal_supply_chain_optimisation) without all of it.

      Seems some people confuse programming itself with the problem domain or the subject matter. You certainly don't need much beyond highschool level for writing CrapCo's inventory system.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    35. Re:Programming by TheRaven64 · · Score: 2
      First: NIST? Really? I guess you've not been paying attention for the last couple of years.

      Second: You misunderstand the grandparent. If you don't understand the basic ideas behind a crypto algorithm (or, more importantly, crypto protocols) then you will pick the wrong one. No matter how good a cypher is, or how verified the implementation is, if used incorrectly it will still be insecure.

      --
      I am TheRaven on Soylent News
    36. Re: Programming by TheRaven64 · · Score: 3, Insightful

      The one that bugs me the most is the imbalance between how society treats knowledge of humanities and sciences. If a scientist doesn't know about history, then he fits the 'ignorant scientist' cliche and is a figure of fun. If a historian knows far less about the science that his daily life depends on, then he's considered a cultured and well-rounded individual. And, in my experience, the humanities person who is ignorant of science is far more prevalent than the scientist or engineer who is ignorant of humanities.

      --
      I am TheRaven on Soylent News
    37. Re:Programming by TheRaven64 · · Score: 2

      CSS is actually a Turing-complete language these days, though you'd have to be completely insane to try to implement a complex algorithm in it.

      --
      I am TheRaven on Soylent News
    38. Re:Programming by Sique · · Score: 3, Insightful
      Somehow people are messing up "knowing math" and "knowing enough about math for programming". She never claims that basic math wasn't a necessity, she also doesn't claim that knowing some calculus and linear algebra is superfluous.

      But there is a whole world between being able to do the math necessary to rotate a 3D vector in a 4D space and the proof of the Poincaré-conjecture.

      Also a plumber doesn't need to be able to do the math of the Chapman-Kolmogorov equation to find out when the laminar flow in a water tube turns chaotic. But he should know that changing one parameter (e.g. the length of the tube or the diameter or the flowing speed) will move the limit and can turn the actual flow back to laminar, even though he's not able to write down all the integrals.

      So yes, knowing math is fine for programming, and there are many task in programming which require some special knowledge about some obscure math problem and its solutions, but it is not necessary to study the whole field of mathematics surrounding that math problem, nor is it necessary to be able to solve the math problem on your own.

      --
      .sig: Sique *sigh*
    39. Re: Programming by Shortguy881 · · Score: 2

      I've never met a good programmer with weak math skills. While your general statement is true, math is not needed to program, mathematics and logic are too tightly coupled to be good at one and bad at the other. The same type of thinking is needed for both.

      Someone inherently good at programming will be inherently good at math and vise versa. Someone who can't understand mathematical concepts will struggle with logical ones. As to your point about engineers, most of the best programmers I know came from fields other than programming that required a higher level of mathematics, like engineering.

      --
      Brilliance without wisdom, power without conscience. Ours is a world of nuclear giants and ethical infants.
    40. Re: Programming by Grishnakh · · Score: 2

      My pet peeves with modern society are with the morons who revel in their own ignorance.

      Today ignorance is celebrated.

      Ignorance should never be treated as a virtue. And yet that is what is happening and this original post proves that this attitude is still alive.

      Welcome to American society.

    41. Re: Programming by werepants · · Score: 2

      I think that whole anti-science attitude comes from insecurity. The thing is, with math and the hard sciences, it can take months or even years of learning to even be able to understand a problem, much less solve it. There's a massive barrier to entry, and what's more, there are objectively right and wrong answers, so you can't B.S. your way through it.

      I briefly enrolled as an English major before I wised up and got a physics degree. The thing about majoring in the humanities is that after a year or two of schooling, I was left feeling no more capable or informed than when I started. I read a bunch of books, and wrote a bunch of subjective papers that were subjectively graded, with no real right or wrong - the question was just if you could churn out a competently assembled essay in the allotted time.

      When I was in physics, however, I would gain a new fundamental understanding or skill on a weekly or even daily basis. You try to do your assignments, get a wrong answer that doesn't make sense, and then try again until you are confident you've mastered the material. This matches coding far better than any amount of essay writing or literature reading ever could.

      To play devil's advocate for a moment though: I also get tired of engineers with the attitude that writing well, understanding philosophical arguments, or appreciating the history and larger context of a field are pointless. There are a lot of folks with a technical background that seem entirely content to be ignorant about everything else out there, which is partly what creates that 'out of touch egghead' stereotype that is easy for insecure people to mock. Ideally both technical and non-technical people would love and respect learning of any sort.

    42. Re: Programming by volmtech · · Score: 2

      This is pervasive throughout American education, especaly with disadvantaged minorities. My wife is in nursing school. She is an older student and studies very hard. She is also the top student in her class. Of the 13 students in her class 4 or 5 fail every exam. The teacher then throws out enough of the tough questions so every one can pass or offers extra credit work. Last night the teacher offered a 50% grade bonus for doing the workbook pages for that segment. Some students started whining that there were too many pages, how about enough credit to pass from just a few? These are our future nursing home staff. I plan on dieing at home.

    43. Re: Programming by Chriscypher · · Score: 2

      It's more important to be useful and productive than to be formally trained.

      This is not an excuse for lack of depth. It's as important to understand your own limitations and to seek expert advice (or to more adequately research) when you know that you do not know the best implementation.

      There are very few experts, even among those who claim to understand a technology.
      Joke: There is a special name given to the person who graduates bottom of their class in medical school: doctor.

      It's turtles all the way down.
      Know your limitations. Embrace your ignorance. Use that knowledge to extend your knowledge, whilst providing usable solutions.

      --
      "You have liberated me from thought."
  2. Yes, but you SHOULD get good at math by Theovon · · Score: 3, Informative

    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.

    1. Re:Yes, but you SHOULD get good at math by Kiaser+Zohsay · · Score: 3, Interesting

      Ok, so you can do a lot of coding without knowing math.

      But being able to understand code and coding requires a lot of the same skills that are required to understand math. Ergo, if you can get good at math, there is a high likelihood that you can also get good at programming. And vice versa. You can do long division without knowing a lot of math, but that doesn't make you a mathematician.

      --
      I am not your blowing wind, I am the lightning.
    2. Re:Yes, but you SHOULD get good at math by fustakrakich · · Score: 2

      Who needs fucking math when you can Google?

      Well, at least there's youtube to pull up some Allman Brothers, then fire up the fatty...

      I'm beginning to thank my deity that I'm old...

      --
      “He’s not deformed, he’s just drunk!”
    3. Re:Yes, but you SHOULD get good at math by geoskd · · Score: 2, Interesting

      Who needs fucking math when you can Google?

      There are lots of answers that a professional (read as highly paid) programmer might need math. If you want to make the big bucks, you want to work at google, or do embedded programming, you're going to use advanced math once in a while. A great example is a problem I recently faced. I needed a heating device that consumed 2kwatts average power, and to make it as cheaply as possible, it needed to do so directly from 110V AC. The heater core had a very low resistance, so it needed to be PWM driven, with a sensor to turn it on and off based on the instantaneous line voltage. When the mains were below a certain voltage, it would turn on the current, and when it was above that amount, it would turn off. So now the problem is, for 2kW average power, what is the approximate cut off voltage. This needs to be within about 5 volts plus or minus so that we can pack all of our available sensor range into that small range to get very accurate outputs.

      I could spend a week using trial and error, and blow up several hundred dollars worth of parts getting it wrong, or I could spend 2 hours doing the calculus to get the actual answer (I'm pretty rusty at calc, and came up with an absurd answer on my first attempt). My boss hired me, and I make a lot of money because I could handle problems of this calibre. If all you want is a 35k / year job then not knowing math is fine, but if you want a career with a future, then the math is critical. Math doesn't make products work, it makes them cheaper to build and cheaper to design, and as a programmer, your value to the company is a function of how big a difference your work product makes to the bottom line. The more money the company has at the end of the day because of you, the more money they will pay you to be there.

      --
      I wish I had a good sig, but all the good ones are copyrighted
  3. Take it from me by John+Allsup · · Score: 4, Insightful

    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
  4. You know there's a problem... by Anonymous Coward · · Score: 4, Insightful

    ...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

  5. Learning to program by Googling + Trial & Erro by ahbond · · Score: 5, Insightful

    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

  6. Interesting by Moridineas · · Score: 5, Interesting

    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...

    1. Re:Interesting by turkeydance · · Score: 2

      exactly. here comes the car analogy....why learn to drive a manual shift car, since an automatic transmission is "out there" and "done it better"?

    2. Re:Interesting by meta-monkey · · Score: 2

      "Show me wax the floor! Show me paint the fence! Show me sort the bubble!"

      --
      We don't have a state-run media we have a media-run state.
  7. They have it backwards... by mark-t · · Score: 4, Insightful

    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.

  8. Obligatory car analogy by sheetsda · · Score: 2

    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.

  9. It's true by Anonymous Coward · · Score: 5, Insightful

    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.

    1. Re:It's true by KGIII · · Score: 3, Funny

      Umm... I have a PhD in Applied Mathematics. I code like a drunken mentally ill person. The worst part is that I wrote a lot of code... *sighs* I redid a lot of code. I eventually hired professionals.

      "So, David... What exactly do you mean with the "I'm Too Drunk" button nested in the menu under a mysterious label called "Hide and Seek?" She asks, with a determined look to see if I should be committed.

      "Oh that? Yeah. For now it just closes the application. When I get a minute I'm going to tie it into the time clock to punch the user out and send a message to people physically close on the network to have them call a taxi - it will be at company cost." Was the only logical reply. Followed up with, "And this would be done if I had time to learn that API for the time clock."

      "You're not serious, right?"

      "Oh, but I am. Click the button and see."

      Ah, little did she know... The button deleted random database assets. That will teach her to meddle.

      Some of that narrative is fiction.

      --
      "So long and thanks for all the fish."
    2. Re:It's true by sverdlichenko · · Score: 3, Insightful

      Unfortunately, high school math isn't "basic understanding", it's in fact advanced. Most people do not have any idea how to multiply matrix to vector, or that matrix may be multiplied to something, or that matrix isn't just movie title. Or how parabola and hyperbola differ. Basic understanding is fourth-grade arithmetic (mentioned in the article) and this is absolutely not enough.
      Sure one can code without learning math. And one can play in trash movies without learning acting. So much as I can apply a cast to someone's broken leg guided by google search result, but really should not unless we are in the middle of the zombie apocalypse. And I (and most people) should not sing in the opera even in the middle of the zombie apocalypse.

    3. Re:It's true by thinkwaitfast · · Score: 4, Interesting

      I can only count one job out of about 2 dozen in thirty years where I had to multiply vectors. And this includes a few NASA subcontracts that I've been on.

  10. Not according to HR by Billly+Gates · · Score: 4, Funny

    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

    1. Re:Not according to HR by Anonymous Coward · · Score: 3, Funny

      Sure, and the last 5 resumes I've seen from over there claimed extensive knowledge of the continuous integration server Jinkins. That's right, they copy-pasted the typo in every resume.

  11. Yeah right! Who needs a damn brain?! by fustakrakich · · Score: 2, Insightful

    We have Google!

    Lord, help us!

    --
    “He’s not deformed, he’s just drunk!”
  12. Disagree by erp_consultant · · Score: 2

    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.

  13. Let the dumboning begin by nyckidd · · Score: 2

    "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!

  14. If you need math, learn it. If not... by Tenebrousedge · · Score: 5, Insightful

    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.
  15. math talent, not math knowledge. SQL is algebra by raymorris · · Score: 5, Insightful

    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.

  16. Sorry, but some of these "math guys" scare me by mariox19 · · Score: 3, Interesting

    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.

  17. I majored in applied math by Snotnose · · Score: 3, Funny

    Yet have spent most of my career as an embedded programmer. Arithmetic and basic algebra have done fine for me.

    / Only time I use my math degree is when I go off on a tangent
    // Sorry, I'll write an apology and sin it
    /// After I get my boss to cosine it

  18. Re:Learning to program by Googling + Trial & E by ColdWetDog · · Score: 2

    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!
  19. I was doing it wrong! by GPS+Pilot · · Score: 2

    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.
  20. Well, that was insulting by bobaferret · · Score: 2

    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?!?!

  21. Hey, I do that! by Anonymous Coward · · Score: 5, Interesting

    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.

  22. Coding != Software Development/Engineering by devforhire · · Score: 2

    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.

  23. Programming by jgotts · · Score: 4, Insightful

    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.

  24. Often aren't "math guys" but "arithmetic guys" by mx+b · · Score: 4, Interesting

    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.

  25. All mathematical fields are necessary nowaday by guestapoo · · Score: 3, Interesting

    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.

    1. Re:All mathematical fields are necessary nowaday by lucm · · Score: 3, Insightful

      I have no idea what is Combinatorics, and I would have to google many of the words in your comment, yet I've been programming for a living since the late 90s.

      Not everyone in IT is coding videocard firmware.

      --
      lucm, indeed.
  26. Fourth grade my fuzzy ass by PopeRatzo · · Score: 2

    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.
  27. Funny thing by dbIII · · Score: 2

    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.

  28. Different math from K-12 by pruss · · Score: 2

    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.

  29. Olga Khazan is probably smarter than my dog. by slacka · · Score: 2

    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.

  30. Dunning-Kruger by Kohlrabi82 · · Score: 2

    Let's call this style of coding "Dunning-Kruger-coding".

  31. Math.... by Mirar · · Score: 2

    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.

  32. hmm by xettera · · Score: 3, Insightful

    You don't have to be good at anything to plagiarize

  33. Fix the documentation by johannesg · · Score: 3, Insightful

    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...