Stop "Teaching Kids to Code"
blog.lemcoe.com
blog.lemcoe.com
Or perhaps it just teaches them a broadly-applicable skill that does not have to be taken up as a full-time job in order to be useful.
Yeah, who am I kidding? Nobody needs those things. That's why we teach them in "vocational technology" schools. Totally different than writing code.
When I started high school I rebelled against by brick-and-mortar entrepreneur parents by going into tech and teaching myself how to code. I was volunteering at internet cafes, because my family considered computers expensive toys and I was making an average worker's monthly salary in a couple of days by coding after hours. Even my highly respected grandparents suggested I should go into a "reputable career instead".
That was 15 years ago. Since then my work has been used by millions of people and I have been able to amplify the impact of my time far beyond what I could have ever done with two hands and a brain in the same amount of time in a reputable profession.
"Coding" is no more a forced skill than learning how to write. It is a form of literacy. If you have it, you have choices and access to reach and change the world if you need to. Without it, you are limited to your location, means, and circumstances in what you can do with your time.
If you ever need a slap-in-your face moment 10 years from now, feel free to re-read your blog post.
Did you even read the post?
"18-year-old business owner, web developer, systems administrator, high school basketball official, diction junkie, computer enthusiast, car enthusiast, college student."
But, since you (didn't) ask, I thought the essay was pretentious. The other essays I read on the site felt that way too. The frequent touting of vague credentials, the complex writing style, and even the styling "D. Marshall Lemcoe Jr." all serve to paint a picture of someone who's smart but not entirely confident in himself. I'd encourage the writer to stop hiding behind his words, tell more simple stories about his own experiences, and draw fewer grandiose conclusions. Let the point make itself.
For more about the difference between ad hominem and abuse, read this incredibly awesome essay that I found years ago and have kept bookmarked all this time, just waiting for the perfect opportunity to whip it out. Thank you for providing that opportunity.
"The Ad Hominem Fallacy Fallacy." http://plover.net/~bonds/adhominem.html
I work at an investment bank. Believe it or not, there are executives there that have no idea how to use email. Their secretary prints every email out, reads them to them in their office and the executive then verbally dictates a response that will be typed out by the secretary. These executives honestly don't even know how to use the phones. They can get away with this because they're in their 60s and have four decades of experience.
Now imagine a 20 year old getting hired today and on his first day he discloses that he doesn't know how to use email and doesn't know how to use a phone. And worse - he has no interest in learning either. How long until he would be escorted out the door?
In the future, there will be fewer IT departments. Using commodities like CPU, disk and RAM will be as familiar to the common workforce as using electricity is today. There will be 60 year olds that don't know how to extract data from a database and group it, sort it and transfer it from one application to another. But you better not be a 20 year old in that situation.
Teach your kids to code. Not to be a code monkey - but so they can do whatever it is they choose to do in the future.
instead of teaching "kids to code" -- how about putting together a list of [N] things every [kid/child] should know how to accomplish by [end of grammar/middle/highschool/college] using development languages [x, y, z]
---
By end of grammar school a child should be able to confidently navigate the internet, and have a basic understanding of how websites work.
By end of middle school, be able to create simple web pages. * Create a blog about themselves * Create a site about an interest or passion * Create a forum where their friends can talk
By end of highschool, be able to create simple applications. * Create a time-managment app * Create a budgeting app * Create a goals tracking app
Etc....
Make sure that all kids have a common shared lexicon in this area and experience taking a stab at developing apps and sites that have the same requirements. Allow them to expound upon execution through social interaction about these items.
I can teach a monkey to set up a Wordpress page or write a "Hello World", but the skill will be useless if the monkey doesn't understand what's going on and cannot translate this skill into a different environment.
It's easy to see how badly a checklist you mentioned would work. You could teach kids those tasks using a certain kind of tools (web pages - iLife, simple apps - scaffolds in RoR; and so on), and this knowledge would be useless because the tools would change before kids would finish their education. But teach students to understand things, and this will stick. Teach people to understand how the computer works, understand how the programming languages work and so on, and they will manage to figure all the other things themselves.
If there is one skill that student should be taught though, it's "how to google things up". It's surprising, but kids don't know how to use internet to find knowledge. Everyone assumes that since they spend so much time on the internet, they should be fluent at searching. They are not.
Each child will take this to the degree they can - some will find no interest, some will be wildly beyond the simple demo.
The point is to make sure that there are concrete results from each step, my post was just a first pass at an example, not some absolute...
The point is that it would be beneficial to have a tiered path toward advancement that can be followed.
As for the 8-year old understanding the theory behind how things work... I learned how body/animals operate on the biology class at the age of 10; and the basics of physics as well.
Well, the point I was making to was to expose them to building something of immediate use as an effort to expose them to the process and "how stuff works" -- this would go far to helping them both understand tech as well as determine if they have interest/aptitude.
"How to google things" was effectively covered by my statement of ensuring grammar school kids could confidently and safely navigate the web.
Programming is fast becoming the new literacy.
Most kids entering college (in the US at least) are abysmally bad at reading and writing. Programming skills won't help you if you can't read or communicate in writing.
Apart from that, the question is not whether the documentation is good or bad, but whether it's better or worse than the one a non-programmer would write.
Finally, even apart from writing skills, programming teaches you how to comprehend what you're reading (docs), and how to solve problems.
Nobody teaches basic English at the college level unless they're being paid specifically to bring remedial students up to speed (and before you ask: yes, that includes freshman English class). I've taught a few "writing intensive" lab courses, but that basically meant that we forced the students to write a lot, and that we were allowed to brutalize them for crappy writing (roughly 85% of the students). We spent no time teaching them how to write, nor could we: we barely had time to teach the subject at hand.
Why would a rich doctor or lawyer need to code if it wasn't important? Why waste the time or money to learn? There will be hundreds of areas in a person's life where they could potentially find a way to make something easier through coding, and coding can also be translated into REAL world stuff via arduino, raspberry pi, etc -- the fact is w/ the internet of things, wearable tech, and robots taking over the workforce -- coding is something that we all should know at least a little bit about, and NO student will be worse off for having learned it.
If this is your logic, then why should we teach Music, Sports, or Art? (All important parts of our lives... but not something crucial to get along in life w/ unless your profession is in one of these fields, but if we didn't teach it, less people would go into it. )
Should we expect every student to be able to build a full-fledged (say) statistical modeling package? No, of course not. Should we expect students to know their way around "programming" well enough to express what they want to do in the domain they choose to work in without clicking through menus? Absolutely. To compare the latter to "writing a best-selling novel" would be inane. We should teach kids to write well enough that they can write a moderate length letter, and we should teach kids to program well enough that they can write a moderate length script.
The notion that the kind of programming instruction we give to anyone pre-college (outside of exceedingly rare circumstances) is more like the former than the latter is, I think, entirely off base - generally, we don't even give the latter.
I am much more doubtful that there is any value in making kids sit in a programming class and write whatever programs the instructor tells them to in whatever language the class uses. I've had to sit through a few classes like that, and I don't think any of them have really taught me anything besides how to game the class grading system. I learned everything I know by going out and doing stuff on my own.
But it's a thinly disguised rant about the author's personal preferences in life direction. It seems like the author thinks there's no middle ground between creating a startup and being a "code monkey". What's wrong with "taking a corporate job"?
I agree that programming as a profession isn't for everyone, but the article almost contradicts itself - if the author hadn't learned to program, the apparel company wouldn't be able to rely on his software. A perfect example of how software literacy can be used outside an explicit programming position.
Maybe they're talented at other stuff you know, like literacy, painting, etc... Why would they need to learn how to code?
However, making programming a general subject is good though. Show them their career choice early.