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.
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.
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.
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."
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!
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/
...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.
Just tell him to use his head to pound nails instead. I doubt he'll even feel it.
Table-ized A.I.
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"?
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.
Yay for cargo cult programming! To me, it's total job security for the foreseeable future.
Then again, I'm a security consultant, specializing in penetration testing and code reviews...
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
One of the reasons your test scores are in the basement IS exactly that people don't want to learn math.
How you want to teach computer science without math is beyond me.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
Well, it makes sense when you take a look at his company and realize that he's selling self-swinging rubber mallets and tries hard to create a market for them.
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.
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?
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.
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.
No, the reason scores are so low is because of how much effort is put into taking the competitive element out of schooling. I still remember my HS teacher saying that the price that the Japanese paid for higher levels of education was that Japan had higher suicide rate among teens. Well, she was probably right. Suicide does follow stress when people snap. But it's not a reason to remove competition out of schooling (everyone's a winner and everyone gets at least a B crap). For one, kids are naturally competitive. If they don't compete academically, they channel it into competing athletically or in sexual conquests. Both are parts of life, but the only thing which makes it the central part of their lives is the absence of emphasis on academic competition. If getting good grades was actually difficult, kids would compete for them.
Any guest worker system is indistinguishable from indentured servitude.
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.
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).
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.
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?)
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?
And that math and arithmetic are the same thing, which is just as wrong.
-Hello computer!
-Just use the keyboard
Having more bad coders with no proper understanding of computers is just what we need.
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.
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
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.
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.
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.
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.
If getting good grades was actually getting them something they'd be far more motivated. As long as it does simply not matter whether you bring an A or a D home (with anything below being impossible anyway 'cause your school is scared they might lose funding if the grades slip and anyone flunks), why bother investing time and energy?
Kids understand the capitalist model inherently. If your "customer" is satisfied with a mediocre product, why bother investing more in its creation?
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
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'
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.