Programming's not for you? How about thinking? Be empowered.
There seems to be two extremes of this whole "Learn to Code" movement which has come to a crescendo with the "What most schools don't teach" video from Code.org.
People seem to fall on the side of "Everyone should learn to code! Teach the babies Common Lisp!" or "Not everyone can be a programmer! Relax!"
Surely we can ALL agree that this discussion isn't about code at all. "Code" is just a convenient and press-friendly way to say "think in algorithms, think about problems, think about how things fit together."
It seems a little disingenuous to focus so much on teaching first graders to code or third graders about robots while simultaneously shuttering music, art and drama programs. Our expectations of our students when it comes to math, with some suggesting we stop teaching algebra.
We need to teach kids to think and to be excited about thinking.
Code should be taught - in age appropriate ways - as part of a larger "solving problems" curriculum.
Thinking should be cool.
Why is everyone trying to get everyone else to code? One word: Empowerment. Code represents power. The power to create, the power to change, the power to influence. Code also represents money to many. It is a raw representation of both intellect and instinctually property.
But woodworking, art, sculpture, drama and music are all ways to create and influence. They just don't have price tags as impressive.
There's clearly a Digital Divide and it's bigger than just blue collar and white collar workers. It's as big as the STEM (science technology engineering math) divide. Are you a computer person? Or not?
A family friend almost lost their domain a few months back. Had they lost it, it would have decimated their whole non-technical business. It was extremely confusing for them to tease out the difference between who owned the domain and held it, who hosted the DNS and who hosted the site. In their case, GoDaddy controlled it ALL and they got locked out of everything. An hour of whiteboarding and some moving things around got them setup at DNSimple and SquareSpace and put them in control of the tech they cared about.
I hate to see small businesses being charged thousands for things they could easily do themselves.
- Said the Software Engineer who hired a guy to fix his toilet.
How/when could they have learned this incantation? In school? on TV? Or should they have puzzled it out themselves? How far should it go?
Learn the Basics. If you're excited, learn more.
Learning to code, to me, is no different from me having someone teach me basic woodworking, gardening, or kitchen tile. After each of these projects my sense of personal empowerment increased. In each situation learned how to think about a problem and solve it. I can do this. I can change my world.
Take a minute and read 101 Basic Homesteading Skills. I came out knowing about 9 of these, thereby ensuring my quick death in the coming Zombie Apocalypse. There's a great video of Mike Rowe about how many 'dirty jobs' are available but folks either lack the skills or interest to do them.
You may have noticed that not a lot of software engineers thrive in ZombieMovies. Just sayin'.
ā Scott Hanselman (@shanselman) March 4, 2013
We should learn a little of everything and a lot about the essentials. Is learning to code essential? No, not yet. but learning to think about abstractions is.
Maybe you won't be able to create swim lane overlay graphics entirely in CSS3 but you should hopefully get the gist and be excited about how freaking cool it is.
Reading, Writing, Arithmetic, and Algorithms
But perhaps it is time for "Reading, Writing, Arithmetic, and Algorithms" in school. For loops, while loops. I love this idea on "How to train your robot. The parents are the robots and the kids give them a list of instructions (a "program") to accomplish a simple task. A kinesthetic and tactile way to teach a young kid to think without staring at a screen. Read more about this at OffBeatFamilies and get the materials at Dr. Techniko's blog.
Procedural and Functional thinking, as well as other concepts like Project Management and Time Management are essential components of an empowered individual. These are teaching people to think. Teach them a little code and a little music and a little art, then nurture their excitement and try to turn it into empowerment. Everyone should get a chance and be exposed to all of this.
At the very least, I'd love for everyone to come out of high school with enough math/science/technology be able to wallow in the magic and wonder of the greatest joke ever (origin unknown). ;)
An engineer walks into a bar and orders 1.0E20 root beers.
Bartender: "That's a root beer float."
Engineer: "Make it a double."
I'm still giggling at this one, years later.
What do you think?
About Scott
Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.
About Newsletter
[)amien
"...There seems to be two extremes of this whole "Learn to Code" movement which has come to a crescendo..."
"crescendo" means in "growing up" in Portuguese, I wonder if there is any relation.
As an aside, my wife teaches health and nutrition along with child development. While the focus of schools are on the core subjects, they aren't meeting the needs of teaching everyday skills like fixing the toilet, changing a flat tire, effective communication, or learning how to cook a healthy diet. These courses are intended to apply the core subjects to everyday life. Instead, the schools focus on split infinitives, the Magna Carta, photosynthesis, and Euclidean geometry.
If you want to see the usefulness of today's education, just watch an episode of "Are You Smarter Than a Fifth Grader."
ā Robert Heinlein, Time Enough for Love
Set it and forget it. That's my motto...
I feel like I get the "secondary meaning" of the joke (the data types in the 2nd and 3rd lines), but not the "primary meaning"?
By saying "That's a root beer float," is the bartender just saying "that's an awful lot of root beer"?
I have two kids, each about a year younger than your two kids (6yo, 4yo). I'd be interested to hear the ways you teach yours to "think in algorithms". I've done some on my own with some success, and they seem to be pretty age-appropriately logical kids. But I am always interested in ways to teach them to be deductive and logical in a way that might be more interesting to them.
Scott
- Promote a well-rounded education
- Teach basic skills needed in the environment
Hopefully help the child identify areas of interest and start developing them enough to move on to the next phase, whether it be college, workforce, etc.
As such, some basic computer literacy is a virtual requirement in today's workforce, and some basic coding skills aren't too far behind. I was fortunate enough to attend a high school that offered a CS class; if it were not for that, I'd likely not be a developer today. Unfortunately, some typical state requirements (do all students really need a full year of world history?) limit the amount of electives kids can take, thus reducing both exposure and depth in certain subjects. Plus, classes have to cater to kids of all learning levels, so more advanced students waste away in non-AP or equivalent classes that cram two months of material into nine. Add in the GPA pressures to get into college, many kids will take the easier routes by avoiding STEM classes where they can.
I always thought that the mental discipline required for writing software and working with your hands were highly compatible. It always seemed a natural dovetailing of interests to me.
I also think that a lot of people don't think theory is important, that they can just forget everything once they leave school.
I once gave code complete to one of the junior developers that didn't have a strong concept of things such as release cycles, testing, code quality etc. He gave it back the day after saying there was a lot of theory and didn't seem to understand why it was so important. He thought he could just copy and paste bits of code from the web and that what a developers did.
While I think this is great, I don't expect them to become great coders per se or write a mod any time soon. I'm a developer but earn most of my money as a manager so they know I could help.
I've been trying to temper their expectations while showing them the basics of coding with Scratch, which I think is good. We also did a simple Windows app to calculate card scores for a scrabble-like game a short time ago. Forced them to think about how it would work, let them do it the long way, showed a couple shortcuts, made them think of their own shortcuts, <insert life lesson here>, etc
Anyway, this was a bit much for the 8 year old but at least they're not bugging me about Minecraft mods lately. :) BUT I hope they bug me again some day soon
If you must, what we as coders do is more like designing and engineering the creation of tankless water heater system or architecting the layout for a commercial plumbing system.
The analogy of unclogging a drain or fixing a toilet is more like connecting your computer to a WiFi network, installing a printer, or removing a computer virus.
Instead, schools should focus on teaching mathematical reasoning. I've thought about how it could be possible to teach mathematics without numbers, making it vastly easier to get to the core concepts. If I taught algebra, I would use objects such as apples and oranges to represent units. It would be very clear to the student that you can't add oranges to apples, unless you convert them to the same unit (fruit). Using a scale and some divisible objects, I can teach them how to solve equations, making it brain dead easy. Once you've mastered the concepts, you start to introduce variables and numbers.
The engineer asked for the root beer in scientific notation used for "float point" numbers. Search "E notation" in Wikipedia.
@Scott Hanselman
Have you read The Camel Has Two Humps?
http://www.johnnybigert.se/docs/programming_test.pdf
I believe you can teach someone how to dilute oil paint, set the canvas, and spread paint on it. But that is far from making a Dali out of them. But they will be able to paint the kids room.
You can teach anyone how to use a computer only because brilliant minds build software to make it easy for them. Software developers purpose in life is to abstract complex tasks for the common folk.
Fixing your toilet is not the same as being able to design a toilet (you need an engineer for that).
It may well be physiological. The person who is not good at software and/or maths or related fields, might be great at poetry or be a good author or artist.
I wouldn't be surprised if there is already some study on brain physiology that makes such a deduction.
that isn't really correct though. After a day of learning to program, you can create some small utility applications. I highly doubt you'll be designing and engineering a tankless water heater system in a single day.
Architecting a large SaaS application = not for everyone
Designing the water heater system = not for everyone
Developing utility applications = possible with effort/practice
Troubleshooting a faulty toilet = possible with effort/practice
As much as we shouldn't sell programming short, I would also argue we shouldn't sell other trades short. The ones who use the plumbing analogy aren't trying to sell you on designing toilets, but fixing minor issues with one. Likewise, they're not pushing for you to build the next insert_big_service either.
If there is anything where the analogy falls short, it'd be in the aspect of the variety of specialties in programming (games, web applications, OS, etc.) that one might be able to handle one specialization and not one of the others (I couldn't do games. At all.) Programming would probably be easier compared to cooking/baking (pastries, various ethnic foods, etc.) in that respect.
Speaking of which, I put out this some time ago because people keep asking me how to get their kids started on coding: Programmng for kids
http://www.youtube.com/watch?v=dU1xS07N-FA
we are surrounded by code and everybody is coding...
Put some formula in Excel sheet, Bingo!! Now you are a coder.
Humans > Zombies because we can identify and solve problems we have not previously encountered (the job of engineers).
job. Best Electric Toothbrush Summary. The situation can be worse for the kids as well as for the patient of diabetes.
High Schools should be focusing on adopting Discrete Mathematics classes or Introduction to Algorithms courses, rather than programming classes. For the same reason that children are taught Algebra and Calculus before learning Physics.
Comments are closed.