Ready CEO: Coding Snobs Are Not Helping Our Children Prepare For The Future (qz.com)
jader3rd writes: Quartz has an article written by the CEO of Ready, David S. Bennahum, about how public education should be embracing computer science, and how existing programmers don't like these efforts because they feel that doing so will result in kids being exposed to programming in a manner different then how they were introduced to it. Bennahum writes: "Writing software today is eerily similar to what it was like in the late 1950s, when people sat at terminals and wrote COBOL programs. And like the late 1950s, the stereotype of the coder is largely unchanged: mostly white guys with deep math skills, and minimal extroversion. Back in the Sputnik-era, people thought of programmers as a priesthood in lab coats: the sole keepers of knowledge that ran these exotic, and mysterious room-sized machines. Today the priesthood is a little hipper -- lab coats have long given way to a countercultural vibe -- but it's still a priesthood, perhaps more druidic than Jesuitic, but a priesthood nonetheless, largely comprised of white men." "Instead of attempting to lure code-literate teachers away from Silicon Valley, we need to revolutionize the way coding is done. Rather than fit the person to the tool, let's fit the tool to the person. Pop computing can help us get there, offering a gloriously diverse array of tools to match our gloriously diverse species. It's only a matter of time before the process of making software itself is transformed, from one that requires a mastery of syntax -- the precise stringing of sentences needed to command a computer -- to the mastery of logic. Logic is the essence of software creation, and the second step after mastering syntax.'
Exposing kids to computers will turn too many of them into sad losers who will become so engrossed with machines as to forget life is about human interaction. By the time they will have realized them, it will be too late. Teach them sports, it stimulates competitivity and teamwork. You don't want to be code monkey.
Writing software today is eerily similar to what it was like in the late 1950s, when people sat at keypunch machines and wrote COBOL programs.
Not to mention that the person doing the keypunching was not necessarily the person who wrote the code.
If it weren't for deadlines, nothing would be late.
Whenever I hear antiwhites spouting their retarded PC BS, I want to physically wound them. This is the only healthy reaction to all these buzzwords and this revolting idea that "everyone is the same". No. They're not. People of different races and the two genders are very different. This is not something bad. This is, ironically, *diversity*. Each race has its pros and cons. Females and males excel at different things. There will naturally always be a few exceptions. Having to point these obvious facts over and over (usually to deaf ears) is really tiresome.
Now fuck off, David S. Bennahum, and the rest of you psychopaths who are trying to bend biology to fit your retarded misconceptions of the world.
Empty slate equals freedom to choose. How else could we have those school kids coding something compilable to the FPGAs running stock trading algorithms during their school's unpaid work experience days?
I will not apologize for, rightfully belittling to the point of tears, child-people who decide to uses tabs in their code instead of spaces. That's not snobbery; that's a moral imperative.
I'm not opposed to "pop computing". Anything that hooks people on to programming is a good thing. HyperCard got me into programming at a young age and it wasn't mathy.
That said I disagree with a lot of the author's attitudes. The author's photography example is interesting in that yes, loads of people can now take photographs, but that doesn't mean they're taking _good_ photographs.
After all, HyperCard was one of many technologies that was going to make programming obsolete, and that was thirty years ago...
You still need the math background necessary to evaluate algorithms. Intuition is nice and all but when programmers work together as a team, there is need for formal methods because not everyone's intuition leads them to the same place.
As you can see from my writing style, English language is optional. Minimal communication skills necessary would be to grunt and gesture at a whiteboard. (half-kidding)
“Common sense is not so common.” — Voltaire
Instead of attempting to lure code-literate teachers away from Silicon Valley, we need to revolutionize the way coding is done
This statement really confuses me. So if kids need experts to teach them, it just means they're doing it wrong? How does that makes sense?
Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
Learning to code isn't preparing the future; it's preparing to relive the 90's. If you want kids to prepared for the future, you need to teach them that other skill, the one that is in demand in 2025. Also F this hipster asshat CEO and his bullshit company.
Having dealt with human beings occationally throughout my career, my professional advice is to avoid interacting with them when possible, and bear it as best as you can when there is no other option.
“Common sense is not so common.” — Voltaire
Seems quite odd that he says that coding shouldbts require deep math skills, but then goes on to say that it requires mastery of logic. Did someone not enough math classes to realize that logic is a branch of math?
Hate the way race and gender keep getting snuck into articles like this, just stop it already, it's not important.
Ah, yes, sure. After Pascal and Lisp, then C++, then Java, then Ruby — all promising "a revolution" — we are due for another. The revolution to end all revolutions, perhaps?
Meanwhile, I spill my heart out admitting to having started with FORTRAN, and get downmodded to zilch by the snobs... Sigh.
In Soviet Washington the swamp drains you.
existing programmers don't like these efforts because they feel that doing so will result in kids being exposed to programming in a manner different then how they were introduced to it
Right, we don't like it when you do it in a way that is unlikely to be effective in helping more people learn to program and learn to enjoy programming. Because most of us like nothing more than the joy of spreading the love of programming.
white guys ... largely comprised of white men
Oh, baloney. My university UTA was nicknamed the "University of TenThousand Asians." I'd go to the computer lab and come out with an accent. I once commented that a coworker who was flying back to Boston didn't sound like he was from Boston because he had a "normal midwestern accent" and a startled colleague said "jdavidb - he has a thick Indian accent! What are you talking about?" I didn't even notice because that was just normal to me.
Most programmers I know at least online have a leftist or multicultural bent, and nearly all of them love to help new programmers who show an aptitude.
My kids are homeschooled and are learning to program, and we're quite multicultural with weekly attendance at a bilingual church. I don't think more institutionalized schooling is the solution here, and it's not that I want to reserve programming to a priesthood of white men.
Secession is the right of all sentient beings.
The article compares computer science to chemical photography. Before digital photography became widespread, photography was difficult and required specialized knowledge and skills, but now any idiot can take photos. So the argument goes that if we just take the difficultly of gaining specialized knowledge and skills out of computer science, then any idiot will be able to write a computer program. The only think that stands in our way are those coding snobs, and our inability to do programming without skills.
While we're at it, let's revolutionize medicine, too. I'm sure the doctors will appreciate not having to know how the human body works, because someone built a fancy tool that's supposed to do it all for them while they still call themselves Doctors.
Meanwhile, I like being alive, so I'll keep my current well-trained doctor, thanks.
Why does what they're calling the "future" sounds suspiciously like the dot-com/Y2k bubble, which is now over 15 years old?
Neither I or my colleagues are in any way anti-social or socially awkward. Being a developer is a job the same as any other.
The idea that the old style was bad because it required "deep math skills" is wrong headed. Computer science *requires* deep math skills; computer science is a branch of mathematics essentially. The writer wants us to focus on logic, but logic is mathematics!
If we lower the bar and say that we just talking about 9-to-5 programming for a basic salary with no leadership or design expectations, then maybe you don't need any math or engineering or domain knowledge. But that's not aiming high, that's aiming for an entry level job that lasts 40 years.
We're not trying to keep people out by being snobs, instead we're trying to stop the long slow decline of computer science and computing. There are applications of computers that require absolutely top notch people, especially as the uses of computers become more common you want computers to be designed, built, and programmed by very smart people. Do you really want to fly on a plane programmed by someone who skipped college because it was too time consuming?
Look at the math this way..
Student: I don't need to learn boring calculus because computers can do that for us. I'm a cool programmer dammit, not a math nerd.
Teacher: Ok, write a program to take the derivative of this equation.
Student, one week later: This is too hard... Don't they have experts for this sort of thing?
Teacher: Never mind. Just give me the burger and small fries.
There are virtually no languages that are syntax constrained. For everyone other than a handful of freaks (savants), people will master the syntax long before running out of brainpower for the logic.
How many times have you seen a syntax cheat sheet inside of a 1000 page logic (programming) book? Now how many times have you seen a logic (programming) cheat sheet inside a 1000 page syntax book?
(Take a bow if you answered postscript before reading this far.)
See that "Preview" button?
Hey CEO Asshat;
Please go follow around a programmer for a week, a la "dirty jobs".
Why is it this guy seems to think that "programming" is going to become building blocks that you slap together?
Someone still needs to build those blocks. A brickmaker isn't a Mason, but a programmer needs to be both.
It scares me that these Executive types think making software can be reduced to the simplicity of making Big Macs on an assembly line.
"Writing software today is eerily similar to what it was like in the late 1950s, when people sat at terminals and wrote COBOL programs. And like the late 1950s, the stereotype of the coder is largely unchanged: mostly white guys with deep math skills, and minimal extroversion
The guy who wants to change the world, can't keep from relying on stereotypes to understand the world.
Also programmers don't tend to have 'deep math skills' (including myself). It's just that compared to this CEO, understanding basic algebra counts as deep math skills.
"First they came for the slanderers and i said nothing."
Terminals (as we think of them with keyboards and a display screen) didn't exist at all until the mid to late 1960s. A 1950's programmer would be sitting at a keypunch, creating a deck of cards. These would be submitted as a batch process, and you'd get your compiler & run results hours (or maybe a day) later, printed in smudged type on a stack of large fan-fold tractor-feed paper. With few exceptions, the sort of interactive programming you can do "sitting at a terminal" wasn't commonplace until the 1970's.
Guess what, coding is just writting down an idea in a way a computer can compile and execute. We have been writing down ideas for centuries now, in their own little formats only people well versed with the subject can understand. Any adv. mathematics/adv. chemistry/assembler piece of paper looks like line noise to the layman..
OK, I get it - being a while guy is bad. But why is it bad to be competent and good at your job, which is what deep math skills means? Aren't they advocating for training more good programmers?
We're not opposed to all this bullshit "everyone should code" crap because we're anti-social curmudgeons; it's because we all understand that it's just meant to try to flood the job market with cheap labor.
No, that link you posted to a web comic we've all seen a hundred times is not "obligatory."
Most people have enough writing skill to write messages and/or email (or even letter via postal mail), but very very few have the aptitude needed to be a professional writer.
Similarly, you can teach programming to a lot of people, but very very few will have the aptitude to become real software developers.
I'm all for teaching kids programming. Probably will find a few more who do have the aptitude than would come forward on their own.
Just don't expect a new "army" of software developers. We already teach kids writing, but very very few ever become real writers. No different for software developers.
Don't try to out wierd me, three-eyes. I get stranger things than you, free with my breakfast cereal. --Zaphod Beeblebr
I'd like to force guys who think like this to fly in a jet plane designed by a generation of aviation engineers who didn't need to do all that dopey math and science stuff the the current priesthood forces on its members, or drive across big bridges designed by civil engineers who didn't fall for the idea that they needed to learn about the minutia of stresses and strains and building materials and soil types.
I remember a parable story about how a dev team lamented about the 20 standards there were for XXXXX. So they decided to merge all the standards into one comprehensive standard. They worked long and hard and finally completed the mammoth task and released it to the public. Now there were 21 standards.
This story about "pop computing" seems similar for some reason.
Seriously? Programming is the trivial part. The further I have gotten in my career the less coding I do- figuring out requirements and how to make business workflows work is the hard part and don't require coding.
love is just extroverted narcissism
public education should embrace computer science but they should not force children to learn any particular programming languages because it's a niche skill and programming is not for everyone. however, generic logic and problem solving/deconstruction is something that every child should learn.
Anons need not reply. Questions end with a question mark.
BULLSHIT!
stop lying. this does not help ANYONE when you keep saying the same incorrect bull over and over and over (and over and over).
go to silicon valley. walk the hallways of a cisco or similar. breakdown is roughly 90% indian, 8% various asian and the rest is western-born.
white men? you gotta be kidding me. are you writing this from kansas or something? because where I sit, in the bay area, whites are the smallest minority. walk down cupertino and its almost all chinese. walk most places in the bay area, its all indian. you hear hindi and mandarin and some cantonese along with korean and vietnamese - but english - not much english anymore.
sick of this lock-out culture. if you are not one of the imports, you are not a first choice for a job in this area.
I wonder who keeps paying the liars to lie to everyone? is this swj gone full-retard? or is this just someone from outside tech areas who write from their ivory tower, totally disconnected from reality?
or maybe everyone who writes this drivel KNOWS its a lie but has the agenda to keep pushing MORE imports into comp-sci and asking for more h1b's to enter the US.
or, finally, its just a ploy to get clicks. they know it will get many of us angry and (like me) it caused me to write this and hit 'submit', which gets them clicks.
no matter what the reason is, I'm sick and tired of this crap.
--
"It is now safe to switch off your computer."
Seeing as how I don't have kids, I don't see how it is my job to prepare any kids for the future. Furthermore, I have every reason to expect that there are already enough kids who will self-start on their programming career, so there is little need for a huge, overt, cultural push along these lines.
I already pay plenty of tax dollars to support the education of other people's kids. My obligation is met.
So, I consider myself free to state the facts as I see them, including the fact that advanced programming (architecture-level work) is a difficult skill set that requires a lot of innate talent backed by hard work. Some people are just not cut out for it, and I don't see why we should lament this.
Fucking bullies still think they're the masters of us. Your kind is on the waiting list to be automated away, manager-wannabe, by "mostly white guys with deep math skills, and minimal extroversion".
Might as well say, "Some people can't swing hammers. Let's change all the hammers so they work without swinging." Idiot.
He said "letâ(TM)s fit the tool to the person". What does he mean by tool? The programming languages, the IDEs, compilers?
He means we should use their tool: "Our efforts at Ready, a platform that enables kids to make games, apps, whatever they want, without knowing a computer language, are designed to offer a new approach to broadening access to code literacy."
Great sales piece dressed like an article with a side of "save the children".
K-12 test scores in the United States are among the lowest in the Industrialized World. I don't think America should divert efforts to educating a large percentage of its population in computer programming. The average person just don't want to do it. Just like the average person doesn't want to learn hard math.
FTA: ..a priesthood nonetheless, largely comprised of white men.
Some of us are Asian, you insensitive clod.
Back in the Sputnik-era, people thought of programmers as a priesthood in lab coats: the sole keepers of knowledge that ran these exotic, and mysterious room-sized machines. Today the priesthood is a little hipper -- lab coats have long given way to a countercultural vibe -- but it's still a priesthood, perhaps more druidic than Jesuitic, but a priesthood nonetheless, largely comprised of white men."
Somewhat recently NPR featured a story about women programmers, and a graph showing women in CS climbing until the 1980s. In another article at Smithsonianmag.com on how programming used to be "women's work" a commenter states:
In the 1960s, some vocational profiling studies came out that coloured computer programmers as "disinterested in people", and this personality profiling was added into the aptitude tests by which companies decided who to train for programming positions, despite evidence that psychometric profiling is inaccurate. This, in addition to the increased requirement for formal mathematical training (which not many women had), the changing view programmers were skilled professionals (traditionally men) and not people who just calibrated machines, and women's lack of access to personal computers, contributed to the decline of women in computing.
Fast forward a decad: the Personal Computer revolution of the 90s and increasing accessibility, falling prices, there has never been a time where computing is so accessible. YouTube, and plenty of other sites including MOOC courses, which in no way discriminate, what gives? Apparently the vast majority of people don't want to program either. If you're interested in it, you will seek it out. What next, forcing people to study topics based on their sex?
Man blir trött av att gå och göra ingenting.
Agreed, this guy needs to be stabbed in the face with a rusty crab.
If you read past the first paragraph or two of TFA, you can see what is really up, he is shilling his company in this puff piece, talking about how whatever shitty software Ready is making will solve all education's woes by teaching kids to code in a completely new and different way.
"Our efforts at Ready, a platform that enables kids to make games, apps, whatever they want, without knowing a computer language, are designed to offer a new approach to broadening access to code literacy."
As a senior coder who has written a lot of code, this guy sounds like a complete tool that I would not trust with two burned out matches and a short piece of string, let alone the education of the next generation of computer scientists.
HA! I just wasted some of your bandwidth with a frivolous sig!
I can tell from this comment that David S. Bennahum is obviously American (and verified by reviewing his LinkedIn profile). The United States embraces and rewards extroversion excessively, to the point where it's actually harmful and demeaning to those of us that are introverts. Susan Cain would have a field day with this guy.
Both personality types (extro and intro) are perfectly capable of programming, educating, and both combined. The way his quote reads (and I refuse to believe there were any other intentions) indicates he considers non-extroverts to be a problem. Guess what: we're not a problem, we just operate and recharge differently, and prefer deeper more 1-on-1 socialising.
In other words: extroverted coders, introverted coders, it doesn't matter -- learn to leverage both personality types effectively and you'll find something magical happens (hint: workers actually being happy and enjoying what they do, especially the introverts: because having to pretend to be an extrovert is a task we all learned, but it drains us of energy and inspiration very quickly)).
Dweebs and Chumps of Earth:
Don't bother using your puny brains to comprehend computer code.
You may have to put down your cell phone and think.
I will code all that is needed for my domination and then exit
from this disgusting meat pile.
1010101010101001010
any programming that's more complex than code monkeying is math. Getting kids into math is hard because math is hard (yes, Barbie was right). It requires one of two things: a massive investment in children's learning and education (including support for their parents so they can keep pace with their child) or just relying on a massive populace to produce the occasional genius and then cherry picking them. The latter is cheaper and much, much more profitable, so it's the one we've always gone with.
Anything else anyone has to say about kids writing code is just a cover for some other agenda. Either selling you crap (usually their software or education services), an attempt to get the tax payer to pay for training their employees (often their foreign employees as we're starting to see with the American University system) or some combination there of.
Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
He seems to hate "white men", and apparently wants to stop us from having our own countries, by forcing millions of unwanted third world parasites onto us...
...that you have to learn to write code to become a programmer. You know, the basics so that you can write software that does what you want it to do. Kind of like learning to write before you can become a writer.
If one is spending most of their time on syntax issues after gaining some experience, they are probably either doing something wrong, or shouldn't be coders.
One big time-waster "problem" I do see is that the "web stack" is overly complicated per UI issues. The client is too damned fat and the web has unnecessarily turned UI's into rocket science.
As I've ranted about many times on slashdot, re-formatting and UI placement issues should be handled on the server side instead of the client (browser). This gives one more layout engine choices (project fit) and reduces bugs and testing related to client version/brand differences. The client should merely be a dumb vector processor that simply plots given exacting screen coordinates rather than be a UI "flow and style manager".
Table-ized A.I.
"...gloriously diverse array of tools to match our gloriously diverse species..."
Without at least the basic math background (algebra and some calculus, with a smattering of automata theory) you get only "cut and paste" coding, with poor portability, no security, and excessively bloated results... if it works at all.
Programming requires a meticulous attention to detail - and most people don't have the discipline to do that. It is what you learn from mathematics that makes a good programmer.
You're both wrong. I started writing software before I knew what multiplication meant. Computer science, with the sole exception of the statistics-heavy research that you do at grad school level, doesn't require even the most basic math skills. They're completely and totally orthogonal. The fact that the computer is doing lots of math under the hood doesn't mean the programmer needs to know or care. In fact, the fallacious belief that CS uses lots of math and thus must be hard is the primary reason that so few people take an interest in CS, even though far more people are capable of understanding CS than, for example, trig.
The reality is that writing software is nothing more than telling computers what to do, then figuring out why your instructions didn't have the desired effect. To write software, you have to be able to understand the syntax, and you have to be able to simultaneously look at small details (e.g. the code in a particular function) while putting them in the context of a larger whole (the program). You have to be able to understand how small changes in one place can have huge effects on the opposite side of the app by being able to visualize data flow from point A to point B. None of these things involve math; it's all spatial relationships and abstract thinking.
Incidentally, the student in your example is right. 99.999% of programmers won't ever need calculus. In seventeen years in the industry, I haven't used calculus even once. The highest math I've dealt with was a bit of matrix math and various transforms (e.g. DCT, FFT) between time domain and frequency domain. And even then, I can count the number of times that I did that on one hand. And not once did I ever have to actually implement the transform, because there are already implementations for such things that you can bring in as libraries. Most of the hard math is already done for you. This does, of course, mean that there must always be a few math nerds involved in writing computer software, because somebody has to create and maintain those libraries, but the vast majority of programmers just need to understand what it does at a very high level.
By contrast, every programmer needs to get good at architecting software properly. Of course, you can somewhat learn that as you go along, so long as you're exposed to good code and can use it as an example (or bad code, and can use it as a cautionary tale).
Now let me turn that around. Do you really want apps on your phone written by people who are used to writing software for the avionics systems on aircraft? Those folks churn out code at a rate that is orders of magnitude too slow. Different types of software require different types of programmers. There will always be a few people who need to do mission-critical, low-level coding. The rest of the software world can then import their framework and design apps to use it, and there's nothing wrong with that.
Check out my sci-fi/humor trilogy at PatriotsBooks.
Old army joke:
Soldier, tasked with peeling potatoes, "This is the army, they have hardware for billions, but we don't have a potato peeler?"
Sergeant: "Yes we do, you're our newest model"
In other words, yes, we do have experts for this sort of thing: YOU. That's what you're here for if you're a programmer. That's pretty much your reason to exist. Anyone and their dog can slap together some modules to "do something", but I sure as hell don't need a programmer for that. Any idiot that I hire for 10 bucks an hour can do that. I need a programmer to create those modules.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
Since when was syntax considered the hard part? Most people in introductory courses grasp it quickly, except for maybe a few tricky things like * in C being overloaded for pointers and multiplication. Otherwise, the logic has always been the hard part.
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
Actually, they did exist, from about 1955.
http://image1.masterfile.com/getImage/846-02796895em-1950s-1960s-UNIVAC-COMPUTER-ROOM-WITH-TWO-MEN-WORKING-AT-CONSOLE-AND.jpg
The man on the right is at a terminal.
At the time "terminal" meant keyboard and printer. Normally used for console commands - but had been used to setup job streams via command line, and COULD be used for programming, usually when dealing with secondary boot code. The console on the LEFT in the picture was used for initial boot.
Computer science, with the sole exception of the statistics-heavy research that you do at grad school level, doesn't require even the most basic math skills. They're completely and totally orthogonal. The fact that the computer is doing lots of math under the hood doesn't mean the programmer needs to know or care.
If I'm reading this correctly, you're saying that computer science and programming are the same thing, and that's very far from the truth.
We need more kids, women, whatever in STEM fields. But not in management. Why not? If anything, there clearly is a shortage of managers. It must be that way, considering the workload the average manager has compared to what these people are paid, the only logical conclusion in a capitalist world is that managers must be in VERY short supply to command such outrageous prices for the mediocre benefit.
Same, btw, for anyone in finance.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
Logic is always going to be the hard part. If you have an IQ of 135+, you should *consider* computer science (if you also enjoy it). If not, but you like computers, focus more on IT. Yes, you need to be a genius to do the hard stuff.
When talking about adults or teens, yes, the logic is the hard part and getting the syntax right won't be a barrier to anyone who's going to be able to get the logic right in the first place. This is why attempts to fix the language are misguided at best.
However, to give kids some exposure to programming and logical thought both, it's different.Removing the frustration of debugging stupid syntax errors is a good thing there. There's likely a better way than curly braces, semicolons, or indention (or words that do the same thing but take more letters) to get started with the whole idea. There have been some attempts at this in the past, using shapes with space for bits of text, but it hasn't really evolved much. Maybe it should.
Socialism: a lie told by totalitarians and believed by fools.
Creator of latest magic bullet writes article claiming his bullet will cure everything. Wow. I always knew Slashdot was mostly regurgitated press releases, but this is just plain advertisement.
But recently a friend of mine was taking a college basic math class and asked me a question about why something she was looking at was the way it was, and I looked at the problem and wrote a proof for her to demonstrate how a variable would change on a geometric plane. That despite having basically used no math for the last 3 decades. As a programmer I manipulate variables and symbols on a daily basis, and even when you don't think you're using a lot of math, you're still using a lot of math. Thing is, if we don't realize we're doing it, how is a CEO who doesn't really understand what we do going to? And those are the sorts of people who are dictating what's being taught at the coding schools.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
From the TFA: "Our efforts at Ready, a platform that enables kids to make games, apps, whatever they want, without knowing a computer language. So... learn to program computers without learning how to program computers. Yeah, let me know how that works out for you.
The quote at the end sounds like it comes from someone completely computer illiterate. Maybe /. could post some awesome stories from Justin Bieber's YouTube comments sections teaching us how to achieve a unified field theorem. That would be equally productive.
why is slashdot hosting this white hate? all the programmers are indian now anyway.
how does gravitational waves are detected? :/
I think I spotted the mistake in his reasoning: he wants to optimize tools for newbies instead for seasoned professionals.
The thing is, the best tool for learning quick and the best tool for general productivity may not be the same thing. A quicker ramp-up time does not necessarily mean a taller peak (when the worker is experienced).
It's economically logical to design the tools for the longest portion of a practitioner's career rather than for the shorter portion when they are starting out. You'll get more total productivity into the economy that way.
As an analogy, a 3-wheeled bicycle is far easier to learn to ride. However, it's not as efficient and nimble as a 2-wheeler. That's why kids are put through the rough and tumble of learning to ride a 2-wheeler: sacrifice now for benefits later. (Fortunately training wheels allow the bicycle to be kind of a hybrid for a while.)
As an educator, he seems to be over-focusing on the starting portion.
Table-ized A.I.
Suppose we took driving as an example, saying 'driving snobs who examine our driving students are not helping prepare them for the future, by insisting they know the basics of the highway code and car maintenance'. The result is a generation with terrible habits, like the difference between how people drive in the UK (which is bad enough) and how they drive in India. The latter with code would result in a mass proliferation of lines of code which simply do not f***ing work. It is bad enough at present with the proprietary priests in charge. Software needs to be simple, well designed, well thought through, reliable, and just f***ing work. If not, it is better not written. If that means fewer kids 'writing code' then that is not a bad thing, compared to millions of kids writing bad code, knowing no better, and being taught that those with high ideals of code which actually works properly are just 'backward luddites of an obsolete priesthood'.
John_Chalisque
The idea that the old style was bad because it required "deep math skills" is wrong headed. Computer science *requires* deep math skills; computer science is a branch of mathematics essentially. The writer wants us to focus on logic, but logic is mathematics!
Well, you can also say accounting is mathematics since it's a practical application of numbers but it's a very slim branch that doesn't have much overlap with math class. Most the software I've worked with didn't have all that much algorithmic complexity, they had a process complexity which was more like making sure all the money went into all the right accounts. From a mathematical point of view every result is valid, but in the real world only one is correct.
Most the fuck-ups I see are the result of poor process planning. For example code that tries to do things out of order and use a result that isn't ready yet, or ends up using the same temp area/table or fails to properly handle errors and such. The other part is simply sloppy handling of boundary conditions, ranges and enumerations, like using "less than" where you meant "less than and equal". Or that you have a list of cases, but no panic when it gets a value it didn't expect because somebody changed the logic. You had "Yes, no" and now it's "Yes, tentative, no" and the code suddenly does nothing or nonsense.
Yes, you do need to understand boolean logic, simple loops and a few other things but you often don't need the deep algebraic understanding, like you're not solving polynomials or dealing with complex numbers. Unfortunately visual programming sucks even worse at this than traditional programming, because all those corner cases with unavailable resources, bad input data and so on tend to clutter up the design something awful. Mostly you just program the good path and anything that strays crashes and burns.
Live today, because you never know what tomorrow brings
Correction: "3-wheeled bicycle" should be "tricycle".
Table-ized A.I.
Look at the biology this way..
Student: I don't need to learn boring biology because computers can do that for us. I'm a cool programmer dammit, not a biology nerd.
Teacher: Ok, write a program to locate gene sequences on DNA.
Student, one week later: This is too hard... Don't they have experts for this sort of thing?
Teacher: Never mind. Just give me the burger and small fries.
Some people encrypt by using rot-13 twice. I prefer the more secure method of using rot-1 a total of twenty six times.
Knowing math sure comes in handy when you want your video game to have things like physics or graphics or interaction.
First someone has to create this array of tools. The ePub 3 standard allows multimedia and interactive forms in digital print but that's not happening. Schools and universities want to go digital but class materials are still static print and videos of someone reading the lesson plan. Education is still one mass-produced product despite the ability to publish different lesson plans for different learning styles. A universal resource like Khan academy is a move in the correct direction but more must be done.
I'm still getting paid well to write code today. I realize that this may sound egoistical and boastful, but I have only met one guy in all those years who was as good as me..and on a good day, I could probably beat him
I encourage young people to learn programming. I hope we develop more powerful tools that allow us to more easily manage the complexity of software. I'm not happy that software talent is very, very rare
In order to move beyond the crappy, bug ridden state of the art, we need bold, creative new ideas (and no, I don't have them). What we don't need is another layer on the shit cake of one shitty framework on top of another
It's just a fact that I don't understand. Most people suck at writing software
Ah, another savior of the programming world telling us we are all doing it wrong and only their clicky graphic language is the right way to teach programming.
There is Alice, there is Scratch, Logo, Baltazar, Karel ... and countless more of these simple education-oriented toy languages. And they work and they did work - for teaching kids the very basics. Nothing wrong with that.
The problem is that:
a) kids quickly "grow out" of them - they want to do some real stuff like write "real" games, hack in Minecraft, make robots "do stuff", etc.
b) the step from a toy visual, "clicky" language to an abstract, text-based one is *STEEP*, even if the student understands the algorithmic logic of how the program needs to be put together already (and they are often still pretty shaky on that front at that point!). The abstract thinking needed to understand the syntax and the link between the syntax and the semantics of the code needs to be learned first.
Making that step is needed to be able to claim that we have taught the student to program, because 99.9% of real-word code is not created by mouse clicking. Unfortunately, these education-oriented tools do very little to make that step easier. Very often they actually do exactly the opposite, by hiding the commands and treating textual code as if it was an infectious disease to be confined to some isolated corner, being deemed "too complex", if they even allow the user to see it in the first place. That is a pedagogically counterproductive approach, IMO. A much better option is showing it side-by-side, so that the student can see and compare, building on what what they know already.
So selling this stuff as some sort of silver bullet solution is pretty much an indication that someone just has no idea of what it takes to actually teach programming.
In pre-Trump world I would have found this amusing, but now there is a strong aspect of troubling to it (not belonging wholly to the subject to be fair, as an artifact of our times). David Bennahum is at best in his mid-40s (from his LinkedIn page), and thus has NO FUCKING CLUE what coding was like in the 50s. People did not sit at their terminals and write COBOL programs. In the 50s we sat at our terminals and ground out punch cards (not in COBOL...that would have been way too easy - COBOL didn't even appear until 1959, and even for people with ridiculous amount of money, 1961-62 as a practical matter), which were then fed to the "minicomputer" (at best) by a legion of "priests" who were in control of the machine.
The "Priests" in this system were less than even the difference between car designers and auto mechanics - they didn't know how to write code or make the computer work, they were just the gatekeepers to the input to a SUPER VALUABLE system. They existed because the system was in fact unbelievably expensive, and was meted out to users according to the needs of the corporation (owner). Hard pressed, a good auto mechanic could almost certainly build a functional automobile - a "priest" could not build a computer, or even explain how it worked (nor should they - that was not a requirement of the job, nor should it have been).
I would believe that there are some strong feelings about CS teaching to our youth, and many of them are probably well founded. (I'm sure plenty are not, but this is how life works). However, the quoted piece is marketing schlock, and is clearly a way to push a product, not even an agenda (the agenda would advocate for many products, but clearly theirs is the only option here).
Comment removed based on user account deletion
You seem to think that computer science is the same as programming. In much the same way that people think that accounting is the same as mathematics.
Reminds me of that scene in Office Space. Change the wording a bit:
"Can't the customers just create a script too?"
"Well look, I already told you! I deal with the goddamn computer so the customers don't have to! I have programming skills! I am good at dealing with code! Can't you understand that? What the hell is wrong with you people?"
Unless you want to spend your life doing academic research, if you're learning CS, you're learning it with the intent to use it writing software. So in practical terms, yes, computer science and programming are basically the same thing the moment you step off that platform with your degree in hand.
With that said, computer science includes a number of related fields. Programming is just one aspect of CS as a whole. Many of the others fields use even less math, and a few of them use more. For example:
And so on.
Check out my sci-fi/humor trilogy at PatriotsBooks.
I'm not sure which part of that to comment on first—the tiny percentage of software engineers who write games or the ridiculous number of hours their employers tend to expect them to work—so instead I'll say, "Just keep telling yourself that when you reach thirty and realize that you hate your job."
Besides, even in game design, not everybody is designing the physics engine. You need other people to create models, design skins, design the overall game mechanics, write the in-game chat client, write level downloaders, etc.
Check out my sci-fi/humor trilogy at PatriotsBooks.
I don't get paid to write code, I get paid to create solutions. Writing code is a small part of what I do. If an AI can code for me, that would be great. I still have a job in telling the AI what to code.
First of all, we have to write the AI. And so far, we haven't even gotten close.
You *learned* the math though. That's part of what you get from a college education - you learn things that you don't necessarily use later in life, but the process of learning it has molded your brain. You learn how to learn, you learn to think abstractly, you can look at an equation and see that there are relationships going on even though you may not remember the details of it all.
So I have run across programmers who were clueless about floating point. They just didn't understand very basic concepts, like that just because the computer prints out 10 digits after the decimal point does not meant that the 10th decimal point has any sort of reasonable accuracy, or that 1/10 is not expressible exactly in binary, and as such they would make really bad errors and then get stuck wondering why their computer wasn't given them good answers. Or they'd use double instead of float to try and improve their accuracy rather than just fix their broken formula. Which indicates that they're treating the computer as a mystical black box in a way without knowing how things really work under the hood. But then, I've seen physicists get some basic math principles wrong because they were treating the computer as a black box.
How can a "Bachelor of Arts" 1990, Harvard University have experienced programming in COBAL, "At Terminals", in the 1950s?
No Way In Hell!
The thing calling itself "David S. Bennahum" is a fraud! And David S. Bennahum is a fraud!
CS is dozens of unrelated fields that each build specialized knowledge on top of computer programming. Accounting, by contrast, is basically just one huge body of knowledge built atop a tiny subset of mathematics. The two statements are not really equivalent.
Most of the CS disciplines do not require large amounts of mathematics unless you're doing research, and even then, most of the work is not the math. That's just the final data analysis step, and you can easily grab a math major to do that. Really, only a tiny fraction of the work even in the most research-heavy CS fields involves math, which means it is absolutely not necessary for everybody to be highly skilled in those areas. It doesn't hurt, mind you, but IMO, it usually isn't nearly as useful as having a better understanding of how the computer actually works.
Check out my sci-fi/humor trilogy at PatriotsBooks.
Isn't "because they feel that doing so will result in kids being exposed to programming in a manner different then how they were introduced to it" at all. The issue is that not everyone is cut out for high end intellectual work, 99% of the population are too stupid to teach and of the ~5-10% that are borderline it makes every competent programmer's life more difficult to have to work with them. At the same time the issue is compounded by everyone with wealth who is sick of employing people at high wages trying to drive down the cost of labor in IT through code.org/summer-of-code and similar bullshit attempts. You might be able to beat a monkey with a stick or bribe it with a banana until it makes it through the MBA course but you can't even teach programming in a formalized manner because it takes decades of sitting alone highly focused learning what to and not to do. The most you can do, using the term "most" very loosely is indoctrinate a simpleton into some common methodologies yielding an arrogant prick that is incompetent with just enough knowledge to be dangerous. If someone doesn't teach themselves how to program they will simply never learn to do so, inspiring them is one thing, trying to teach them is another.
You ask an accountant to balance your books, no problem. Ask the accountant to analyze the data coming back from the Mars probe and they're out of their depth.
Similarly, ask a "coder" to modify a web page and it's no big deal. Ask them to fix a bug in the Mars probe firmware and they're out of their depth.
It comes down to what you want to work on for the rest of your life; simplistic stuff that will be outsourced any day now, or really interesting stuff that stretches their skills?
Let's say it's an MRI machine. I wouldn't expect the programmers on it to necessarily understand the physics or the number crunching of a mass of analog signals into a picture. But I would absolutely expect those programmers to understand operating system internals, how to at least read and follow a device driver, what all the data paths and high level control in the system are, and so forth. And certainly the junior programmer should be able to attend a meeting with the scientists and not look like a fool (my god, at least *pretend* to be smart).
Syntax is easy to learn. Learning organizational skills and logical thinking is more valuable. If you can't learn to structure your thoughts, you will be terrible at programming, higher math, and more generally, living in a complex world.
Sure I'm white and I code. And I know how. And I did a crapload of math (actually in Electronics Engineering first, then in Computer Science). And logic is embedded in both. And you can't just 'fancy pictures' your way out of it. If you want to do it right, you have to do it right. Getting someone who majored in frat-boy and liquor (or worse history and languages), won't give you the necessary skill set. To get the skill set, you need to learn the skill set. Sure you can make it pretty to get more people started, but at some point you gotta do the work. Oh and thanks for bashing those who did the work, asshole. You can't 'just shortcut' the work. To learn it you need to learn it. Being able to do it means doing it. The logic behind logic gates is the logic in semiconductors, is the logic that you code, is logic that you *can* get from a philosophy class. Yes, philosophy. But you need to do the hard work there too. And when many PhD's write logical constructions on the board, many don't get it. And there is a lot of and/or/not logic in there too. And combinational logic. And predicate calculus, and tupple relational calculus. Its used for databases and artificial intelligence and logic gates. And you can break it down with karnaugh maps. And usually you need to learn that, not just 'guess'. And there are simpletons who haven't done the work, who suggest that you don't need to do the work. And you can use simple 'guess' to solve really simple problems, but you can't do anything more than simple. And its all math. And simple doesn't scale. And people who get others excited and 'team build' and rah-rah are useful for brainwashing the great unwashed, but it doesn't actually get the job done. Computers understand logic. And garbage-in, garbage-out still applies, no matter how you spin it. You won't bullshit a computer.
...but those that don't share your opinions/beliefs, they should be modded down -- their thoughts shouldn't be heard at all, am I right?
Understanding the difference between finding duplicate records by walking through a million record database and comparing each record against all other records, and doing a quicksort and just looking for duplicates as you step through the list in order, is real math. It ain't calculus, but if you don't understand the deep math behind efficient algorithms, you can't be a great programmer.
Instead of a superficial 'coding for the masses' course, what I want to see is science appreciation enrichment blended into history, English and civics. Teach kids how science works and how its applications can be used. Let's raise a generation of young people who, for a change, appreciate science. Out of that population, the coders will naturally emerge. More importantly, we will have a voting population that makes better political choices about technical issues.
The calculus thing is freshman level intro programming, from chapter one of a calculus book. Approximation using a sequence of trapezoids. Easy peasy.
No, people who disagree with me should get modded up when they actually articulate the basis for their viewpoints in a coherent manner, respect the validity of other rational opinions, and treat their opponents with civility, because that's what makes Slashdot worth reading. And really, that's just common human decency for anyone with an active mind. I'm not a hypocrite like the person you're describing — why is that the first place your mind went?
most people can learn the syntax, even non technical people. it's the abstraction and logic that most people have a tough time grasping. Humans are generally terrible at logic. I've yet to see any tool that makes formal logic or clean logic easy for programmers. The argument is based on false assumptions.
Scratch largely removes the barrier of remembering syntax and dealing with syntax errors. This gets people who might have otherwise been put off over a significant hump.
However, there are two other barriers to becoming an effective programmer that Scratch doesn't help with at all.
Scratch doesn't help one iota with any of the above.
Any sufficiently advanced technology is indistinguishable from a rigged demo
--Andy Finkel (J. Klass?)
Also, it's pretty rich that you fault me for saying the OP should be modded down, but say nothing about his wanting to "physically wound" people who dare to disagree with his politics.
Lmftfy. Not they they will be introduced "differently", kids will be introduced worsly. I am self taught, not the best but still in the range of wanting to code. Kids who don't want to code is worse for education.
Rofl database involves math, networking involves math, computer gfx IS THE MATH. ...... dude are you working alone or some 2 person "company"....
What you are not realizing, is the analytical skils gained by learning the higher level math, which is the important part.
Calculus is important, but not because most people are going to have to calculate a bunch of integrals, but learning calculus trains your mind and teaches you to think analytically. The same is true for statistics and other higher level maths.
People that have never learned those skills often don't realize what is missing from their mental toolboxes, and many problems will be simply impossible to someone without having been trained in those areas, regardless how much time they spend on it.
Which has nothing to do with building blocks and IDEs either. Understanding cache coherence and content associative memories and bit operations is beyond most Java programmers on the market already.
So a man who directly benefits from wide-spread adoption of non-traditional methods of learning to program wrote an article about how adherents to traditional methods of learning to program are just mad that kids don't have to suffer like they did? Sounds perfectly unbiased. When can we expect Quartz to publish an article from Pepsi about the benefits of an all-soft drink diet for children, and how existing "Old White Male" nutritionists are just mad at the idea because, as kids, they never got to consume a daysworth of calories in such a delicious, refreshing manner?
My favorite part is where it's implied that the solution to the problem isn't to hire competent people, it's to simply dumb down the tools to a point where literally anyone can use them out of the box - "Rather than fit the person to the tool, let's fit the tool to the person" might work well with toys, but not with something that's designed to teach.
Those evil white people... are the problem in society.
For example I know evil person named Jared Van Leeuwen with three year old son named Cadden ...
They are white as cracker.
You know the real problem is with them? They are Mormon and they hate all people not white... thinking only the white are special select few to go to heaven.
I don't have to deal with them anymore I live in Monroe Washington now.
The guy's a shill. We have more tools than in the 60s, but fundamentally, CS is about applying epistemology and maths to solve real-world problems that are complex, involve complex networks of meaning, and do not reduce to simple block diagrams.
That is why textual representations win.
It's taken until now for basic ideas like virtualisation to start getting where they should have been, largely due to a combination of the UNIX way and uber cheap hardware. It should have been even simpler, but "people" (and auto tools) get in the way with a corruption of the idea of "simple" into "can hack some shit in that just about works, sometimes, without bothering with learning stuff and doing it properly".
Microsoft aren't building Azure on Bob + Visual Basic.
Let me rephrase that. Probably 99% of people doing work in those fields do not have to use math directly. You can do some amazing 3D modeling and rendering without fully understanding how the computer does interpolation of spline models under the hood. You can compute netmasks using a JavaScript calculator. You'll never have to do network path optimization or other such math unless you're writing kernel code or designing some replacement for TCP/IP, which is maybe 1/1000th of one percent of networking people. And so on.
Check out my sci-fi/humor trilogy at PatriotsBooks.
That makes me sad.... Every programmer really ought to at least have a high-level understanding of those subjects. They probably won't use it much, but their eyes shouldn't glaze over. :-) That doesn't mean they really need to be able to be able to design caching hardware that minimizes synchronization issues or know how to design caching algorithms to improve the cache hit rate, but they need to recognize the sorts of programming designs that can lead to poor cache performance, like iterating an array in the wrong major order for their particular language....
Check out my sci-fi/humor trilogy at PatriotsBooks.
You can strengthen your muscles with steroids. That doesn't mean that body building requires steroids.
The fact that math can strengthen your brain does not make it a fundamental requirement for computer science. It is just one of a nearly infinite number of possible paths to such brain development. Besides, by the time most people take calculus, those parts of their brains are mostly formed....
Check out my sci-fi/humor trilogy at PatriotsBooks.
this revolutionary idea should be applied everywhere. who needs their doctors to be educated in fancy universities and snobbish hospitals? all a surgeon really needs is a good knife and a superficial understanding of what they're doing, anyway.
what could possibly go wrong?
Either you use math or you write slow and crappy code. The calculations are simple. The hard part is figuring out the correct questions. How many request per second I need to process? If one item in database takes 100 bytes how big drive do I need for 10 million records? Etc. Very simple to calculate but quite often the questions are not even asked.
Who still writes Post Script code or HTML? Software coding is not the future.
On the one side we have those that understand computer science, that mathematics and computing are inexorably linked, probably are responsible for low level infrastructure and decry the idiots around them writing poor code.
On the other we have the scripters and "monkeys" who are about to be replaced by robots. Good riddance, your half arsed code and ability to pass yourself off as "someone who can program" has set the state of the art back centuries.
"is nothing more than telling computers what to do, then figuring out why your instructions didn't have the desired effect..."
Which happens to be called a "mathematical proof".
See - MATH.
You just didn't know you were doing it. It really does help when you know the math behind it - it tends to make "telling the computers what to do" MUCH easier. It also makes it easier to show what the "desired effect" is.
Corporation's are moving as much coding as possible to offshore tech centers. They are filling/replacing US coders with H1B visa folks. What's the point of spending $120k on an education when you are competing against engineers making 1/3. There seems to be significant collusion between government, education and corporations to create the allusion that we need more coders. The realality is that many coders are let go every day and salaries are going down. There is no future in coding!
And that math and arithmetic are the same thing, which is just as wrong.
-Hello computer!
-Just use the keyboard
Honestly, I don't believe schools in general are doing that good of a job at teaching the children the basic stuff they need to learn more... we are talking
history
literacy (reading and writing)
maths ('rithmatic)
Concentrate on THOSE in 1-8 grades, by that time those with a penchant for code will sort themselves out. Offering intro courses at that level (grades 9-12) would be appropriate for those who want them (elective credits).
White men ...
White men
White men
White men
White men
Why does it matter?
Fuck off with this bullshit
Having more bad coders with no proper understanding of computers is just what we need.
it's the logic, stupid
now, unfortunately it takes logic to get at that conclusion in the first place which is precisely the reason why any real programmer snorts at the concept and everybody else is dreaming on.
(that's also why none of the visual programming fads ever caught on, they don't allow expression of logic in the way a textual code does, and for the ones they do they are simply the most unproductive way to use).
Hey, lets start trashing other careers by giving them a 6 week course before a large paycheck.
Plumbers
Attorneys
Accountants
Electricians...
Why is it software engineering is the one field people say is over paid, requires next to no training or experience. If you're an SE, you should stand up to these insults as well.
... it's Math education that needs to get better!
This seems to be a good starting point :
http://betterexplained.com/
(Something similar to his "intuitive" explanation of the exponential function and of imaginary numbers should be taught in all schools!)
But then, we have to ask ourselves, how can a teacher properly teach (the most important aspect of which is to transmit the passion for learning) a class of 30+ children (or worse, teenagers)?
that uses everyday spoken language, we'll discover that programmers can't speak everyday language."
The corollary of that is when "software itself is transformed, from one that requires a mastery of syntax -- the precise stringing of sentences needed to command a computer -- to the mastery of logic" we'll discover that the programmers aren't logical.
Math is used everywhere. Networking summarization across 70 sites cross correlated with attacks, and limited to particular lists, and threats.
That's not done with a library. Programming is not Computer Science. It is but only a part, and for those who would argue, I would ask that you set your hubris and bias aside, and then answer.
and it is called coding by cut & paste via Stack Overflow. Its how most of these people who don't actually want to be taught coding in school get through it.
In all seriousness, teaching everyone to garden isn't the answer to food production. You start with those who have a passion and talent for it and nurture that.
I'll be the stupid one. I've worked projects that required me to sit staring at squiggly lines captured by using analog satellite technology which after 3 months yielded about 100 lines of code based on lookup tables that required tens of thousands of lines of MatLab code to produce.
I am currently working mostly with "Orchestrators" which are kinda like programming languages oriented towards automation of data centers.
I also wrote a platform independent GUI toolkit in use by over a billion devices every day even ten years later.
All of this is programming. The question is, when is it no longer programming?
Would us in an orchestrator which is mostly drag and drop be considered programming?
What if it's a programmer using the orchestrator? Would we call him/her a programmer for using a GUI to code? Would we downgrade his/her status to being a scripter or user if we don't consider and orchestrator as programming?
Can we say that unless you've memorized Knuth's TAOCP, you're just a hacker, not a programmer no matter what language?
I would say that we could benefit from new terminology. Teaching kids "Automation" might be more accurate than teaching kids "Programming".
I believe in my experience that unless you are well versed or better yet, educated (self education counts) in data structures and design patterns, you might barely consider yourself a programmer, but you're certainly not the same as a person who knows the appropriate time and reason and methods of using different collection types or managing data models.
I have no interest in playing such semantics. I never make use of any programmer without such fundamental knowledge (easily testable) or proof of their ability to learn it (again, testable). I also prefer programmers to have a strong history in math. They may not need it to apply it for the job, but when you start thinking "how did the code end up with a 40mb call stack), it's because the original programmer simply went through the motions without actually thinking about how many cycles it would consume.
The idea that white guys can even get a job in this space is hilarious, and that they dominate is just plain delusional.
I've never heard the term "network summarization", so I assume you mean "route summarization". Unless I'm misunderstanding you, that's IT stuff, which is usually considered part of CIS, not CS. But even if we broaden the definition of CS to include CIS, the math that you're talking about is trivial, and there are almost certainly tools that will do most of the work for you, which means that the limit of the math understanding required should be looking at a pile of numbers and saying, "Hey, those look kind of similar". If that isn't the case, don't worry, it will be true soon enough. There's no reason for IT people to do such work by hand. After all, computers are really good at simple binary math....
I'm not arguing that programming is all of CS. I'm arguing that fundamentally, the purpose of CS is to make you a better programmer, and that unless you plan to work in academia for the rest of your life, anything that doesn't do so should be considered optional, for your enjoyment, rather than a core requirement. And I'm arguing that math falls into that category of things that are only critical to a tiny fraction of programmers, which means it should be purely elective, and taken by people who enjoy doing math, rather than being seen as some critical foundation that every programmer must have.
Check out my sci-fi/humor trilogy at PatriotsBooks.
I have, unfortunately, worked with several "programmers" who "took a course" or "read a booK" about programming and thereby became "professional programmers". Sadly, the code they produced was appalling (okay, I need a stronger word but I'm at a loss). Churning out lots of "programmers" with little or no understanding of programming will only introduce a new era of crappy software. Would new tools and languages help? Probably. But at the end of the day, it comes down to ALL of the people in the process being competent and working hard to do the job right.
linquendum tondere
First of all, Computer Science is really Applied Discrete Mathematics; that's a different branch of mathematics than the stuff Calculus and the like hail from. It's misleading to say a CS major never uses their math background, because the logic, the combinatorics, etc. are the foundation of a traditional programming background.
I've been working 17 years, nearly all of it as an engineer in an R&D setting. It's true, I don't take integrals every day, but it's wrong to think that I don't make use of my calculus background every day. For starters, I doubt you can really grasp Big O notation without some time spent graphing equations, and understanding Big O is key for anyone implementing anything that's iterative. That's pretty direct - everyone's seen someone implement something the dumb way, and have it take all night, or never complete.
Moreover, other engineering disciplines, and many other professional occupations (financial, economics, etc.) use math up to and including calculus, at least at the technical level. When a programmer is working with those disciplines, having an understanding of the mathematics they use is essential to actually doing anything for them. Even when I was in school, it was a common saying that over 80% of professional occupations require calculus, at least at the business level.
If you want to eliminate 'math' from the 'programming' curriculum, you really should advocate removing it from all of the other disciplines that also have to have at least a cursory knowledge of math. Or you just have to realize that two years of Calculus isn't really all that much to ask. The kind of math you're talking about was invented over 400 years ago. If you think of what mankind has accomplished in the last 400 years, you might want to reevaluate how elitist this level of math really is.
It's true, a car mechanic doesn't need to know any calculus to do their job; but the mechanical engineer designing your car's brakes surely does. They're both 'car people', but in different ways. The mechanic is ultimately a technician, while the engineer is an engineer. Technicians by definition, solve problems that are already well understood. Engineers apply science to solve problems that are not understood, or not understood very well. To do that, you need a larger toolkit. There are always people working in the well-understood area of things, which at some point is always the relatively large area of things.
The well-understood areas in the car industry, in the building industry, in the programming industry, in the financial industry, etc., are no less important than the less-travelled ground, but it's wrong to rebase a curriculum on what they alone need. In a way, this isn't about math, but about expediency - because the people doing the well-understood stuff are more often than not, the people who trained for less travelled ground, but didn't like it, never found a job that used it, etc. It's true, that does happen; but it's also true that those people are trained to create their own opportunities. This desire to rebase the curriculum is couched in the language of giving greater equality and freedom, but it just seems designed to pump out an army of lesser trained people who will work for the CEO for less.
It's true, math is hard, but so is solving problems. Math isn't punishment, it just requires more discipline than going out and having fun. I wasn't the greatest at math, but I stuck it out, because I wanted to learn about what computers really are. If I can do it, anyone can, I assure you.
You missed the point. The parent doesn't say that calculus trains your mind. It says that calculus trains the quality of your mind that most people otherwise would never have (and in fact never do - because hey, who needs math in school, see excellent comment about stupid people up the thread.) If you stop replying to all the comments like some kind of a 5yo know-it-all and just do some retrospection, you probably would understand yourself. You sound like a smart person, just talk too much.
Computer Science is an academic disciplines. Programming is a task that uses techniques and methodologies devised by computer scientists. Because most developers learned both at the same time, I can see how they would be confused.
Yes, a computer scientist must code in order to produce proofs of concepts, but the code most computer scientists write is crap compared to what a good professional developer writes. I had to explain unit testing to my professors. They don't care about that stuff. They care about the algorithms. The logic.
So, in a way, both this author and the Standard Slashdotter have it wrong. In order to produce most of the software the world is gonna need: Yes, the kids need to learn logic, but they mostly just need to learn the mechanics of implementing that logic in whatever "language" or system they have available. Only a few of them will go on to become actual Computer Scientists. And that's OK.
Awwww, did someone get replaced by an Indian? And did he have to train him? Bless your wittle heart!
That's why you don't aim your sights for the entry level job, but aim beyond that. Because there will always be someone better and cheaper for you for the low level jobs. And don't go after the common jobs that are glutted with an oversupply of workers.
Sometimes this is the fault of parents. Parents are full of anxiety that their children might not get a job and so they'll look for the career choices that seem very popular and point their kids in that direction. That's why this huge emphasis on coding, it's been around for at least 30 years, and examples include the infamous Apple II commercial which played on parental fear.
They will just teach a mockery of programming, that will scare away some talented kids (who will get the wrong picture about "programming"), at a critical point in their development, and wear down everyone else with the useless bullshit like they do already.
As a result there will be fewer programmers actually. (Maybe that's the plan. Programming is powerful knowledge...)
There seems to be a push in this direction recently, this article is just one of them.
The public school system is incapable of teaching real empowering knowledge, because it is built on a corrupt braindead political system.
(Worrying about the right issues.)
your own experience of both math and computer science is too limited for you to make the pronouncements you've made. That you got upvoted simply indicates that there are more like you here, not that you are making a useful point. And I checked out your publishing site: you also don't know what the word "brandish" means, so also please stop considering yourself to be well rounded.
If you do not know what is Human, then you are not. Do not come and confuse figure with function because the morphism is not one to one. We can make software and hardware to make cats and dogs and rats program, but they will still lack the logic to do anything else and be our dogs, cats and rats with our software. They are fretting a lot IN TRUTH about this because programming is painting the dividing line just like reading and writing (natural language) did, but do not want to recognize the fact we can make a chimpanzee communicate with symbols and hands, but we cannot pay one to write... a children s party invitation for the guys? For instance. ANYONE can write a children s party invitation once passed some age but not chimpanzees unless you use the beast as a supervised tool! Then it is YOU who is writing the invitation WITH something, not something doing the JOB. So if little children and schoolards do NOT learn computing and programming... there IS a dividing LINE and they cannot cross it, drop them! Problem with this discussion is that regarding Life animals there can always be an exception and we can wrongly badly inferr from it or false inference induction. Fact is using software IS a form of programming already, so what we need is SUPERUSERS, and to get those some fundamentals of how the thing called software is used have to be transmitted, preferably over a practice. But the danger is that we WILL find family people who simply CANNOT LEARN IT NOR UNDERSTAND IT. We ll have to drop them just like we already (?) dropped the families who consistently showed they cannot learn reading and writing, or more clearly the families who showed they could not learn to SPEAK! Like Chimpanzees and Babboons. Expect many dead people over this. One A-FRI-CAN just passed behind me with the derisive remark: I cannot be in this (wifi spot) because I did not go to university, ha ha! I replied: do you want me to show you University in the face? (THIS cannot be done without universities having been invented and populated). He did not stay so I cannot see if this flashlight can actually break his skull or simply drive him away with LIGHT just like I do when any African INSISTS in hovering over my laptop looking for a chance to SNATCH.
Do you really want to fly on a plane programmed by someone who skipped college because it was too time consuming?
I don't really care. Can his code be proven to be algorithmically complete? Can he convince people who did sit through college that his design is the best. Is this even a person? I hear that AI's are finally hitting their stride.
The issues people really need to be looking at, and not blind adherence to the way a simpleton would think things get done.
math is not hard . is harder reading opinions from people with two digits of IQ
priesthood is a little hipper -- lab coats have long given way to a countercultural
I think you just summed up west coast tech "bro" culture.
Are you doing this on purpose?
At the bottom of the
With no math knowledge your available problem scope is tiny.
With little math knowledge your available problem scope is basically 'computer bean counting'.
If you ever want to use a float after you finish school. Study your math, not so much the CS discrete math; Calcuseless, diffeq, controls. (I'll go ahead and say it, switch to EE if you can hack it.)
CS isn't coding, But 'CS people' that don't (and especially can't) code are useless. If you can't already program in two or more languages when you are finishing HS and considering a college major, drop CS from your list, do yourself a favor. The girls are rare and almost as odd as your male classmates.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
There are two kinds of people in the world. Those that have studied math until it gets hard for them and those that haven't.
Anybody that tells you 'math is not hard' is really telling you 'I'm lazy and unmotivated'.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
You see, if you sit down at a computer, you often need a quiet place and sufficiently dark to be able to see the screen. You're not likely to be someone who talks a lot, because if you were, you wouldn't remain at the computer for very long.
The field filters itself by the nature of the work.
What the kind of problems do you consider to not be "computer bean counting"? I've done device drivers, server-side code, end-user native apps (iOS and OS X), client-side browser code (JavaScript), data format conversion tools (custom parsers, reverse engineering of binary file formats), and probably half a dozen other things that I'm forgetting right now. I can count the number of times when I needed to perform math beyond the limits of Google calculator on one hand. Occasionally, I've had the computer do math for me, but that doesn't require you to be good at actually doing math.
I've made zero use of calculus. I think I've used statistics two or three times. And I don't think I've ever used graph theory outside the context of interview questions (and minimally, even there). And I was always good at that stuff; it isn't because I've avoided jobs where I need math, but rather because it just isn't necessary for the overwhelming majority of programming jobs.
More to the point, I've known plenty of people who were not great at math who found programming to be straightforward. And I've known plenty of people who are good at math who struggle with programming. There's just not a strong correlation there, and I say this as someone who has taught CS courses. Other educators have come to similar conclusions, so I'm not alone in that assertion. Maybe at the grad school level, in some schools, there might be a correlation, but for an undergrad CS program, as far as I can tell, the only situation in which success in CS courses is correlated with math success is when the program requires you to take a bunch of math classes; that's quite literally begging the question....
Knowing about the hardware does open up a number of opportunities. I'm not sure I would necessarily agree that people should do so merely because they're able to do so, though. That's like people taking CS because they're good at programming, rather than because they enjoy it. It leads to a lot of people working in jobs that they hate just because those jobs pay the bills.
Personally, I favor a very different approach; get your undergrad degree at a low-cost uni that teaches the nuts and bolts of programming and basic CS. You'll get about the same undergrad education at a school that costs $8k a year or $20k+, so save your money for grad school when you know enough to absorb more advanced stuff. Then get your Master's at a research uni and take classes in as many different areas as you can—everything you think you might be interested in, from CE and EE courses to 3D animation to data compression to storage systems to operating systems.
At all levels, focus on breadth. There's plenty of time to gain depth when you're actually working in the field in a particular area. And of course, if you get to your second year in college and decide that you're not enjoying writing code, find another degree program. :-)
Check out my sci-fi/humor trilogy at PatriotsBooks.
You're both wrong. I started writing software before I knew what multiplication meant. Computer science, with the sole exception of the statistics-heavy research that you do at grad school level, doesn't require even the most basic math skills.
Any definitions in computer science are similar to ones in mathematics. If one understands how things are defined in computer science, one will understand how abstract mathematical definitions works and how one can work with them. How logic works. This is (extremely roughly) 'core' of mathematics along with the abstract thinking it prepares for. I can't really define what 'mathematics' means (on level required by itself) but let's just say first time I encountered mathematics was in university (anything prior to that was closer to 'calculus'). I could give long rant about what's wrong with math teaching but let's not do it here...
Now to coding which is separate issue: pedagogically playing is very important part of learning procedure especially for kids (analogue for 'playing' to adult engineers would be close to 'testing'). When they're in safe environment, it doesn't really matter that they don't understand what they are doing - they can see what their scripts/code/whatever they produce by trial and error and repeating that is expected to introduce chance of gaining understanding on how things work. Playing is no only OK but recommended as well!
By contrast, every programmer needs to get good at architecting software properly. Of course, you can somewhat learn that as you go along, so long as you're exposed to good code and can use it as an example (or bad code, and can use it as a cautionary tale).
I'd say this is roughly true. Now, how one can architect solutions made of pieces they don't really understand? Or, how one can distinguish 'bad code' from 'good code' without deeper knowledge on how things work? Using purely trial-and-error one sees only the outcome but not necessarily all related factors (such as performance/efficiency) and this might be non-trivial for some. Of course, intuition helps a lot and in right environment (right examples, competent advice from seniors) it is likely to transfer into competence. But there's no guarantee on this and results vary individually.
Like mentioned above, playing is good but the problem arises once people with playing-competences enter industry as developers without right guidance (ie non-technical employer). Dubious software is very big liability and causes a lot of costs. Typically not hiring anyone is more profitable than hiring not-that-competent "developer". It's not that uncommon that less competent developer was hired to produce a "solution" and later significantly more time from more competent developers has to be spent to deal with the SW and the fact that you can't just rewrite it because it's in production. Hell, I'd even go further by claiming that over 99% of security vulnerabilities are caused by someone not bothering (or lacking knowledge how) to do their job right.
While during most of day-to-day work one can get around with using implementations made by someone else, it doesn't mean one wouldn't need to have at least rough understanding how they work (read: how they should be expected to work and how to test that they indeed do). When one wants to hire a developer for their project, one needs to filter a lot of "IT monkeys" (roughly someone at their trial-and-error stage without deeper understanding but who has managed to do things with few languages/environments that they don't really fully understand) from the applicants to avoid hiring someone lacking deeper understanding that is required to write good code. And this costs time that could be spent otherwise. If education institution is "snob" enough to require certain demonstrated understanding before granting a degree, having such degree helps in this process.