American Schools Teaching Kids To Code All Wrong (qz.com)
theodp writes: Over at Quartz, Globaloria CEO Idit Harel argues that American schools are teaching our kids how to code all wrong. She writes, "The light and fluffy version of computer science -- which is proliferating as a superficial response to the increased need for coders in the workplace -- is a phenomenon I refer to as 'pop computing.' While calling all policy makers and education leaders to consider 'computer science education for all' is a good thing, the coding culture promoted by Code.org and its library of movie-branded coding apps provide quick experiences of drag-and-drop code entertainment. This accessible attraction can be catchy, it may not lead to harder projects that deepen understanding." You mean the "first President to write a line of computer code" may not have progressed much beyond moving Disney Princess Elsa forward? Harel says there must be a distinction drawn between "coding tutorials" and learning "computer science." Building an app, for example, can't be done in a couple of hours, it "requires multi-dimensional learning contexts, pathways and projects." "Just as would-be musicians become proficient by listening, improvising and composing, and not just by playing other people's compositions, so would-be programmers become proficient by designing prototypes and models that work for solving real problems, doing critical thinking and analysis, and creative collaboration -- none of which can be accomplished in one hour of coding," she writes.
How about we leaving the teaching to the teachers and the armchair quarterbacks can go fuck themselves? I like that approach.
Programming is a multifaceted activity. Most of these teachers are probably not even qualified to teach programming and you end up getting this hard reliance on a textbook. Not knocking them or their abilities, but it's just the nature of what goes into good programming
No, there won't be "high paid computer science guys". The only way to get a high pay is to have anything to do with finance or management. Anyone who actually creates a product is paid pebbles, only pushing numbers counts!
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
"...would-be programmers become proficient by designing prototypes and models that work for solving real problems, doing critical thinking and analysis, and creative collaboration -- none of which can be accomplished in one hour of coding..."
That's why the same approach she criticizes, if applied music, produces students that can play a paticular piece or pieces of "hard" music very well, but cannot meaningfully compose or even read music.
When it comes to coding, I prefer being introduced to the basics, then letting the student discover on their own why things work the way they do. I learned this way using Visual Basic.
I now have coded several applications in VB for people who had no idea Excel for example, could be run fully fledged business applications beyond simply adding up numbers.
Of course, the advantages of using a language that non-programmers can "pick up in a weekend" are mostly lost because you'll be working with programmers who learned to program in a weekend.
Exhibit A: Python. Exhibit B: PHP.
You want to teach coding? How about do it holistically - teach CS, and use a language like Pascal and/or Basic to teach the CS. For teens, perhaps teach from SICP.
I'm a minority race. Save your vitriol for white people.
So they are using gui tools. Who cares? My first experience with programming was randomly modifying Oregon Trail and seeing what broke. It wasn't until I got a programming manual several years later that I discovered that chr(4) actually meant ascii character 4. I knew what it did by trial and error but had no idea what it meant. The point is they are teaching basic logic and problem solving skills. Not everyone is going to be a programmer but everyone can benefit from learning logic, problem solving skills, and collaboration.
They want cheap, easily replaced and just barely adequate coders.
Of course one computer science class is not sufficient to turn students into programmers. Their history class is also not going to make them into historians. After all, there is nobody forcing kids to search archives for original documents! By professional standards, everything taught in school is fluffy and watered down. Harel noticed that only now, and she's outraged?
My experience agrees with you. It's management that gets the pay, while the actual gruntwork of producing code gets squat.
Dammit you're doing this all wrong! Can't you program in a way that costs me less than minimum wage?
Nothing posted to
When I was in high school, (25+ years ago) we had computer programming classes. The languages they covered were BASIC, Pascal, and LOGO. Sure, you could drive a little turtle around on the screen and make pretty Spirograph pictures, but nobody used it to play chess or do their taxes. Of course, many of the students in that class went on to take university classes in computer science.
Lesson: Rudimentary programming classes are not the end-all, be-all of computing. It's just a stepping stone to let you know if you want to continue your education in that field.
It's called "hour of code" and the idea is to get kids interested in computer coding. Kids already have exposure to music, they can bang a drum, squawk a plastic recorder from the dollar store. They have exposure to sports, they can throw a ball around easily. They don't have exposure to coding in the same way. So give them an hour. It's not a PhD, but have you heard the noise those plastic instruments make?
No, there won't be "high paid computer science guys". The only way to get a high pay is to have anything to do with finance or management. Anyone who actually creates a product is paid pebbles, only pushing numbers counts!
Oh come on now .. you totally left out the big American dream of being a professional athlete! Where else can you be pain millions straight out of college solely based on your physical skills (and also winning the genetics lottery).
I am Slashdot. Are you Slashdot as well?
Learning multiplication tables doesn't teach kids how to solve the REAL problems they'll face in multivariable calculus. Kids don't learn REAL chemistry by following lab exercises in their science books.
Kids don't need to learn how to make apps in third grade any more than they need how to build graphene. But I would like to see them learning things such as conditional execution, recursion, and abstraction of problems. Unless you've programmed in your spare time, when you get to college, you are going into computer science completely blind. Having exposure to these concepts in a structured way at an early age allows you to make a better assessment of if that career will be good for you since you'll have said "I really enjoyed that class where I programmed Elsa to walk in a spiral using a for loop with an increasing counter, maybe there's something real I can do with that".
Maybe they won't be successful! That's OK! I wouldn't be successful in real life at all the things I did well in elementary school. The important thing is giving them a chance to learn skills that might be useful and determine what it is they enjoy at an intrinsic level in order to encourage them to study it in their spare time, in college, and in their careers.
Also, bullshit on that "musicians don't learn by playing other people's music". Yes they do.
Why is it that these tight corporate tie-ins are permitted for education? I certainly would hope that the schools wouldn't allow "Luke Skywalker and Belle teach American History", so why is the equivalent permitted for CS? Is it the fact that this is a "new" educational subject, where they're seizing the uncharted void of curriculum to get us warmed up to the idea?
If your theory is different from practice, then your theory is wrong.
Can we please stop confusing coding with computer science? While one must necessarily code in order to pursue computer science, one must not necessary be a computer scientist to code.
It's perfectly okay to write code that does what you want it to do. It may not be the most efficient, most optimized algorithm, but hardware resources like memory and CPU are basically free and infinite.
Teaching kids to code is not wrong. Expecting high school graduates to be computer scientists is.
At the very least, these programs could help highlight the children that have natural ability and/or interest early on. This way, once identified, they will have the opportunity to get the deeper education they need to go on and be successful in a CS related field.
I'm not sure who is to blame, but public schools (and most private) teach nearly every subject badly.
Math: obsess over memorization with vague threats of "you'll need this later in life"
Science: obsess over memorization with vague promises of it leading to better careers
English: obsess over sentence diagrams, stupid sentence diagrams
Literature: train the students to hate reading with many of the worst stories available, insist that they are all "classics" and that any cultured person likes them
History: demand memorization of a finite but excessive collection of date/name/event correlations with as little time as humanly possible spent explaining the significance of any of those events
Foreign language: how to ask for bathrooms and embassies, no attention to the cultures you can potentially experience with familiarity of the language (as an odd aside, I hate puns in english, but find them fascinating in languages I am much less-than-fluent in)
Gym: honestly, this one is usually fine unless the teacher is obsessed with a certain sport
Music, art, and shop varied heavily by the techniques of the day, which is probably why they are usually right after recess in the list of things for schools to drop in favor of hiring more non-teaching staff
As an aside about that, I've noticed that most of the people who claim the US isn't paying enough to schools are under the impression that somehow another $1,000 per student per year would reduce class sizes and improve the resources available to the teachers. The trend seems to be hiring more "administrative" staff whenever funding rises and cutting back on visible staff and resources whenever funding decreases.
We need more ways to get H1B'S in by saying us workers don't have the right skills.
As someone who got started on programming back in the early 90s with QBasic, then moved through a VB and Java phase until ending up at C/C++, it's fairly obvious what has happened over the years. Basically ongoing abstraction and proliferation of scripting languages is making people forget about actual programming.
Where programming involves the actual manipulation of hardware, drivers and bytes, scripting merely involves being able to use pre-existing APIs proficiently. See for example applications which use C++ at the core and use Lua for automating or customising certain tasks in a dynamic fashion.
Having used scripting languages like PHP, JavaScript (Vanilla mostly), Perl and Python for well over a decade, and most recently having taught young children to create simple games in Scratch, it's not hard to see what has changed: we stopped teaching how to program.
When even CS courses at school involve nothing more than being able to glue the right Java libraries together (hello Apache Commons and Spring!), and 'JavaScript development' is basically more of the same, it doesn't take a genius to see that they are no longer writing in system languages (BASIC, QBasic, C/C++, Pascal, etc.) like students of yesteryear.
Real computer science and programming involves understanding hardware, knowing how to get reasonable performance out of limited hardware, understanding that hardware is not perfect and how to compensate for this, as well as resource management.
Or more succinctly: programming is being able to write the runtime, scripting is being able to write scripts for said runtime.
Site & blog: http://www.mayaposch.com
https://blog.codinghorror.com/please-dont-learn-to-code/
http://techcrunch.com/2016/05/10/please-dont-learn-to-code/
OTHER classes, such as Science, History and English also teach "doing critical thinking and analysis, and creative collaboration"
because those skills are not unique to IT, every good job requires that sort of thinking.
Never answer an anonymous letter. - Yogi Berra
Start with something simpler. Like an old 8-bit computer, or a simulation like core-wars. Some system where *everything* about it is comprehensible with no hidden magic.
09F91102 no, 455FE104 nope, F190A1E8 uh-uh, 7A5F8A09 that's not it, C87294CE no. Ah! 452F6E403CDF10714E41DFAA257D313F.
So she's suggesting that a discipline that requires an (obsessive) focus on procedure, logic, math, and detail *might* not benefit from being addressed as the "flavor of the month" educational issue and magic-bulleted by an "hour of code" every week using what amounts to dumbed-down simplistic tools taught by general-ed instructors who aren't really familiar with what they're doing anyway?
Maybe we should just leave it as a profession to people that actually enjoy it and choose to do it, instead of trying to stampede kids (particularly ones with vaginas!) into it with t-shirts, media attention, and shiny prizes?
I'm going to go way out on a limb here and suggest that the kid attracted to a profession because there's balloons and cake at a few school events, is going to be pretty fucking disappointed when they realize that much of the job involves sitting for HOURS AND HOURS, alone, and thinking really hard about stuff.
-Styopa
Most of these teachers are probably not even qualified to teach programming and you end up getting this hard reliance on a textbook.
That's the kind of teacher that made it possible for me to learn how to perform a DDOS. It was highly motivating to see her wonder why her computer had severe network problems during class, while nobody else seemed to be affected. And when they upgraded her computer to a (omg) multimedia machine and I figured out how to eject her cdrom remotely, I was hooked. And those were dos and Netware years, mind you, none of this fancy linux thing.
I don't think I'd have become interested in computers if instead of her my teacher had been an elegant coder who really jnew the importance of design patterns and DRY and was talking about multifaceted this and polymorphism that.
So what I'm saying is, keep this kind of thing going on and let the horse figure out by himself if he wants to drink. If coding becomes a dull school subject it will attract the wrong crowd, and god knows we don't need any more dullards in this industry.
lucm, indeed.
This was my grade 10 computer science class in a nutshell although I don't blame the teacher; the curriculum was the issue.
Instead of learning how the computer actually works and how the different parts fit together, everyone one slapped with a bunch of disjointed terms to memorize without any context surrounding them. If only schools would drop this "one size fits all" approach and understand that there is more to learning than just "memorizing things". I did far better in the practical classes such as mathematics and the later computer science classes as they were purely programming.
Lastly, I am reminded of this:
https://pbs.twimg.com/media/Bh...
I don't think there's really a wrong way to show kids how to code. The only wrong way would be not to show anything. (Well, it might be a bit wrong to over-complicate things, since we don't want to make them uninterested or scare them away.)
:) I was already interested enough to care about it :)
:)
I know you're mostly not interested in some john doe's life story, nevertheless, I'll give you my example, since I also was taught coding before knowing anything about CS or higher level math.
The first ever line of code I wrote was about 25 years ago in 6th grade. There was a computer club or something at our school, after classes in the afternoon, where we - a group of ~6 - were shown/taught coding in some sort of Basic on some really junk machines. I started learning CS when I started high school (in a math+CS-specialized class - meaning we had extra classes of math, phys, CS, and extra coding labs) and I never felt it a problem that I only started to know things deeper at that time. On the contrary, when we started the more "boring" part
I know some people who started this way and turned out quite OK
Point is, start early, start at a level that makes kids interested, and continue to teach them deeper stuff according to their age, gathered knowledge, and of course, interest (if there's any, not everyone has to be a CS+coder guru).
However, after a while CS needs to kreep in, since even if most companies need "normal" coders more, my unsurprising experience is that more knowledge really produces better results.
I am putting myself to the fullest possible use, which is all I can think that any conscious entity can ever hope to do.
Let them code Perl and each time they make a mistake kit them on the head.
If you are about 'no kid left behind' hit ALL the kids on the head, except the kid that made the mistake. It works in the military, so why not in schools?
Don't fight for your country, if your country does not fight for you.
"Just as would-be musicians become proficient by listening, improvising and composing, and not just by playing other people's compositions."
That's exactly what introductory musicians DO in the current public school environment. They play other people's compositions. Only those with the means and time actually go further than that into writing their own music, and they do it at home or take additional class work outside of their normal curriculum.
You aren't a musician because of the High School curriculum, you aren't a mathematician, you aren't a political scientist because of your government class. I think the problem here is that people like this article writer are expecting HS graduates to be able to jump into a profession with no additional learning/training. That's not realistic, and it's not what a HS curriculum is designed to do.
The one "watered down" CS element that I would like to see taught in elementary schools is the art of drawing flow charts. Now, that's something that can be useful across the board, as a tool for thinking,
But, as for the rest of it-- let the teachers figure out how to best teach.
Let me preface this by saying that I taught 8th-10th grade programming for a couple years almost a decade ago. I was qualified to program, employed as a programmer, but not 'qualified' to teach on a full time bases. I was part of a program where they brought in real world people to teach a couple of skill classes for a semester. It was a nice 3-4 hour break in the middle of my day.
I believe programming and other skills should be taught to young adults. Every kid in the US education system should have access to programming classes if they are smart enough to take them. However, it should not be mandatory, nor should we force it on most students.
I just quickly glanced at the article and saw no mention of how old these kids are. Drag and drop programming is good for teaching logic skills to young kids. The same could be said with Chess, but drag and drop programming is a stepping stone into a career where as chess is not.
The problem with teaching young kids (elementary school) and most (50-75%) older kids (Middle/Highschool) programming is actually the same. Lack of reading and math skills. Programming is a job of reading. In my classes we used Small Basic, which has a Logo like object called Turtle. Each functions of Turtle is shown on the side of the IDE with 2-3 sentence descriptions on what does what. Plus this information is printed and taped to the desk.
If you lack a 5th grade reading level and can not understand that turnRight() turns the turtle 90 degrees to the right. Or that Speed is how fast the turtle goes and can be set between the values of 1 and 10. Where as 1 is the slowest and 10 is the fastest, here are examples: ... Then I'm sorry. You need to be in manual labor skill classes or have reading 6 class hours a day. Not programming.
Which leads me to the next issue. This one effects even the smart kids. It's how we teach math.
Leaving aside the kids who can't read, and the next level of kids who can't do algebra (which is pretty much a requirement for programming in a real language.) We have a major issue with how we teach 'smart' kids (by smart I mean B or better in algebra. The bar is set pretty low in education...) They learn to solve math problems. They're never taught how to create math problems to solve their problems. I've seen kids with A's in AP Calc get their minds blown by a simple loop which causes a Turtle to turn 1 degree every iteration... And don't get me started on writing a calculator or something.
I know this coming off as a bit of an egotistical rant. So I'll cut to the point. 1) Teaching very young kids logic through drag and drop programming is not a bad thing. 2) Teaching every older kid programming is a bad thing. 3) With limited pool of intellectual resources to teach programming, only a small subset of qualified students should be allowed to learn programming at every school. 4) Many more students lacking basic reading and math skills. Easily 50% range in the school I was teaching. Instead of trying to teach them programming, lets teach them to read. 5) Some sort of basic formula generation chapter is needed in advance algebra classes instead of purely focusing on 'solving' math problems. This would probably be a better introduction to compsci instead of making a Turtle spin around in circles.
running else into walls is really fun and you can get kids to spend hours learning stuff with a pay off like that. It's about setting the hook. Later on programming becomes fun for other reasons like the feeling of a flow state or the accomplishment of a product or the edorphin release of grocking a new algorithm that does something you thought was impossible. But you can't get to those in one step. We let kids read captain underpants before we expect them to find reading Arthur C Clark any fun. It's about progression and self motivation at an appropriate level. Not all kids will be coders but letting the ones that are find out they are is fine.
Some drink at the fountain of knowledge. Others just gargle.
This is Wimp Lo, we trained him wrong.....as a joke.
Wanna buy a shirt?
https://www.redbubble.com/people/stealthfinger/shop?asc=u
There ARE musicians that are considered proficient who in fact did nothing but learn other people's music. Pavarotti did nothing but learn other people's music and in fact did it by ear because apparently he never learned to ear music (at least not in the beginning of his career). The great pianist Glen Gould never really became proficient in composition (he had a SINGLE work, which wasn't really a great accomplishment shortly before he died). Now are there rounded musicians, certainly. Leonard Bernstein would be a great example. Point is, the analogy given to us is flawed. Also, in programming, although we have many generically labelled "Developers" there are low level coders (generally juniors starting out who just do simple assigned tasks), UI Designers, Software Architects, Database Modellers, Data Architects, DBA's, Network Administrators, and many in between. Most start-ups have general "Developers" who are basically expected to be "Jack-of-all-trades" with the experience and rounded exposure to handle "whatever is needed at the time", but few people with less than 5 years of experience can handle that well so generally these are intermediate-senior level experienced people. While I agree to do software (or music) professionals SHOULD have a wide rounded set of skills to see the big picture and accomplish more, not every successful IT person is well rounded and these will be limited to small scope roles (although the real world doesn't always meet this idea). So I wouldn't say kids in school taught the bare basics of coding aren't taught to code "wrong" as much as in a way that will limit their advancement.
"Imagination is more important than knowledge" - Einstein
We are doing a disservice to kids by assuming that they can't grasp Differential Equations, Calculus, and Linear and Nonlinear Optimization. By limiting them, we undermine their capabilities and stifle their creative and inventive potential.
Knowledge = Power
P= W/t
t=Money
Money = Work/Knowledge so the less you know the more you make
Stop. You'll upset all the IT workers.
No, there won't be "high paid computer science guys". The only way to get a high pay is to have anything to do with finance or management. Anyone who actually creates a product is paid pebbles, only pushing numbers counts!
Oh come on now .. you totally left out the big American dream of being a professional athlete! Where else can you be pain millions straight out of college solely based on your physical skills (and also winning the genetics lottery).
The physical skills of running and catching really are worth a lot.
Wanna buy a shirt?
https://www.redbubble.com/people/stealthfinger/shop?asc=u
The current "Learn to Code" movement is not (or at the very least, should not be) about turning everyone into a Professional Developer.
Rather, I think it is an understanding that most of these students will pursue other professions, but will need to interact with developers.
They'll need at least a passable understanding of what code is, what debugging is, what testing is, because they'll be associated with it to some degree.
The goal is to end managers who believe that a "Debugger" is a program that fixes your bug for you.
Or that "Testing" is "it seems to work, lets ship it!"
Very few people will end up professional programmers, but everyone else needs to be somewhat familiar with code.
(In the same way that very few people are mechanics, but everyone should have a vague concept of an engine, gas, oil, gears, etc)
"Building an app, for example, can't be done in a couple of hours, it "requires multi-dimensional learning contexts, pathways and projects."
While this is complete gobbledygook, apparently nobody knows the difference between Computer Science and Software Engineering.
You can study computer science and not be able to write a line of code.
Conversely, you can be a software engineer, and know almost nothing of computer science.
They are separate discipline. And it's not clear of the value of learning either for most student.
You were mistaken. Which is odd, since memory shouldn't be a problem for you
We should be teaching kids the very basics such as focus and concentration through meditation, then add on the ability to adapt and learn. We continue to try and "skate to where the puck is, instead of to where it's going to be" (stealing a line). And in order to go to where it's going to be we need a highly adaptable society with the ability to quickly learn as they may have have 4-6 careers in their lives.
Along with those very basic also teach reading, writing, math, logic, problem solving, art, music and phy ed, then as they get older use personality, aptitude and interest tests to develop more specific skills.
In 10-15 years coding "may" be a niche job as AI rises.
No, there won't be "high paid computer science guys". The only way to get a high pay is to have anything to do with finance or management. Anyone who actually creates a product is paid pebbles, only pushing numbers counts!
There will absolutely be highly paid computer science guys, and they will likely be higher paid than they are today. But there almost certainly won't be as many highly paid computer scientists as there are software developers today (calculated as a percentage of population that is).
There will still be a need for researchers, and they will still be highly paid because their skill sets will always be rare (until genetic engineering can control intelligence and work ethic). And there will still be a need for software architects, although the name of that profession may change. My opinion is individuals who hold software architect-like roles now will be the ones eventually getting a professional engineering license, and everyone else will be low paid programmers akin to CAD operators today.
I would agree that the position of senior software developer making $150k without any managerial responsibilities will mostly be replaced with $60k programmer positions. There will be many more of these positions and they will not require much training. There will also be more highly paid software architect / software engineer positions that there are today, but they will be the minority in the field. This is just my opinion of where our industry will end up 20 years from now.
-- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
CS can be taught academically, in worse or better versions. Coding cannot really be taught at this time. We do not know how to do it. Like most advanced skills it needs about 10'000 hours of practice to become reasonably good at it, and most of that time people need to spend in self-directed study by themselves, practicing on a variety of projects, tools and languages. The "learn coding quick" bullshit-meme of today is really "learn some very restricted form of coding very badly" and it harms a lot more than it helps.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
They don't teach coding or computer science in k-12 schools. They teach scripting. The thing is you can't make coders. You have to be born one, or pretty close. Its not about language or syntax. Its about logic and breaking down complex systems into simple actions. You have to think that way or you will never be a decent coder.
Teach kids how to use about 6-8 instructions for x86 assembly. Give them a template to start with to modify. Then have them build up simple sequences of the handful of instructions that they know to do something basic (like add up a list of numbers).
My suggestion may seem boring, but it is rewarding to take something that was initially hard and at the end accomplish something that you are now an expert at doing. (expert in adding numbers in assembly language)
Why assembly? The basics are very easy, it only gets hard if you want to do complex things. Honestly after you taught the kids those few instructions you can stop there and never mention assembler again.
Repeat with a handful of operations for another language and a good template to start them off. Python, Ruby, JavaScript, etc I don't care. It could be Lisp or Pascal for all it really matters.
Teaching concepts and trying new things is the whole point. It should never be about training children to be a professional in a particular industry. (which is why I don't think the language matters)
“Common sense is not so common.” — Voltaire
The new American dream is either get hit by someone rich so you can sue the pants off them or participate in some TV show for idiots to be paid for being an idiot (aka "becoming a celebrity").
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
And just like management, in reality they ain't worth jack shit. But in our economy, they make you rich.
Just in case anyone has ever wondered if our economy has anything to do with reality...
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
Why should they be paid highly? Supply and demand. Yes, they will need to be very skilled and yes, there will be fewer that quality for those jobs than there are now people who qualify as programmers. But as you said, the number needed will even be fewer still.
If you now have 100 people doing a job and in the future you'll only need 20 of them, wages for them will go down. Even if only half of them could do the job of the future, there would still be more around than you need.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
Most school districts will complain that they don't have enough money to buy supplies and/or reduce class sizes. But there's always money for building a new football. After my parents retired to Sacramento in the 1990's, my father drove me around the county and showed me all the new football fields that the schools were building. It was so shameful.
Just in case anyone has ever wondered if our economy has anything to do with reality...
Oh oh oh oh I know this one........No?
Wanna buy a shirt?
https://www.redbubble.com/people/stealthfinger/shop?asc=u
...on a hand me down TI 99/4A connected to a portable black and white television set back in 1986 and looking through the big binder full of Basic examples and type copying/modifying the listings. Just sayin..
We have not come anywhere close to fulfilling our economy's need for workers capable of and willing to architect quality software systems. Developed economies currently employ nearly 100% of these people and push their salaries to a low of $150k to well over $200k per year. This doesn't even count those who go into business for themselves.
Most companies have to deal with software developers whose skills and abilities top out at a senior software developer level because of the lack of elite employees. Salaries are at or probably even above what the market can bear for software architects (if you believe we are in a bubble), which is mostly constrained by how valuable companies view their software systems. As more companies view their IT systems as a competitive advantage, salaries will continue to go up.
I seriously doubt our economy will ever reach a point where there is more supply of software architect-level workers than there is demand. Until we have human-level AI that is. This is obviously just an opinion though so who knows?
-- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
And just like management, in reality they ain't worth jack shit. But in our economy, they make you rich.
Just in case anyone has ever wondered if our economy has anything to do with reality...
You should not throw stones in a glass house, since these statements are so divorced from reality you are in no position to insult others.
(Paraphrasing Dead Poet's Society) Medicine, law, business, engineering, these are noble pursuits and necessary to sustain life. But friendship, love, literature, theater, sport, these are what we stay alive for. Software engineering may be the career I chose, and I believe it adds great value to society. But the entertainment value professional athletes provide to society is worth just as much if not far more. If you think Lebron James is not worth his salary, watch a Cavaliers / Warriors game end then a 76ers / Timberwolves game. There is little comparison when it comes to entertainment value. And everyone playing in these two games are among the top few hundred players in the world, yet the top few dozen players are truly in a different league.
You need to get over yourself and realize there are plenty of ways to add value to the world above and beyond engineering.
-- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
Paraphrasing: "Because kids can't code an OS from scratch after playing around with a computer for an hour, we are teaching them 'all wrong'." Seriously?
Yes, the general public frequently confuses the writing of code with Computer Science, but that does not mean that schools are doing anything "wrong" by starting out with some simple toyboxes for kids to play with.
Is the objective "computer literacy on steroids" where people can cobble together toy programs and they can cobble together really useful programs from a small handful of "large blocks" in the same way you can "build" a PC from a motherboard (pick one of many), a power supply (pick one of many - but make sure it's beefy enough), a case (pick one of many - but make sure it's right for your motherboard and other parts), a keyboard (pick one of many), a mouse or trackball (pick one of many), etc.?
If that's the objective, then "watered down" is the way to go.
Is the objective to use programming as a way to teach people to think logically? Well, you'll get some of that with the watered-down approach, but it's not a substitute of 2 years of real computer-science/programming classes that force you to learn logic and teach you to make "deep" choices between various libraries that superficially do the same thing but under the hood have different efficiency- and other trade-offs. On the other hand, you don't *need* to take a computer-science approach to teach logical thinking. We've been teaching kids to think logically (with varying success) since way before the invention of the modern computer.
Is the goal to make professional programmers out of the kids? Sorry, there's no substitute for doing it the hard way.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
Watered down CS classes is exactly what most people need.
Even my wife's job, an attendance clerk for a elementary school, takes some significant IT understanding to do.
The software the district uses requires the end users to create their own reports, in dumb downed version of SQL.
"Real" IT people need more detailed courses, but the current system geared to make office workers needs to be upgraded to produce IT savvy workers.
In that case, don't teach watered down CS (whatever the fuck that means). Teach IT. You don't take some crap and call it watered down calculus when all you need to do is teaching the basics of math and, I dunno, understanding the differences between simple and compound interest, do you?
It is understandable when the general population conflate CS with IT (in the same way they conflate Zoology with Botany.). It is not OK when people who should know better push such an invalid notion.
American Schools Teaching Kids To Code All Wrong
Am I the only one that thinks we should be teaching IT and business applications first and foremost. Teach a kid how to use excel (or whatever FOSS spreadsheet) of your choice to compute simple but real world problems with what-if analysis, or how to plot numbers and see how that changes when you change the variables.
Show how much money you will get in 20 years if you change the interest rate on a referenced cell. Or how much money you need to spend in building a fence if you change the cost of lumber per yard, or the cost of delivery per unit. And so on and so on. Right there you will be teaching kinds important lessons on how to use software realistically.
Teach a kid how to put a LEGO robot together. Or how to put a computer together, or go even further down into the basics with a focus on shop class.
The future is not going to be dominated by software developers, but by integrators, machinists and service people for whom custom coding will be a secondary (important, but secondary) activity.
The approach we are taking is like teaching plumbing apprentices casting and forging metallurgy to create their own plumbing before teaching them actual trade of plumbing.
My experience agrees with you. It's management that gets the pay, while the actual gruntwork of producing code gets squat.
Unless you get to sit in the C-suite, management pay over grunt pay is marginal once you count the number of hours and responsibility involved (not to mention that middle and above-middle management are the first to go during an acquisition).
You can be smart about being a grunt and make a good salary not far from base management salary without all the grievance involved in managing people.
My kid is taking a programming class in high school. The curriculum is more geared to covering topic bullet points than in learning via experimentation.
When I took BASIC in high school way back "then", we got to noodle around with fun graphics. I made a minimalist version of Space Invaders, for example.
I learned the value of subroutines by seeing the mess made by not using them. That's far more concrete and direct learning than "you should use subroutines because the book says so".
Table-ized A.I.
1. Meet the tools
2. Learn how to use the tools
3. Learn how to answer questions
4. Learn how to ask questions
Roughly: High school, Bachelor's, Master's, Ph.D. Experience and the right work substitutes and moves you ahead, as well. In music, a nice correspondence is: play the recorder/violin in school, form a/play in a band, compose music for your band/in genre, write compositions that extend/break genres.
It seems the author is bemoaning the existence of step 1 (and possibly parts of step 2). The author is jumping ahead quite a bit. The initial part of learning a field is learning the basic vocabulary of the field. The initial part of learning the JOY of a field is learning a field in the context of other things that bring you joy.
Sams Teach Yourself C++ in 24 Hours In just 24 lessons of one hour or less, you can learn the basics of programming with C++–one of the most popular and powerful programming languages ever created.
The shortage is in competent software architects.
If you are 20-25 and think you are a competent software architect, you are almost certainly wrong. It just takes experience dealing with long term consequences of early design decisions. Then repeat and learn that what you thought at the end of the first project didn't apply universally.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
We are doing a disservice to kids by assuming that they can't grasp Differential Equations, Calculus, and Linear and Nonlinear Optimization. By limiting them, we undermine their capabilities and stifle their creative and inventive potential.
Who are you quoting here? It sounds to me like a mad scientist. I remember from my elementary school days seeing kids able to calculate surface of a circle given its radius or get radius from diameter when asked for it but not able to use diameter to calculate the surface. Equally not seeing a difference between 22 and half horses on a farm and 22 and half horses per farm. My final point is that smart kids are expected to be able to find smart content on their own (like many games require some sort of exploration) and forcing the stuff through their throats may have the opposite effect. And of course during a software engineer career most of knowledge you have to acquire on your own time.
It's different this time.
Measuring the effectiveness of a new method of teaching is fairly straightforward compared to very complex scientific fields. I don't think you are being intellectually honest. If you make the claim that some new method is superior to the existing method, then partner with a large school system and test your thesis on a statistically significant subset of the student population. Even the most basic variables are not controlled for currently: they convert the whole school/school system all at once, they provide training to teachers for the new method but do not train re-train teachers on the existing method, etc. This is not rocket science.
Furthermore, if you can't measure your method's improvement then it might as well not exist. It's a religion or a philosophy, and we shouldn't be throwing tax dollars at it.
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
Just as would-be musicians become proficient by listening, improvising and composing, and not just by playing other people's compositions, so would-be programmers become proficient by designing prototypes and models that work for solving real problems, doing critical thinking and analysis, and creative collaboration -- none of which can be accomplished in one hour of coding.
Maybe not a terrible analogy, but perhaps the wrong conclusion being drawn from it. You can become an excellent musician even if you only ever play what somebody else has written. You can be a great actor by only ever memorizing the lines somebody else wrote for you. You can be a coder without ever becoming an architect. There are pairs like this all over society: soloist/composer, actor/writer, programmer/architect, fabricator/engineer. You don't necessarily have to be good at one to be good at the other. You can be good at both or bad at both, too. No correlation necessary.
Hell, over half the coding community doesn't code all that great but I don't think it's because of what they were taught in high school. A lot of times an artistic people can write cleaner, better functioning code than a person that has just done code all their lives.
Its probably true that more people should understand how programs work, but coding is not computer science.
by the time they graduate there won't be any programming jobs in the usa
Sheesh, evil *and* a jerk. -- Jade
The only thing I can make out of this article is "We are doing a disservice to kids by assuming that they can't grasp industry-standard languages, complex computer science topics, and applications."
Yet there is a whole generation of professional programmers who started with BASIC, which is not an industry-standard language (not now anyway), is a very limited subset of computer science, and frankly teaches some fairly bad programming practice.
What I got out of BASIC was that programming can be enjoyable and fun. I have seen some people taught K&R C as their first language, and it appeared that had far less enjoyment and fun with memory allocation errors, etc.
BTW "pop computing" isn't really new, remember the educational programming language Logo, designed in 1967 by Daniel G. Bobrow, Wally Feurzeig, Seymour Papert and Cynthia Solomon.
GIven that so many of us came up through the "Hello World" Basic route, it's a little difficult to imagine that making children do the less pleasant tasks or very hard ones is a good way to get more kids into coding.
She might be form Israel, but she has a distinctly Calvinist outlook on things.
The shepherds did so well protecting the flock that the sheep no longer believed that wolves existed.
How about we let parents choose, how and where their children study?
Whichever approach public schools take, it will be a single one — certainly so per state and, with the increasing power of the Federal Department of Education, for the entire nation.
At best, it will be the right one for a majority of pupils, but even that's a lot to hope for. And, when the government makes a mistake (such as declaring "fat is evil"), it makes the same one for all of us.
Slashdot used to be very cautious against monocultures — why are so many people here able to recognize its dangers in technology, but not in education, for example?
In Soviet Washington the swamp drains you.
I saw a guy pushing a broom in a hospital the other day and I found myself jealous of his job.
Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
I don't watch sports and I'm fine.
Laws are rules for the court, but merely a bottom bar to hit for life. Think beyond laws in your actions always.
I would say if the world true wants more "workers capable of and willing to architect quality software systems" it needs to offer that 200k+ salary or more and apparently the real problem is there is a shortage of "workers capable of and willing to architect quality software systems" at 60k a year.
I completely agree that we need to pay highly skilled software engineers higher salaries to attract more of them. As I said in my two posts, the highly skilled software architects will likely make even more money than they do today, so $200k+ would probably be the norm. But that will be a minority of the software development industry. I believe the vast majority of programmers will eventually be paid salaries closer to CAD operators today. You will have one architect / engineer being paid $250k for each 5-20 programmers being paid $60k. Not that different than the gap between mechanical engineers and CAD operators.
-- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
I don't watch sports and I'm fine.
I doubt anyone consumes 100% of all entertainment options available, but that doesn't make any of those options worthless.
-- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
There are quite decent ways of testing all aspects of educational process if you're not dumb about the physiology of the brain. All too many people who deal with education have very little knowledge of neurophysiology and psychophysiology and are completely unequipped to test whether their techniques work, and to design their teaching methods to leverage the physiology of the brain.
Although my list of peeves would probably fill several chapters, I'll focus on just one, to give an example. Letter/Number Blocks should be fucking nuked from orbit. It doesn't take a genius to understand that the spatial universalism that applies to objects doesn't fucking apply to letters and numbers. They are symbols, not objects, so if you give your kid letters or digits printed on the sides of cubes, they'll naturally learn the wrong thing: that an A is an A no matter which way it points. It is surprisingly hard to unlearn that if it's too deeply ingrained, and is a real obstacle in development of reading skills. Kids don't write mirrored/rotated letters due to God's will, but because they specifically apply the inapplicable object universalism from the 3D world they live in. And so, the label of "dyslexia" is so broad it's almost useless, this is not one disorder, but about a dozen very specific problems that must be diagnosed and counteracted individually; the all-encompassing label doesn't help with that. And so on...
A successful API design takes a mixture of software design and pedagogy.
It's about progression and self motivation at an appropriate level.
True but it must also be educational at an appropriate level of rigour. The problem with a lot of school education today is that making it fun becomes the primary goal and maintaining educational standards comes in second. This leads to the erosion of educational standards very rapidly - just look at the appalling level of maths education in schools in the UK, Canada and the US today. The correct order of priority is to determine what needs to be taught and after that determine how to teach it in the most engaging way possible: this last part is where the teachers are the experts. If you can't come up with an engaging way to teach it then you just do the best you can.
We are doing a disservice to kids by assuming that they canâ(TM)t grasp industry-standard languages, complex computer science topics, and applications. By limiting them, we undermine their capabilities and stifle their creative and inventive potential.
Knowledge = Power
P= W/t
t=Money
Money = Work/Knowledge so the less you know the more you make
not everyone who picks up a guitar needs or wants to be a virtuoso. sometimes you just want to sing a ditty for your friends or charm your girlfriend.
the more the merrier.
i could live a little longer in this prison
I learned in America!
10 PLINT "Yo Mama!"
20 GOTO L
30 DROP MIC
Wheres my stock options bit!@#s
Infants learn language by immersion -- listening to adults. At first, they have no comprehension. After a while, they understand a little. After a year, they understand quite a bit. Pretty soon, they start using the language. Learning by immersion works so well that the CIA uses it to train people in new languages.
People improve their reading and writing by PRACTICING reading and writing. Coding works the same way. Immersion works well for beginners. They can start with simple algorithms; critical thinking and analysis can wait. Until they have a language to work with, they don't have a foundation to build on. People just have to remember that learning syntax is not the end of the journey, it's the beginning.
"You're coding it wrong."
- Someone Famous
Comment removed based on user account deletion
Everything needs to have a payoff.
The pay off is that you get a better job, can manage you finances more effectively and generally have a better chance at a good standard of living. Part of the education process needs to teach students that although summer jobs somewhere like McDonalds would be an effective, but not fun, way to do that. See you can learn something valuable even while not having fun! ;-)
I'd rather a dumb kid have fun with math and learn something...
That's a great ideal but the problem is that the smart kid who would like to learn more maths and science does not because of the song and dance required to entertain the less gifted kid (I assume you actually meant 'dum' and not that he had a disabling speech impediment). The problem with this is that the smart kids are the ones who grow up to be doctors, engineers, scientists etc and are the ones more likely to have amazing ideas and innovations which improve everyone's lives, including the less gifted kid's. They can result in better medical care or even provide nicer, better paid jobs.
If you insist on treating them to a song and dance routine the smart kids are likely to end up being the ones who tune out and think school is a waste of time. So if you are going to have one lot tuning out of school the question is which one is the least damaging for society? I would argue that it is very clearly the smart kids which you need to teach and keep engaged. The less gifted kids are not likely to end up with jobs that need an education as much as the smart kids, well except for those who become politicians but that's a different discussion.
It would certainly be beneficial for society to educate everyone as much as possible but that requires streaming and every time I suggest that there are a series of posts declaring how unfair it is....and yet people are still happy to allow streaming for school sports and not insist that the level of sports education is kept low enough that even the most sport-inept student finds it fun. So if streaming is bad lets at least apply it fairly everywhere and when the standards of professional sport teams starts to decline perhaps then we can have a sensible discussion about differing educational needs.