Ask Slashdot: Do Kids Still Take Interest In Programming For Its Own Sake?
nirgle writes "I have been wondering lately if there are any kids interested in programming for its own sake anymore. When I was my nephew's age, computers were still fascinating: There wasn't a laptop on every table, facebook wasn't splattered on every screen, and you couldn't get any question answered in just a couple seconds with Google. When I was 10, I would have done anything for a close programming mentor instead of the 5-foot high stack of books that I had to read cover-to-cover on my own. So I was happy when my nephew started asking about learning to do what "Uncle Jay does." Does the responsibility now shift to us to kindle early fires in computer science, or is programming now just another profession for the educational system to manage?"
Another reader pointed out a related post on the Invent with Python blog titled "Nobody wants to learn how to program."
Anyone rarely does anything just for its sake. There's always some ultimate goals. As a become adult, programming became means of getting money and helping with business. When I was a kid, programming enabled me to make games and sandboxes that weren't otherwise available. I did some great things too.. but I never wanted to program "just for the sake of it". I wanted the results of that programming. Even if that meant a little fun sandbox game made by me.
It's not just computers, this is true for everything. Everyone does something for a reason. For me, programming was a way to create the games and sandboxes I dreamed of and enjoyed. I never really even finished anything, but I had my mind going around the AI and the general gameplay mechanics. Especially when I was waiting for bus or doing something other boring stuff. But, I was never really fascinated about computers or programming *per se*. I was interested at what those techniques could give me.
So rather than trying to educate programming, computer history or other boring stuff, try to tell what fun stuff you can do, or whatever he would be interested at. Everything else will come later, and the kids will either pick it up themselves or ask, if they want to.
Doing what Uncle Jay does... Yeah - tried that. My parole officer is still upset.... However the Catholic Church has contacted me back on that job offer....
... are a tiny minority. Always have been, always will be. The submitter seems to think the average 10-year-old should be interested in programming because he was at that age. Well, good for him, and I guarantee there are still 10-year-olds interested in it, but they're going to be awfully thin on the ground -- and this was just true back then as it is now.
The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
The ability - which generally just takes a PC, a book and some time.
The desire. You've got to want to build something. You then get to add stuff to it. You then realize you don't know how to add something (this is where you go to the index of the book you abandoned days before, realize it's not in there, rush online, find the solution, realize you've done something else in a stupid way, decide you might want to fix that etc etc). Basically the hump is getting hello world up on the screen and then creating the very first bit of your 'thing'
I don't even think it has to be programming per se. Quite fun playing with APIs on sites that you're familiar with, with something friendly like PHP.
I wanted to look up the prices of my old DVDs I wanted to sell. Pain in the arse on Amazon... oh, hold on they have an API.
Oh, then how about using a CSV to load and dump results to?
Shit, I seem to be getting results back from the wrong bits of amazon, lets add some array sorting.
Would be nice to store lookups I've made - MySQL
Oooh, how about other sites... they don't have an API *googles*... "Oooh Curl" etc.
Basically, if you're interested in something and have time, it will all follow. You can later learn how to do it properly later, but it tends to flow. Nobody wants to sit down and read a chapter on exception handling - but once your program is mysteriously failing, you suddenly find you've become quite fascinated with the intricacies of exceptions. You'll just bolt them on until the problem is fixed, but on your next project you'll have that pain in your mind from the start, and may find yourself now dutifully adding them.
I'm meandering all over the place here now - I think you just need to ask your nephew what he wants to build, make sure it's realistic (or choose a functional subsection to start with). Also nice if it's something that could go online, be run on a smartphone or similar - once you've built this thing, you want to show it off.
Programming is a fundamental skill, almost like reading and writing. Children learn the shape of the characters in one year, but they keep learning how to read and write for many more years, because reading and writing aren't mechanical skills. Programming is a formalization of a solution, and this skill is fundamental. The most important aspect of programming is understanding the problem in detail, and that's something everybody could use. It's like writing up a complicated story without loose ends and contradictions: We're not all going to write books and screenplays, but almost everybody needs to express more complicated thoughts than "I want a cheeseburger".
After 30 years of professional development, I feel that many developers SUCK! They wear some "architect" or "senior developer" badge but struggle through the most basic concepts. I believe the reason is that MANY coders are simply chasing paychecks or have been pushed into the field. They lack the PASSION that I remember when I first got into it. Everyone was learning to program because they loved these cook PC things and WANTED to do something with them AFTER they soldered everything together. Most "geeks" share that same type of passion. They gravitate to the next cool innovation and, in the process, become great at what they love. However, today, the industry is flooded with bodies that are simply working the cliche' 9-5 and drooling over a six-figure paycheck.
When I was an 80s teen with my ZX Spectrum, I could write games that weren't too far behind the earliest commercial games. (back then it was even a novelty to have control over what appeared on your old telly screen!)
I wrote games that gave me as much fun as the coin-op machines back then, when things were primitive.
Now though, how can any kid write a fluid 3D FPS shoot-up? I take my hat off to any who can! Where's the incentive? Where's the novelty?
Little 2D games on the kids' Android phones, maybe. Perhaps.
We had a 14 year old work experience lad, who was the nephew of one of the owners of the business, and he wanted to become an app developer - when we chatted about this further, it turned out that his claimed "programming experience" amounted to using the drag-and-drop style of online website wizards, and using apps from the iTunes store.
He had a goal in mind, and he was raring to go, so we decided to embrace this enthusiasm and run with it - so we decided that the best thing for him to do during the two weeks with us was to design and build a basic app - he was thrilled by this. We gave him a task for two hours on the first morning, which was to research the apps out there and decide what was best to build (building a copy of something out there is easier for this sort of thing than coming up with the concept itself).
He came back with "I want to build World of Warcraft". Crap.
We eventually scaled him back to building a HTML5 version of tic-tac-toe, as the logic is simple, the graphics are simple, and the HTML experience travels well. He was given a lot of personal tutorials from myself and the other developers for the first two days, basically a beginners guide to HTML, and then told to see if he could come up with a basic page with a table in which would hold the game board - no styling, no JavaScript, just a basic page with a table.
Despite help from us developers being on tap (we encouraged questions, we discouraged "do it for me" - examples are fine so long as work and understanding was needed to translate the code into what he was doing, so a simple copy and paste wouldn't solve the set issue), by the end of the first day he hadn't grasped the concept of nested elements to build the table. What he came up with even IE barfed over.
The poor kid had no grasp for it at all. I hope it was a failure on our part rather than inability, but really it was inability. He never realised software development was so difficult, no realisation as to what was actually involved in the process or the building itself. He saw pretty things and thought they were simple to produce.
So, anyone who gets the chance to introduce a child to software development, please take it nice and slow and be prepared for lots of failures, lots of frustration and lots of patience.
By the end of the two weeks he was proclaiming he wanted to be a farmer. And now, I hear, he wants to hire out construction equipment (after he was given a day of work experience on a farm).
We don't fuck for fuck sake, we fuck for the climax. Without the climax, fucking would be fucking boring.
This is amusing because the Slashdot sterotype totally applies (a virgin who is very opinionated regarding things he knows nothing about).
I started programming when I was about 10 years old for one very simple reason. I enjoy making things.
I recently built my own house for that same reason. I also made most of the furniture in it as well.
If, at the end of the day, I can say "I made that", then I am happy.
Death has been proven to be 99% fatal in lab rats.
Well, when I started on my Commodore 64 you started at the command prompt read to write code, so yeah I'd say it takes at least a little more prodding than before to get into programming. Also you started with just two lines:
10 PRINT "HELLO WORLD"
20 GOTO 10
Okay, so it doesn't produce a very impressive result but as "bang for the buck" it's pretty good. If the reaction is "All that to produce so little?!" you've lost. Hell, you might have lost anyway if they point you to a $100 million AAA game and say that is cool, I want to make something like that. But since you can't ask for time to be turned back to simple sprite based graphics you can't change that, but at least not start them off down the long road.
Personally today I think I'd actually start them off with a game toolkit where you can script events, like Neverwinter Nights or something like that. First of all because it's a game and looks good and produces something cool, second of all because you can start with a level that already exists. Have them modify it and they'll start thinking about objects, attributes, state, conditions, boolean logic (assuming you want to start them down the OOP path) without banging their head on the really hard issues. Plus you get to make your own adventure, which is creative and fun while learning.
Live today, because you never know what tomorrow brings
A lot changed since the 1970s. In the 1970s computer were science fiction and science fiction was en vogue. We tried to build our own computers based on transistors and later on microchips. In the 1980s things already improved so much, that a lot of people could by a home computer like ZX spectrum, Commodore C64 or Amstrad CPC 464. These machines provided a simple BASIC interface. They were designed for start and play. Where play meant programming. And you could dig into those machines and learn to peek and poke around in the hardware. Then you learned assembler etc. In the 1990s this moved to PCs. While old PCs still allowed you to access the hardware and you had to work with the console. Upcoming GUIs made the direct experience of the machine much more complicated. You couldn't re-program Pong in a week, while learning BASIC.
So on one side, computers get more complex and shield people from the machine and the machine feeling, and on the other side the sci-fi feeling is no longer so intriguing today than in those days. While in the 1970s, if you understood computers you could build your own moon lander software. At least a facsimile. And a lot of the people did. And the program would only display longitude, latitude and height above ground, as well as, speed and fuel. But all without graphic (which had to be imagined). Today moon landing is lame. Especially compared to those days. the whole society is no longer in technology.
In short: The whole setting is different. And the nerds of today go into gaming and become dorks.
I disagree, I think it is entirely possible to want to program for the sake of it. You need a goal, something you are making, but the motivation for doing it doesn't just need to be "I want that thing, so I'm gonna code it together!". It could simply be "I like programming, so I'm gonna build my own thing!"
It's the same reason you had Legos as a kid. Did you make functional things out of Lego, that improved your quality of life? Or did you just like building things?
This entire submission misunderstands the real draw of programming. The desire to learn programming is out of an intrinsic desire in some people to create or build artifacts from resources we have obtained. Some of us are builder/creator archetypes and we are drawn to the process of creation.
If the argument held up, then the quality of carpentry would have degraded considerably with the advent of power tools. Nobody needs to hand-spin a spade to drill a large hole anymore, and while I am handy with a chisel, I can still do things faster and with better quality by using a router for certain situations. The power-tools have allowed us to put arguably better quality wood products in a MUCH faster timeframe, and all with the same sense of satisfaction that you get from a beautiful new table, cabinet or chair.
I do think however that in todays age it is a lot harder to stay focused amidst constant distractions, and it is a lot easier to find information than ever before, making us all slightly lazy from time to time. We are more prone to get frustrated and do something else, so the extreme convenience doesn't come without its faults for sure.
So your cousin is a senior manager at Microsoft?
Just bought a new quantum computer, but I'm uncertain how it works.
They're ORs, not XORs!
Dilbert RSS feed
It's funny you should mention boredom and building blocks.
When I was a kid, LEGO was all the rage in the UK (and probably many other places too). They were just simple building blocks. They had all the simplicity of wooden blocks, but the advantage that if a clutzy kid like me jogged the surface they were on they didn't all fall down. As they go more complex, they started including manuals to show you how to build different things with the pieces they'd included. (Mechano did the same thing)
Then I noticed a shift in philosophy and the manual had fewer and fewer designs - until they only had one design in the manual. This may have changed since, but I'd be surprised. Since my son was born, I've noticed how toys these days seem to be single serving. They only have one prescribed function. I'm sure that's not how it used to be when I was 5! I've also noticed how my soon to be 1 year old son is more interested in the boxes toys come in, than the toys themselves.
I still remember my Mum coming back from a night class where someone had demonstrated how to program the BBC Acorn Electron in BASIC (at the time a new machine - there I go showing my age!) to work out the average of two numbers, and she complained that it took longer to program the computer than to do the maths on a piece of paper. She clearly didn't understand the power this machine *could* have. My Dad on the other hand did. Not for working out the averages of numbers, but to do other things.
My question for the audience is this; Are kids these days bored because they only have single use toys? The toys they have only do one thing. This leads back to the original article, because when I learnt to program (on that Acorn Electron no less), I learnt because I was fascinated by how I could get the computer to do stuff, other then the prescribed functions that came with the machine.