How To Get a Game-Obsessed Teenager Into Coding?
looseBits writes "I have a friend whose 14-year-old son spends all his time gaming, like any normal teenager. However, my friend would like to find a more productive interest for him and asked me how to get him into coding. When I started coding, it was on the Apple II, and one could quickly write code that was almost as interesting as commercially available software. Now, times have changed and it would probably take years of study if starting from scratch to write something anyone would find mildly interesting. Does anyone have experience in getting their children into programming? How did you keep them interested if the only thing they can do after a week is make the computer count to 10 and dump it on the screen?"
Get them started on the classics.
Living With a Nerd
Coding isn't something someone else chooses for you, it's something you choose for himself. And it has NOTHING to do with him being a gamer. Relating "He likes to game" with "He will like to code games" is no less absurd than relating "He likes to game" with "He will like to be an electrician." Gaming and coding are two completely different things, only tangentially related by the thinnest of connections. At the very most, you might tell him that there is code behind his game. But if he is 14 and doesn't know that, he's probably too stupid to ever be a coder anyway (well, he might still be qualified to code for EA).
My advice? Politely tell your friend to ask his son what *HE* wants to do with his life. If the kid's answer is something reasonable (i.e. not "rap star," "sports legend," or "professional gamer"), then your friend should help the kid explore *that* profession, and not just assume that he's destined to be a programmer just because he likes to game. Programming is not the kind of thing you get into because some putz friend of your father's goads you into it.
Ironically, when I got into coding, my parents tried to goad me *OUT* of it (because I would code for hours at a time and they wanted me to at least go outside). Now that is how you know you're meant to do something!
SJW: Someone who has run out of real oppression, and has to fake it.
Find a game with good modding potential, and show them what they can do. The early ID games were where I started my programming, with simple scripts. Once you learn you can change things, the next thing is creating new things.
Velociraptor = Distiraptor / Timeraptor
If he is obsessed with games, then you don't have to teach him something he considers useful. Just tell him that coding a linked list will give him 200 exp points.
In soviet russia the government regulates the companies.
How do you get a kid into coding? Guess.
Mind altering drugs?
"Never let your sense of morals prevent you from doing what is right" - Salvor Hardin
I can't believe I'm doing this, but it has to be said:
Have you considered Crysis?
Android and iPhone OS's are the new Mac's and Windows back in the day. Get him an Android Dev Phone 1 (http://developer.android.com/index.html) or buy any of the cheapo androids out on ebay and have him start learning the API. It's awesome, easy, and he can create some really nice looking apps pretty quick. It's a great way to get someone excited about programming in this day and age.
I said "most" games.....Crysis is a benchmarking tool, isn't it? :-)
If you post as Anonymous Coward, don't expect a reply.
Tell your friend to man up and be a father. My son and I are building a custom case for a file server for the house, I have no art skillz but he does. Keeps his appetite for tech up without him doing the brain drain in front of the tube.
FYI - normal teenagers do not spend all their time gaming
Self Defense - A Human Right www.a-human-right.com
I may be too old, but I think the father can test the waters with his kid in a similar fashion to how I was introduced to programming: simple programs in simple programming languages. In school I was walked through "Hello, world" in BASIC and found it interesting. There's something there in the quick feedback between coding and running the code that will either trip something in the kid's mind where he is interested in this or he isn't. I say start with BASIC, Pascal, or Java, something relatively easy. Start with simple, pre-done programs that offer a quick reward for the beginning programmer. If it sticks to the point where the kid starts reading and experimenting on his own, then great. If not, hopefully the father will be open enough to explore other possible interests with his child.
I would be worried that the father would try and throw the kid into the deep-end of the pool right away, in which case the kid is going to develop an aversion to programming. Start simple with some basic flow-charting and some basic programs. Maybe get some electronics kits to see if hardware appeals more than software.
One note. As the youngest of three sons, I programmed on my own and in conjunction with a few friends. Generally speaking, until the news media starting hyping programming as a great career opportunity none of our parents seemed particularly interested in what we were doing so long as our grades were decent and we weren't getting in to trouble. Whether its programming, playing basketball, or anything else, so long as the father takes the time to participate in the activity with his child and encourage the child to pursue his interests (other than pro-gamer), I think good will come of it.
How do you get a kid into coding? Guess.
Take them outside, throw an exception to them and ask them to throw it back?
Get him into game modding. If the kid plays WoW, the modding community is great, and it was the only thing that made me endure the game for a year. WoW uses LUA, which is a great and easy to use language, couple with XML for interfaces and data transfer.
Another option is creating mods and maps for Civilization IV. With Civ V coming this year, with even better modding potential, this is really worth a shot. Otherwise, try to check what is writable for whatever the kid is playing. Coupling the gaming experience with the more "productive" time codding, is his better shot.
--- "When you gotta do something wrong. You gotta do it right. (Fighter)"
Get him one. See if you can find local clubs where they have competitions involving mindstorm and what you can do with them.
If you can invoke the inner gamer's competitiveness in him while taking up mindstorm challenge, you have introduced him to first steps of coding. Next wipe mindstorms firmware off it and load the java firmware.
Writing software requires a peculiar temperament. One must enjoy solving puzzles, be relatively immune to repeated assaults by frustration and failure, and be willing to sink your teeth into a problem and not let go until you've solved it. Then there's the whole 'thinking logically' and breaking bigger problems down into a structure of smaller nested problems thing. Some folks just can't do it. Their brains simply do not work that way. If the kid in question isn't already curious about programming, I'd bet money he won't ever be. It's not something like encouraging him to take up playing the trumpet.
Calm down already, it's a 14-year-old. Give him a chance to try it at least.
If he has any interest in creating something (game, interactive story, animation, etc.) it might be worth having him check out "Scratch" from MIT.
My pre-teens have played with it a bit - it can be pretty fun, and one can see how it introduces a lot of coding thoughts.
http://scratch.mit.edu/
"Scratch is a programming language that makes it easy to create your own interactive stories, animations, games, music, and art -- and share your creations on the web.
As young people create and share Scratch projects, they learn important mathematical and computational ideas, while also learning to think creatively, reason systematically, and work collaboratively. ...."
I found the social alienation and awkwardness of adolescence was a huge factor for me, but that might be a bit old-skool. :-P
Lost at C:>. Found at C.
There's nothing "special" about a person who writes code. They've simply learned how to adapt their minds around the way that a computer solves a problem. Sometimes, having to go through this exercise means that you get new insights into the problem. That's why I'm a professional programmer. Other times, it's just a dull drag to get'r'done.
Until I went to college, I was "self-taught" in programming. I learned a lot of cool, new things in college, and I learned a heck of a lot more when I started producing code for money. I have the "knack" for it. But you know what? When I look back at code I wrote even a few years ago, it sucked.
Why?
For one: programming is an art, and well, practice makes perfect. That said, everyone sucks when they start.
But the other one, and Joel Spolsky says this rather concisely: it's easier to write code than to read it.
Discouraging people from becoming programmers because you don't want to fix their bugs is just about the lamest argument I've ever heard. Bugs happen, man. If we had a magic formula for writing software, guess what? We'd write software to write software. No one gets it right.
But teach him to never silently swallow exceptions either, at least not without producing a log once in a while...
Rgds
Damon
http://m.earth.org.uk/
I agree with the other comments: if he doesn't have the interest, or if he doesn't have the aptitude, then trying to push him into coding is a waste of time.
That said: check out PyGame. PyGame is a set of libraries for Python, specifically intended for creating new games.
http://pygame.org/
Hmmm. I just went there, and it says that PyGame has now been ported to JavaScript. That probably makes sense, given the major efforts to speed up JavaScript in the new-generation web browsers.
At the PyGame web site, there are a bunch of games people have written, with source code available; and some of these games are half-done and half-broken. If he has the inclination to code, he might get interested in a half-done game and start fixing it up. Or even take a game that isn't half-baked, and start adding new features to it.
steveha
lf(1): it's like ls(1) but sorts filenames by extension, tersely
If he's been doing it for a week, and he's destined to be a coder, there's nothing you an do now to stop him.
OTOH, if he isn't going to pursue it and take it to the next level himself, he'll never be a coder. The most important point about good programmers is that they must be able to solve their own problems (that is, at its heart, what the job is), they have to be able to teach themselves, and they must do this continually for the rest of the their lives, or at least as long as they're still coding. If they don't have the ability and the drive to teach themselves, they will never be a good coder and it's a very bad idea to try to force them into it.
"Convictions are more dangerous enemies of truth than lies."
Give him the choice between: A. Writing pseudocode to mow a yard and see if *you* can "execute" it; or B. Mow the yard himself. Bonus: Either one can generate a living wage.
Part of being a parent and raising your child is making use of available resources, including discussion forums, to get information about your child's situations and possible ways of dealing with them.
When someone says, "Any fool can see
Visual pinball lets you code your own pinball tables and it's open source as well.
I really think that Borland C++ Builder is a great way to start, because you *start* with a GUI designer, and add event-handlers, and eventually extend funtionality.
It's a really easy way to lower the bar and you could get some simple UI-based games up & going with a minimal amount of (non-generated) code.
you can buy a number of cool sensor packs from MakingThings and he can program it easily with Max MSP to do things. Using Jitter to do image manipulation is even better, since he can edit images and videos.
Its pretty interesting. Its actually how I got into programming.
On the XBox 360? Look into "Kodu Game Lab" and maybe eventually XNA.
World of Warcraft? There's a rich XML-and-LUA-based modding system; you can start with "hello world" apps and produce richly customized user interfaces with complex tools added to them.
The Wii? Install the web browser, and show them a bunch of the games that are optimized for the special version of Flash that the Wii has, and then poke at one of the dev kits that works with that.
Really, just knowing that they're doing "gaming" doesn't tell us enough to know what might best serve as a bridge to other things.
It's way too late.
The time to get someone interested in coding was when it was possible for them to sit down with a computer and a copy of Compute! magazine, type in a game program source code, and then play the resulting game.
Without the tie in between coding (work) and the reward (gaming), the coding doesn't become fun, unless you are already bent in that direction.
That level of game, where you are pushing 8 bit pixels around, is, frankly, no longer interesting. At the time, however, it was state-of-the-art, and you could get your head around it easily because it didn't require a lot of abstract complexity to modify the programs. In fact, you usually typo'ed typing in the program, and it didn't do what you expected, so you learned to compare the source with what you had put in the machine, and got some debugging skills out of it and a working game as the reward. Constant exposure to this type of thing, and you can't help but absorb some of the syntax and code flow understanding necessary to take the next step and make the bad buy look different than they way the original programmer intended. Or change the game logic to the point that the game play is different, or you're getting huge scores compared to your friends because you did the right button/joystick sequence early in the game and activated the "cheat mode" you built into it.
Those days are pretty much gone. There is a very large divide between a small amount of ability and an interesting result, because the state-of-the-art has moved on, and there's now a big divide.
I find it really ironic that the most valuable programmers you can hire these days pretty much come from places where their idea of interesting is one generation back because the hardware and software they had to play with is one generation back, and they have a decade difference between our "old school" and theirs.
-- Terry
PHP Game Programming
http://www.amazon.com/Beginning-Through-Game-Programming-Second/dp/1598633600/ref=sr_1_3?ie=UTF8&s=books&qid=1275079894&sr=1-3
Beginning C++ Through Game Programming, Second Edition
http://www.amazon.com/Beginning-Through-Game-Programming-Second/dp/1598633600/ref=sr_1_3?ie=UTF8&s=books&qid=1275079894&sr=1-3
Game Programming for Teens, Third Edition
http://www.amazon.com/Programming-Teens-Third-Maneesh-Sethi/dp/1598635182/ref=sr_1_6?ie=UTF8&s=books&qid=1275079894&sr=1-6
There are some resources out there designed to attract the "gaming generation" into computer programming - it also happens to be a professional interest of mine (I teach primarily first year computer science).
Perhaps the most famous would be Alice (http://alice.org) - a drag and drop 3D programming environment.
Scratch (http://scratch.mit.edu) is a 2D drag and drop environment
Greenfoot (http://www.greenfoot.org) is a 2D Java programming environment
Env3D (http://env3d.sourceforge.net) is a 3D Java programming environment (Disclaimer: I am the author of this tool) - It makes programming in 3D very straight forward, especially for beginners.
Have fun!
This is the age where boys seem to be "lost" the most, and parents seem to get the most concerned about them.
I work with boys (save the jokes), and I've seen it happen in several cases, right around this 13-15 age range. They suddenly find something they're interested in, and they just DO it.
In one case, it was a kid who just suddenly found video games boring, and moved on to photography and writing. He's very creative, and he found this very rewarding.
My own son; was a Guitar Hero monster. And I told him (joking): "if you spent this much time playing a REAL guitar, you'd be a really kick ass guitarist, instead of just beating your friends at a video game that will be obsolete in 2 years. Which do you think you'll be thankful for, when you're my age?"
He sold his xbox360, and all his games, (I miss Halo 2. . . ) and instead of spending 6 hrs a day playing video games, he plays his guitar for 6 hours a day. And he's pretty amazing. Even if his dreams of rock stardom don't work out, he's going to have a skill and a developed talent he's going to use the rest of his life.
So - don't "push" him in any direction. But DO expose him to other things. (I think it helps if some of the exposure happened before video games came in). He'll push himself in whichever direction works for him.
My armchair-psychologist idea of why this happens, is they're still searching for an identity. They're trying to figure out who they are. You can also make them somewhat accountable for the decisions they make too. (ie. there are consequences to spending all your time on video games. . . failing at real life).
These are my friends, See how they glisten. See this one shine, how he smiles in the light.
I think anyone who spends a lot of time on games past about 16 years needs some help growing up. The need to play so much indicates (to me) that they don't have enough interesting, more important things to think about.
I think you may want to check the main target demographics for every $300+ console since the PS1.
Also, "important" is subjective. Unless you're the president, the pope, or a nobel prize winning physicist, chances are the stuff you're working on that you think is "important" is probably not worth a hill of beans to the rest of humanity at large.
It's a subjective argument, of course - but being a parent means trying to guide a child to make decisions that will give him or her a good, rewarding life.
Personally, I think I wasted far too much time in the 90's watching TV and playing games. I don't blame anyone for the decisions I made, but it really makes me think about how I want to approach the whole thing when I have kids. I love playing games, and I want to build an arcade machine and play more games. But I also recognize that games are killing my free time, even standing in the way of other things I want to do. For that reason, frogzilla's perspective resonates with me. As much as I like gaming I feel like it's unhealthy to get drawn into it too much. I don't want that for my kids.
As for "important" - I build models, and my wife is an artist. Neither pursuit is "important to the world at large" - and sometimes I wonder if what I do isn't even sufficiently personally rewarding. But I believe it's important to develop active interests as opposed to passive interests. Enjoying work that others have made is fun but I believe it's important to learn to make your own contributions as well. Otherwise, you're just a slave of sorts - hanging forever on that next episode, the next playoff, or the next new release. Making things yourself is more challenging - and probably more expensive - but the potential rewards are greater as well.
Bow-ties are cool.
Just because he plays on a computer doesn't mean he has any sort of knack for programming.
Better than coding might be buying him an X-acto set, some Duco Cement, some Testers paints, and some various model kits - a rocket, plane, boat, car, etc. Mix it up and get him a four-channel R/C setup and let him tear some s#!t up!
Building stuff you can play with is immensely rewarding and not confined to coding games (or other programs).
Hell, even something really useful like a carpentry class. My school system had them starting in 8th grade.
Comment removed based on user account deletion
It's a free and open-source Quake-like FPS. Usually the progression goes like this: Playing -> Mapping -> Scripting -> Coding. I've seen that progression played out several times in the community and myself (full disclosure: I moderate the forums and Quadropolis.us, the primary source for maps, mods, etc.).
Mapping is done in real time and in-game. A mere tap of the E key will switch between editing and playing, so you can see and test what you're doing immediately.
It's also designed to be light on resources. I use the (very underpowered!) open-source radeon driver to drive my Radeon X1600 Pro, and I can get a consistent 30 FPS with the eyecandy barely dialed back.
For a little more detail, here's the description from cubeengine.com:
Have you tried Alice?
I've abandoned my search for truth; now I'm just looking for some useful delusions.
I enjoy my regular trips to the toilet thoroughly. Every time I feel relieved afterwards and I tend to go several times each day.
Doesn't mean I want to install toilets for a living.
Just because the kid wants to play games doesn't mean he wants to make them.
Quite honestly, if the kid wouldn't get excited about his first ever computer program counting to 10 and dumping it on screen, then perhaps he's not the type.
Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
You really think he spends all those hours in his room gaming?
Confucius say, "Find worm in apple - bad. Find half a worm - worse."