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.
How do you get a kid to play football? You take them outside, throw a football to them and ask them to throw it back. If they like it, they do the same thing with their friends while you're not around.
How do you get a kid into coding? Guess.
Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
Modding games, of course. Anything Unreal-based is a good start with principles of inherited member objects and such, which is all the rage these days.
However, don't ever go HL2. Source is absolute Hell. With a capital H. Anyone who tells you it's the easiest to work with has no idea what they're talking about.
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
Try to get him pointed towards an addon or mod for whatever game he plays. If he writes something successful he'll start to spend more time maintaining that than playing. If he does it as a project with you or some of his peers it'll be more fun.
Teach him how to write addons for World of Warcraft in LUA scripting
Back in my day, I had to hack up my underpowered 486 in order to get Doom to run decently.....knowing the ins-and-outs of what drivers to exclude from my autoexec.bat and config.sys files in order to have enough memory to run it. I learned a good bit about memory and learned quite a bit ;-)
Of course, most hardware today is powerful enough to run most games without hacking....
If you post as Anonymous Coward, don't expect a reply.
"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?"
I would suggest starting with some potty-training.
Find a problem that he likes, like Sudoku. Then help him think his way through and program a basic Sudoku solver: formalize the process of solving a Sudoku board in a way that a computer could do it, and take advantage of the opportunity to teach him things like backtracking. Work together in a language like Python where code is incredibly easy to write and readable. This will possibly not only get him interested in coding, but help him tremendously with his logic and mathematics skills.
MATLAB is great for learning because you can graphical results can be easily produced and the syntax isn't as pedantic as something like C.
This is a great learning tool, uses interactive 3-D models right away, and introduces basic logical structures such as for and while loops, if/else statements, and objects. HOWEVER, this is a very, VERY, basic language and should be used only for teaching and acquiring interest. You can make basic games and movies with it, but as it isn't really text based this may not be a great representation of "real" coding but rather an intro to the concepts. The language is called ALICE, it's free to download, enjoy.
Do not argue with an idiot. He will drag you down to his level and beat you with experience.
. . . I hate when I see folks who have no business coding, trying to code. It hurts them, when they realize that they don't have the knack for it . . . and it hurts me when I have to clean up the mess that they leave behind.
Schroedinger's Brexit: The UK is both in and out of the EU at the same time!
Maybe get him into coding game modifications? Seeing results of coding in games he likes and changing them as he likes. It worked well for me few.. erm.. ten years ago.
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.
It depends on the game that he plays, but if, for example, he plays World of Warcraft, you could start him off with some basic C++ coding and let him know that learning C++ makes learning LUA much more simple, and LUA is what is used to make the mods that he most likely has downloaded, such as threat meters, stat trackers, raid interfaces, etc.
I've had great success with my teenager with Game Maker from YoYo Games.
http://www.yoyogames.com/
Windows only unfortunately, but excellent. It'll teach simple variables and loops to start with, with instant results, before leading into more advanced coding as his skills and ambition increase.
It's a Unix system - I know this.
You can find some logo implementations online. And when he's tired of drawing things with it, move him on to something like Pascal or even Python. And if he's more into the visual stuff, throw C# at him. He'll have working applications in a few hours that can do more than the super basic stuff and there's tons of videos out there to teach him how to do even more.
It'll give him a chance to show his friends something he did. If the games he's playing have APIs, maybe he can throw together something to utilize those APIs to do something that helps him and his friends with whatever game they're into. Eve Online makes a ton of information available security via their API and I know WoW has all sorts of third-party add-ons.
In other words, link coding to what he already enjoys and show him how coding can be useful for doing what he already does, but faster and more efficiently.
-- "Government is the great fiction through which everybody endeavors to live at the expense of everybody else."
If they aren't getting a kick out of getting a computer to simply print out some numbers, programming is not for them. Give up yesterday...
Try this head fake:
http://www.alice.org/
I love playing basketball, but I have no interest in working for Spalding, Nike, Reebok or Adidas.
it's down right now, but when it's not, it's a very easy way to get results very quickly without, you know, wasting your time learning crap:
http://love2d.org/
(mod as you wish, I'm posting this now since I might forget later)
Buy him moddable games and show him a few good mods.
Read radical news here
Ok, so not only do I have experience with kids coding, I am working with a high school kid now as the intern at our office, and I have succeeded in getting him interested. First advice, work with Flash and AS3. Syntax same as Javascript, easy to parse. Tons of books and resources. In 2 months, coming in 2 days a week for 4 hours at a pop, the kid (with my help) wrote a pretty good first game. 2nd point: approach it like the suzuki method. Learn with your kids.
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.
Lock him out of his games with a script that will require his learning to code in order to circumvent.
Depending on his skill level and interest, I would try Squeak. Scratch and Etoys work well with younger kids.
Someone else said you can't force someone to program. I agree with that, but people don't always know what they're going to like. Give him things to explore and maybe he will become interested. Try not to be offended if he doesn't.
My dad sat me down when I was eight years old with the "Turbo C++ Bible" and had me copy the first example out of the portion dealing with graphics, this changed my life forever, but had very little to do with my dad and everything to do with the fact that I became immediately enraptured with my ability to make the computer do what I wanted. If that facet of programming doesn't have any sway with your son, there is probably a slim chance that he'll self educate (as is mandatory for anyone who wants to program professionally) but there is a trump card that I can think of that might help you out here: mobile development. I bet if you got your son an android device under the condition that he would learn how to develop applications for it it would turn out well for both parties. The main advantage here is that Android development is easy, and you can immediately interact with something on your phone that you've coded, which is way, way, way more engaging than white text on a black console, which is how most people start out. As a parent I'd say you don't have the ability to force your son to be a programmer, you do have the ability to enable him though.
I am trying to get my nephew starting with programming ( okay not exactly programming but scripting ) on python. Very english-like syntax and very practical uses like auto sending emails for different tasks, logging in to websites etc etc Maybe at some point he will pick up and learn Java/C/C++ etc etc!!
You can try getting him to install XNA Game Studio (free). You can write some simple games with the first couple of tutorials.
However, if he doesn't really want to program he'll quickly get bored and go back to gaming. But of course, not everyone is destined to be a programmer.
Have him start on a game creation suite, like Game Maker, Game Editor, RPG Maker, Construct, etc.
He can make a passable game without any coding, but once he wants to make it more interesting, he'll be throwing scripts in. That will teach him functional coding, which is easier for a novice to sink their teeth into. Afterwards, they may get proficient enough at that that they'd be willing to take a crack at more complex stuff.
Seriously telling him to just "learn python" is about as useful as telling an athlete to just "win the match".
I too grew up with Apple II's and C64's and programming had a certain allure that it just doesnt have now. How does a kid get into this today? I don't know.
The only thing I can think of is that my kid(s) will see that I am doing it for hours a day and wonder, what is so interesting that daddy spends all day doing it?
They have to have their interest sparked first. It has to start with a question.
Kid: What are you doing?
Dad: Well, I am programming. I'm telling my computer what to do.
Kid: Can you make a game?
Dad: Yes. It takes a little while though.
Yes, its likely that games are going to be what gets a person into programming these days. Heck, its what got me into it, even though I don't make games now. Making games is like being a rock star -- very few people get there, but there's plenty of other things you can do.
The fact that a kid likes games doesn't mean they have any interest in making the games. But if they ask, hey how does this work? Then you have something.
-- Senior Software Engineer, Attorney appearance services, locallawyerapp.com.
What worked for me was my dad gave me a copy of Zork and a copy of Quick Basic.
My thought process went:
"This is fun, and doesn't seem so hard I can't even imagine where to start."
If text adventures hold insufficient appeal, some more modern versions of surmountable tasks are:
WoW mods
Neverwinter Nights module
Get the kid hooked on Eve and then make him learn VB to build profit & loss spreadsheets in Excel
is competition good, or is duplication of effort bad?
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
Look at the MIT Scratch programming lanuage. Free environment for various platforms. Over 1 million projects posted now by kids worldwide.
http://scratch.mit.edu/
The following has been useful in a classroom setting: http://scratch.mit.edu/
Just like the intro high school courses.
Well, sourceforge has a list of 1000+ games, and you can easily find a project where work has halted.
Like phaos for example. If you don't get a reply from the maintainer at all, just fork it.
That'll certainly kill any interest in coding. Flash is a piece of shit.
Maybe the way to do this is to choose a problem that can be seen as interesting and then to go through coding up a solution for it together, concentrating on the algorithm of-course.
The problem surely is finding an interesting topic. When I taught myself coding I didn't have anything better than doing it to create computer games, the kinds of games that people played on Atari or Commodore or Sinclair or Spectrum computers about 25 years ago (goddamn, that was long ago).
I didn't have anybody to pose a more worthwhile problem for me to solve, so it progressed for me from simple games (which I wrote on paper, since I didn't have a computer), then I got my hands on a great Assembler book and became interested in doing the same thing but better, with my own graphics libraries, low level interrupts etc. Then I wrote tools to manipulate files, to cut them, to sew them back together etc. Then I wrote my graphics editors, text editors, calculators, language tutors even a rudimentary spreadsheet to keep track of the spending in the family, we even used it.
I think you need to choose a subject, be it an engineering problem, a physics problem a math problem, something about learning languages or writing tools, I don't know what kind would be interesting for a child that old, then build a solution together.
You can't handle the truth.
When I was 12 I asked my dad to buy me a ColecoVision to play games, but instead he bought me a Spectrum clon, which shipped with BASIC.
It wasn't until my first BASIC lecture at school that I got attracted to programming. After it I went home to try the code I had just learned. I think you can't force him, he already has the tool... what about the lecture?
Get him hooked on a game that has it's scripting system exposed to the user.
Just off the top of my head:
Any Infinity Engine game (i.e. Baldur's Gate)
Neverwinter Nights &/or NWN2
Dragon Age
The RPGMaker series of tools
The thing is, if the kid doesn't have an urge to create as opposed to just consuming, it doesn't matter what you expose him to. If you don't have the creative urge, you just aren't going to be interested in coding.
There is a war going on for your mind.
A game in one line. Clear the screen go to the bottom, type RUN. Use shift to move your ship left and right and avoid the rocks scrolling up from the bottom.
0 poke 32788+pos,65; pos=pos+2*(peek(151)&1)-1; print tab(rand(36)),"XXX"; if peek(32788+pos) ==32 goto 0
Actual constants and statements may be slightly off, it is years since I went into stores and typed this and and quickly played games on the sterile display model. It was practically the same code on TRS-80s as well.
Another good short one is the animal guessing game. But a C64 emulator and box of old Commodore or Computes magazines should keep them busy for a while.
Have him download Hacker Evolution: The Untold and just wait.
Mostly harmless.
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.
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)"
My 14-year-old has expressed a mild interest in programming, so I'm going to load up VPython for him to try. The language is easy to learn, and he can make things "happen" on the screen very simply. It's a first introduction to watching what happens in loops, conditional statements, and then graphics terms like textures, polygons, and lighting. Sounds like a perfect introductory mix. I would have loved such a thing when I was getting started.
10 REM Hello World in BASIC
20 PRINT "Hello World!"
Also, please teach him to hate Java and Flash. I'd consider it a personal favor.
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.
I would try introducing him to Scratch http://scratch.mit.edu/
If you leave it in the medicine cabinet, then they will find it and start to do it unexpectedly quickly.
- Emily Litella
A lot of people who are 'obsessed' or 'addicted' to gaming are in it for the reward system. It's almost arguable, but also pretty obvious considering how so many games have managed to successfully up their replay value simply with the addition of "achievements" that reward a player for doing random crap.
Of course, life has its own reward system as well, but those that are more responsive (read: susceptible) to instant and simple gratification generally take to games very well (especially RPG's).
If those are the types of games he likes to play, I would suggest looking for programs/contests that reward a person for learning writing programs.
A great *dip the toes* example are those "hack this website" type games, where you keep getting more and more links, with progressively more intricate and involved puzzles to get either a password or a link to progress in the game. Some levels involve tweaking a Flash program, some involve looking at the HTML, and some levels you're trying to find a bug in some javascript or something.
http://www.hack-test.com/ is an example of such a game.
The next step would be to integrate this artificially constructed rewards system to better align itself with reality. Look for an event similar to google's Summer of Code program, but maybe on a more local or attainable level (once again, it would have to be a relatively simple task with a reward involved, not yet something every other coder on earth knows about and wants to win). (Hell, given how much programming he's learned, this might be where you'd have him look for something called a "job". Money is a ridiculously good bonus reward if you already enjoy the puzzles you get to solve on a daily basis).
Essentially, you might have to put in a bit more effort to make programming look like a game, but ultimately once programming becomes easier, the tasks become more effortless, and the rewards become more self-motivated and possibly even... "rewarding".
Anyway good luck! And don't forget to work some exercise into it too ;)
Playing games and wanting to program are 2 different things. Heck, using a computer and wanting to program are certainly NOT related. So, if you want to know what is a good way to get to introduce your kid to programming, see if he's even willing to learn to program and if he had a choice, what would he want to do? (meaning what type of program he would want to write) so, if it's a no, stop wasting your time. Truth is, in my honest opinion, all kids should know some basic form of programming, at least the concepts such as loops, conditional statements, etc.. You never know when it can useful, but anyways, I digress here. Try and get him to do something cool in JavaScript at least, as a starting point, tons of online tutorials, all free! :)
Assuming he truly is interested in programming, then then let his ambitions dictate which path he should take. Once you know what it is, then research to see the best way to get there (meaning the topics to learn and the order in which he must learn them). But don't assume that playing games is the way that leads to programming.. That's like saying that because I love to drive a car, I also love to fix them and/or build them. So wrong :)
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 would look into installing Visual Studio C# Express 2008 and XNA Studio 3.1. This is a completely free setup for a Windows environment that has some incredibly easy examples and walkthroughs. http://creators.xna.com/en-US/ Your child can have their first 2D game up and running in a day. This will help build confidence and make them want to learn more on their own.
I'm fed up with this lame argument. Sure, you can't create a commercial quality game in a week, but you can write cooler, better, software than at any time in the past.
Hell, yesterday I wanted to explore some ideas about optical flow and motion tracking. Downloaded ffmpeg, wrote 120 lines of python, and now I'm making movies that pretty clearly show if my ideas are good or bad. In the old Apple II world, I'd still be at the "get a sprite on the screen" stage after 48 hours.
If the kid wants to write code, find him some hackers to talk with (user groups, local uni, etc) they'll show him the tools and he'll go wild. If he doesn't want that, well, bummer, let him play video-games (most people are not hackers.)
Gold farming.. or grind-scripting or whatever the kids call it this day. Making bots.
Anon
show him he can make hacks to troll people.
Tell him he can play all the games he wants just he has to make his games work on Linux, then throw him a book on C and tell him to have fun. Oh and he can't use Wine or Cedega lol
Start by not letting him play so much games first.
You won't magically want to code when you are playing games.
Just get him php. Start with simple stuff like echo 'blah blah';
Considering he is 'in to' video games, he is probably chasing something else than the code behind them.
First, what kind of games does he play? What seems to be the common link? Since you / your friend are quite possibly totally blind to what the kid is telling you by his actions and simply trying to mold/manipulate him as you will, consider these possible scenarios.
Does he play only FPS/3PS type games? If so, he is probably acting out the instinctive desires which are common at his age. If he is actually good at such games, he might be a good candidate for the army, or similar.
Does he play only online/multiplayer games? If so he may merely be socializing, and not even particularly like gaming more than the average person.
Does he play only RPGs/Escapist games? If so, he hates his life and wants to escape. This is rather normal for someone his age, but tells you nothing about his long term goals. You may be able to channel this into a desire to code (which is in itself a decent escape), but you may well end up redirecting him from his true calling, sending him to a life a a mediocre coder (as in this vulnerable state, he is quite open to suggestion). (Note: Some RPGs are really logic games in disguise)
Does he like a wide variety of games, but favour ones with a strong VS AI component, or an algorithmically unique/interesting engine? Does he enjoy finding bugs/breaking the game/AI? Then you have found a coder. Give him a slight push if you want, but he will find his own way regardless. Every game he plays is teaching him how computation works intuitively.
Does he favour games with a strong logic/strategy component? Is he actually good at them? This tells you he is intelligent, and interested in expanding his horizons. There is much that he can learn from such games, and he will likely resist other activities which distract him from this intellectual pursuit. Try teaching him some informal math related to a problem of a game he is currently playing, and if he seems interested, you can teach him algorithms related to that solution/his game.
There are many more cases... but hopefully this will give you some hint of how to look at the child's actions.
Translation: I have a 14-year-old son, who spends all his time gaming, unlike any normal teenager who spends their time socializing with other real people. Congratulations dad, you son is going to be just like you.
But yeah, like OP says, you can't expect him to want to code just because he loves to game.
Just as you can love to drive cars and not want to be a mechanic. Or love sex but not want to be a father. Or love food and not want to be a chef. etc. etc. etc.
Tequila: It's not just for breakfast anymore!
Seriously? This is a *great* time to learn to program! Turn him loose with a JavaScript library and a good JS book (they do exist!) and he'd be able to have cool animated web effects online for all of his friends to check out in a week.
It doesn't hurt that JavaScript is an effin' gorgeous prototype-based fully object oriented language either. Seriously! All the ugliness comes from dealing with the DOM, which the libraries (my favorite is jQuery) handle nicely.
More to the authors point, I don't really know how a kid would figure out that he's into coding when it's so far removed from what shows up when you turn the computer on these days. I think I'd run the TRS80 Color Computer emulator and show the kid how a few simple programs work. If he wants to know more, then I'd try to find the original programming books, Basic, Extended Basic and Disk Basic if they still exist in some form. They were easy to read for a 10 year old and allowed me to teach myself programming - of course, I was extremely interested.
http://en.wikipedia.org/wiki/SmallBASIC
or
http://en.wikipedia.org/wiki/Microsoft_Small_Basic
A large part of what got me into programming was ZZT, with its ZZTOOP language.
Perhaps there's something like it out there today that's more modern?
There's no -1 for "I don't get it."
We have no idea how to keep people interested in tech, we are here because we can't help it. I'll never forget the joy of my first self-designed C++ application, that prompted for a user's birth date and responded with how old they were. I was hooked... Being interested in playing video games is no guarantee that a kid will have interest in the language of logic.
anyone mentioned processing.org ?
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
I had a friend that I thought would be interested in coding but had not had the opportunity yet.
I had a fine time introducing him to programming by sitting down and team coding in JavaFX for an hour. I am no expert, so we had to experiment and get over the "Failure is not an option" mantra and made all sorts of mistakes.
JavaFX is very visual and provides some instant gratification. We set modest goals. "Lets animate this circle and make it move around that circle." We went from there.
JavaFX lead nicely into Java. Sadly, Java was a bit too dry for a one hour newbie. Ah well.
There are lots of languages out there but I think which ever you pick, make sure that you can get something presented nicely on the screen quickly (and not just in a command shell).
Game Maker (http://www.yoyogames.com/gamemaker/) is something that worked well in my family. It's reasonable introduction to programming in general and hopefully gives a kid enough reasons to try something more challenging.
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."
You had the wrong idea by the end of the first sentence. At age 14 spending all of your time gaming is not normal, so getting him to take up coding is not going to address the problem. Which is that he needs to find some non-electronic source of entertainment. Sports? Education? Girls? Self-abuse (nah, he's probably already spending most of his non-gaming time doing that).
The point is that endless hours in front of a monitor (or whatever) isn't doing him any good and encouraging him to find another excuse to do so won't help.
Show him Pygame, he can have a simple game done the first afternoon.
There used to be a great little game in the DOS days called CROBOTS, where you built a robot that would go into an arena and fight other robots. The catch was your robot was completely autonomous and controlled by a C-like program that you had to write. There was an API for moving, scanning, and shooting, and you had only 1000 bytes to make the most of it. Once the arena fight began, your robot was on its own, and all you could do was root for it as the other robots pounded on it. You could also run in batch mode and run 100 or 1000 matches to get some stats on how well your robot was doing. Best of all was getting together with some friends and having a tournament.
It came with a bunch of stock robot models that you could practice against. They were all open-source, so you could steal from their code to get ideas for how to write your own robot methods. There was rabbit.c, who ran around so fast that nobody could hit it. There was rook.c who ran in straight lines like a raster scan, strafing everything that it passed. There was sniper.c who headed for the arena corners to reduce its exposure and then picked you off from there. So it came with some useful little algorithms to copy from.
It would be awesome if someone were to update that whole concept with some up-to-date graphics and networked play. Maybe someone has, and I've just never heard of it?
bank wire transfers.
Good luck on your mission.
Yours In St. Petersburg,
Kilgore Trout
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.
I got into programming because video games were not that interesting. I usually play a game for maybe a week or two and then never touch it again. It took me years to beat some of the classics because I'd leave and come back to them. I must have two dozen CRPGs that I have left unfinished just sitting as save games on my PS1, PS2, and GC memory cards.
“Common sense is not so common.” — Voltaire
Someone had to do it.
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
tell him that it is his only game system until he moves out. Make sure to print out at least 50 pages of documentation and tutorials for creating games. Things should become interesting :D
Once you start despising the jerks, you become one.
What lots of folks above me have said is true: Not all gamers want to program, and the relationship between the two is very thin. One thing I have found though, is that the type of person who likes to break the game down and figure out how figure out how it works tend to be the type of people who enjoy programming or mathematics.
If he's the type of gamer who spends as much time out of the game with spreadsheets figuring out how the game calculates things so he can maximize his effectiveness (a person who enjoys logical problem solving), looking at programming may be viable. If he's tea-bagging people in Halo for 16 hours a day, it's a lot less likely.*
*My anecdotal experiences with tea-bagging Halo players should not be taken as actual research.
"Always forgive your enemies; nothing annoys them so much." - Oscar Wilde
Programming at the very weakest level is logic, logic and math are about the same thing. Any programmer worth anything can do advanced math, like calculas. Most tech schools don't teach advanced math, thus most tech school programmers will always stay at code monkey level except for the few that have the right mind. Yes yes, you don't need calculas to program most things, but it is the same thing, abstraction of logic, understanding limit law shows how this symbol means this sequence of actions. Same as this function means this sequence. It teaches the same types of concepts.
Game playing is reaction usually, some games have some logic, others are very logical. If he likes logical games he may like being a programmer, if he hates logical games and only wants games like FPS and "Party" games odds are programming is not going to entertain him.
Why should a kid be anything other than a kid though. Push children to try new things sure but do not try to choose their passions and careers, they will be far more successful if they love what they do, so exposing them to a variety of activities is far better then trying to make them something specific. Code monkeys are becoming a dime a dozen, and sure they make fair money, but then so do doctors and lawyers, and lawyers are useless as people. Life is too short to worry about how much money someone makes beyond professional level income, (at least 50K where I live, which is to say at the average income across the board). Most programmers make that, if they are any good they make more than that, but so do a lot of people.
Seriously - Pygame is MADE for your question:
1) Python itself was developed as a teaching/learning language.
I grew up bruised and battered by Atari BASIC on the 8-bit computers... I would have LOVED something like pygame back then.
2) Pygame is portable.. you're not tied to one particular platform... works on Windows, Mac and Linux.
I think PyGame even ran on the PS3 versions of Linux... before Sony decided to retract that feature.
3) Python's well documented:
http://www.amazon.com/Beginning-Game-Development-Python-Pygame/dp/1590598725
4) You DON'T have to write just games with Python or PyGame. You could make any kind of reasonable desktop application with it, although for non-game use I'd move on to some other binding like PyGTK, PyQt, or wxpython.
Don't listen to people who put down Python... if it's good enough for Google and Yahoo, it's good.
(NOTE:By the above, I'm not advocating any programmer stick to just one language.. I'm just answering the original question)
waterboarding 'till s?he agrees?
Visual pinball lets you code your own pinball tables and it's open source as well.
Just a thought,as a very marginal script writer. Get him a programmable keyboard (Logitech G-15?) Help him to make macros to improve his gaming. Two benefits, it give dad and son some 1 on 1 time. If the boy has the tech gene it gets him started with something really applicable to his game and having fun (together?). It would require dad to learn some about the game to script it though. World of Warcraft can be scripted moderately well. A caution though, there is a reason it's earned the moniker of 'World of WarCRACK' ;0
Try Scratch. It's a great introductory coding environment that allows kids to make cool things relatively quickly via programming. It's free. And most of my students love it!
I think a lot of people trying to get video game minded kids into gaming make the mistake of thinking that they want to make games. It seems like a logical step, but the reality is that game programming is exceedingly difficult. Generally the kid gets disenchanted with their lack of progress and never thinks to try their hand at programming ever again. What you have to consider is the types of games being played, some games represent very formal problem solving techniques, similar to those used in many methods of programming. Instead of telling him to modify a game thats 15 years old by painstakingly placing bosses and enemies, see if they might be more interested trying to figure out some puzzle problem with a program. Not only may this help build their confidence as a coder, in that they actually can make something that works, but it also generates some really good programmers. I am a 3rd year phd student in computer engineering/science and often wish i had the game solving mentality of some of my go playing colleagues. In essence, and at the risk of sounding a little zen about gaming, gaming is not about the game so much as it is about the challenge.
------------start flame war here------------
unfortunately it seems games are moving further from thoughtful problem solving and more toward gaming as a sport of reaction time, and practice.
I have always loved computer games. By the time I was in middle school, I had ideas that I wished I could make into playable games. Google RPGMaker or even GameMaker to see what programs I played with as a kid, allowing me to create my own Final Fantasy-style 2d games. Note that these were for myself and friends to play with only, not to create games to sell. But I wasn't in it for the money anyway.
Obviously, these are simplified codes - reminiscent of Visual Basic, imho - but they still contain many fundamental and important concepts. You make almost all events happen in the game through the use of boolean switches, if-then-else fork conditions, variables, loops, calling events, etc.
As I got older, I took programming so I could learn more and to understand better what goes into the games I played. Anyone here ever play Neverwinter Nights? The whole game's code was C++. If you knew what you were doing, you could modify/create code to run scripts and do whatever you wanted. Then, you could play the very module you had just created with the effects or elements you had just designed. As a gamer, I can tell you I have personally found that there is nothing more gratifying than designing something for yourself and others to play.
Liking games is the first step to making games. Making games is the drive that leads to learning programming.
"How do you keep them interested if the only thing they can do after a week is..."
Then keeping them interested is not your problem. Getting them interested in the first place is your problem. Would you ask a football player if they want a career mowing the lawn, or laying the chalk? When he learns to drive a car, are you going to suggest he becomes a mechanic? How about when he calls his girlfriend? Are you going to suggest being a telecoms engineer or a gynecologist?
My dad bought a computer when I was 11. I wrote my first text-based adventure game when I was 11. When I was 14 I made my dad drive me 50 miles to the only place in the country (the UK) that sold a hardware debugger for my computer so I could debug assembly language properly.
I've worked programmers who didn't start programming till college. Their heart just isn't into it and it shows. I get frustrated with them, and they get confused by my passion and excitement.
You’ll hit the basics: input, output, conditionals, arrays, looping, functions/subroutines.
Plus, you’ll introduce him to the wonders of the pseudo-random number generator.
I’m using BASIC-like sample code, but it works just as well for just about any programming language. Let him do most of the work, but guide him through the process... the programming shouldn’t be terribly difficult.
Start with a 2D 10x10 array, say. Draw it out on paper as a grid. The grid represents rooms. Draw doors in some of the walls so that there is a path from the start (0,0) to the finish (9,9)... let him do it. Every room should be possible to get into, of course, and you need a path from the start to the finish. In each box representing a room, he looks at the doors and writes which directions you can go from that room: N, S, E, and/or W. Then he creates the code to build an array:
etc.
Then create another array for what’s in the rooms:
Then set up variables representing health, location, and loot, and start a game loop.
Similarly for the treasure, monster, and food rooms, he can make some imaginary monsters to fight, and use the randomizer to decide which one you meet; the randomizer can decide how much treasure you find, or how much health the food restores. The monsters will be the most interesting; he can use some more arrays to name the monsters, tell how much health they have (or, it can be random); turn-based combat will deal random amounts of damage to him and to the monster; once the monster is killed, there can be a random drop (food or treasure, of a certain amount). He could also get creative with the food or treasure by making different items that can be found and heal a certain amount or are worth a certain amount, or he could just leave it simple and say you found some food and it healed however much health it randomly decided. Once you have been in a room, it should be reset so that it contains NOTHING; this way revisiting a room will not give you another treasure or monster to fight. You could also set a room to equal –MONSTER, and then print something about a stinky dead monster on the floor if you come back through the room.
To actually play the game, you use the map that you made on paper; keep track of which room you’re in, and maybe which ones you’ve visited. The game should tell you how much treasure or health you have. If you die, the game should end and print something appropriate (or inappropriate, if that’s his sort of humour). If you successfully
Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
I have a couple friends who work for Video game companies. One's programmer and other artist, the programmer is still a programmer, the artist is now a producer. I have known them to work anywhere from 40 to 80 hours a week at times.
I wouldn't push anybody into programming when they may not like it, but if you want to see if they like to program there are a bunch of very simple languages out there to try. I know another friend has started one of his kids on http://www.alice.org/.
You have to remember there are more jobs in the Video game than just programming, find out what your child is interested in and see if applies to the industry.
Just one more thing here is a human interest story that happened about 6 years ago with a big company http://ea-spouse.livejournal.com/274.html
When I took classes in high school, they used something called JCarol to teach us Java. I agree with the other post that you shouldn't force the kid to learn to code, but you can always show him it and see if he is into it. He could learn Java via JCarol, or if he wants to code games you could teach him C#/.NET and get him onto the XNA Framework. Don't push the kid into anything, but if he shows interest, those are at least a couple of options that he may be interested in. Talk to him.
Start with Alice 3 easy to learn and game driven.
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.
Get them Carnage Heart http://en.wikipedia.org/wiki/Carnage_Heart. There are a couple of flash based games out there that have programming themes to them that would also work. Next get them Visual Studio Express and pick an entry level C++ book then a DirectX book, or if you really must, OpenGL.
Show the boy some easy PHP stuff on a server and some bash he can show to friends (or annoy them with). Like echo the referer > a file... or redirect all requests to one php file and put the requested URL in a text file to be shown there as a "strange instant chat"... or grab text from the internet and the regex fun you can have with that...
You'll soon get him hooked and all you have to do then is lean back, look the other way and have a good lawyer ready for his first backfiring internet fraud and/or cyberstalking attempt (girls at that age LOVE personalized phishing - it's so much more romantic than the random default phishing from bots that you can get everywhere nowadays).
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.
after the child mastered the count-to-10, it can't hurt to point to http://ace.delos.com/usacogate . Anything beyond point-ing is point-less...
and inform him that hes four fucking teen years old and should be playing outside.
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
http://en.wikipedia.org/wiki/Valve_Hammer_Editor
I would suggest HTML. It's not very difficult and it wouldn't be hard to start from scratch and create something that others would find interesting. Simple programming concepts could be introduced through JavaScript. Best of all, the entire setup requires nothing more than a computer, a text editor, and a browser.
Hunt down an oldish game called Colobot. Windows only game. Its a typical "world exploration" game but with one very interesting addition.
You can either control the myriad of robots manually, OR... program in a very C++-like language and let them "have at it".
The game encourages code re-use, so once you've coded a particular operation, you're encouraged to re-use it for subsequent levels.
One of the most fun coding experiences I've ever had.
If you enjoy both gaming and programming, you're naturally going to attempt to program a game at some point... but note the "if" there.
Simply enjoying games doesn't mean you want to build them any more than enjoying movies means you want to direct or act in one or liking cars means you want to be an engineer or mechanic.
To be a coder, you have to like logic, puzzle solving, and the joy of automating stuff that sucks to do manually. Most coders start off by saying "hey, I want to build this", and figure it out from there. Your skills gradually improve, and eventually you reach the point where you say "ok, if I really want to get into this, I need to seriously study it." You then become a good coder. :) To enjoy game design, you have to be a creative person who likes building worlds, writing stories, etc. The best way to get experience is to do smaller projects - write a short story, run an RP campaign, that sort of thing to hone your design skills. Do it long enough, and you'll get quite good at it. To make a game yourself, you need both skill sets. Of course, it's always possible to focus heavily on one side, but then you need to find someone who can do the other half.
Note that being a gamer don't not require *either* of those sets of interests.
That being said, if the kid *does* have an interest, the key is to start simple. Yes, making a high end game takes a team of people years, but you don't start there any more than a novice director tries to make a 20 million dollar movie. I'd recommend starting with either browser games or flash games. You'll need one major language for either (PHP or Actionscript respectively), but you'll also need basic skills in a few other areas. A browser game maker needs to know the basics of making and querying a database, as well as how to do a decent web design. A flash game maker needs art.
Also, as others have said, you may want to start out by working with existing games. Some have some pretty powerful editors with built-in scripting languages, and this can be a good way to learn the basics of programming logic while building something others will actually want to play. Tools are another option - for instance, building a DB-driven fansite for a favorite game will allow you to learn all of the skills you then need to attempt an actual game.
Again though, I can't stress this enough - programming is NOT a common thing for people to enjoy. If there's no interest, don't try to force one.
One of the very first things that I did in my transition from games to coding in the mid 90's was to modify PC games to see what I could make them do. a friend and I would modify command and conquer game properties to make units go crazy fast or just shoot liquid death. you can still do these things fairly easy these days. the other thing he could do is to create game mods and maps which isnt as technically challenging but atleast starts him on the path to making things with a computer.
Let him follow his natural course, the kid is only 14 years old. I highly doubt pushing him in a direction will do anything more than stir up a rebellion. If he's programming minded, he'll naturally gravitate in that direction.
When I was his age, I played video games all the time. What caused me to start programming was the need to create a webpage for my clan. From there it was a blur of ASP to PHP to linux. Eventually it lead to playing with source code to a few open source games, and making a few mods of my own. When I got to college I had a huge head start in Computer Science.
If he's programming minded, he'll find his way. There's no need to rush things. Last thing we all need is more incompetent programmers that should have ended up as business majors.
The boy is 14. Let him goof off for a summer; it may well be the last summer he has to do nothing at all until he retires fifty years from now.
Teach him how to make money coding, for instance, doing website design for small businesses. Wait until he makes a lot of easy money doing it. Then kick his ass out the door and let him fend for himself. When he figures out it's a matter of survival, he'll be coding in no time.
As a bonus, he's out of your house before 18!
occultae nullus est respectus musicae - originally a Greek proverb
Logo is still relevant as an early introduction to programming, and one that kids can get immediate gratification from - my son was quickly able to form quite beautiful geometric images of some complexity with Logo. Also (perhaps unfortunately), Flash/Actionscript can be a very engaging environment for teens that yields pretty quick results.
Beyond that, as other folks have already suggested, a good, moddable game can be a huge motivator for teens to get into programming, or digital art, or 3d modeling, etc.
Have him program microcontrollers doing things with LEDs, speakers, shocks, firecrackers and other items which hit the major senses hard... Younger hyperactivity would probably more easily harnessed with concrete, tangible, and obvious outputs such as this.
Plus, hardware is just cool to play with, the dev boards are cheap as hell, and the simplified programming (keeping you in a box) might provide a good boundary structure so he's not overwhelmed.
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
Make the machine count to eleven..
“He’s not deformed, he’s just drunk!”
I started programming on my graphing calculator. They are required for most Jr. High and High school math classes. The code is relatively simple, but it's enough to teach the basics.
My math teacher was also the computer science instructor and his philosophy was that if they understand the concepts well enough to write a program to do it for them, then they understand the concepts well enough to do it by hand. In addition to programming calculator games, I started programing solutions for some of the more tedious math problems.
Don't parents have authority anymore? Quit being your kids best buddy and tell him to get his butt outside and get some exercise and meatspace socialization.
He actually meant a game called Handegg.
Foot + Ball = Football
Hand + Egg = Handegg
When I started programming when I was 11, I started because I wanted to create complete skid crap, you know, viruses that pop up every minute, open cd trays, etc... Basically RAT stuff.. I'm 15 now, and I never code viruses, because my main 2 programming languages are Perl and PHP (Whether or not a virus can be made.. Yes, it can, but not effectively on windows)
Anyways, tl;dr:
Teenage boys love destruction, taking crap part, and catching things on fire. Why not do the equivalent with say, old computers or a VM?
From my personal experience, it's important to view logic as fun.
So I recommend buying a book of recreational mathematics, like any Martin Gardner's book (Martin passed away a few days ago).
If the boy is able to understand the fun of logic, it'll be easy to pass to the second step, which is to enjoy programming.
Another good advice is to increase his interest by frustration.
My parents always tried to prevent me to use computers, so I spend all my free time on them.
But frankly, it will be hard to encourage him to code.
I started coding because I wanted software that was not available at that time.
Nowadays, it's difficult to find something that has not been done.
When he was 7, my oldest son started playing at the neopets website. I got tired of spoon feeding him HTML and eventually tossed a couple of reference books at him, thinking "knock yourself out kid". He loved it. That's the environment my second son grew up into. Both of them loved computer games and still do. Eventually, the youngest one asked to buy a package, "Dark Basic". I resisted as long as possible, but eventually caved. He spent hours plugging together graphics routines, constructing his own games. He spent last summer putting together a visual demonstration of conic sections. He's a sophomore now, cruising through a Java course. He's working on a multibody gravitational simulation and understands the power of quad-tree data structures for that type of problem. I recently asked him what his best reference for programming is and he said "searching the web". I don't know exactly how or what lit the fire, but it is burning bright. I think you have to start from the point of what the young mind is interested in.
Games are more fun.
Apple, Microsoft and others have killed innovation by patenting too many of the mathematical equations involved in programming. Why lead them up the garden path only for them to find out that they can't innovate?
They should be going outside and enjoying the little freedom they still have until governments start forcefully attaching them to computers at birth and monitoring them their entire lives.
As others pointed out, gaming and coding have nothing in common.
But if he is into multiplayer, show him how to write direct x hooks. Help him make his first wallhack to pwn n00bs. Should help motivation considerably. Low level drivers for punkbuster will come soon. Rootkits, carding and so on will follow. The life on the fast lane.
You might wan to check out this thread on O'Reilly Answers. One commenter is teaching kids with XNA Game Studio and included a link to their Moodle site. They also posted some comments from the 12-14 year old kids taking the class along with a link to their methodology.
Remember, there are many productive activities relating to games.
He may like writing, look in to that. Writing for video games is becoming more relevant as the technology improves.
He may be interested in art:
If so, get Blender. It is a free 3d animation and modeling package w/ a very substantial community that could help him learn and it can use various scripting languages that it could encourage him to learn. Also, it has a built in game engine. http://www.blender.org/
Try to look at gaming as a large scale production and I am certain he can find some element he is good at and interested in.
I was one of those game obsessed kids. Now I am a 3D artist.
Like other commenters stated, you can't just force some teenager into wanting to code because they play games a lot. Granted when I was around that age I studied a book on C++ because I like games and wanted to see the process it took to create such things. Unfortunately it was not something I was gifted in like others and I stuck to playing the games and admiring the art(graphics and coding) aspects of what I was playing.
If he can be convinced to try a game that he can modify it can spark some interest in being productive with gaming. That's how I became intruiged by ROM hacking after I found out I could alter games I liked and make them more interesting. I don't know if you can consider that productive, but it sure is fun. :)
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!
Have the kid make a simple joystick or game pad out of an arduino. The whole thing should be doable for less than $50. When I started programming it was writing code that interacted with the real world that really excited me. Making that LED wired to the LPT port blink was intoxicating. These days PCs have no approachable I/O so an arduino compatible for $30 will be a great place to start.
I'm teaching two 12 year olds how to program using pygame (python module wrapped around libsdl). One is making a side-scroller tank shooter and the other is currently enroute to making something akin to duckhunt. It is taking more than a week, but progress is fast enough to keep them interested.
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.
He could try using GameMaker to create his own games. It's a free tool for making pretty functional games, and you don't have to know how to code too terribly much. It's really draggy-droppy for the most part. If he finds the easy part of it interesting, there is a whole new level of use when you get into GameMaker's scripting. There's also a ton of tutorials available online.
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.
http://codingbat.com/ -- free little online coding puzzles, just click and go (python and java)
http://code.google.com/edu/languages/google-python-class/ -- a complete basic python class, complete with pretty neat coding problems ready to go
http://nifty.stanford.edu/ -- tons of fun, medium sized coding projects
Disclaimer -- I had a part in creating all of these.
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
My 12yr old son just started building his own levels. Don't know what game it was but is was provided with this mod software. I think he learns about using software building blocks and logic like that. He doesn't need any help with downloading, installing and configuring games since he was 8. Once he also managed to tweak his brothers nintendo ds wirelessly. He found out how to read and alter remote settings. He called it "hacking".
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 dabbled in things like QBasic when I was young, but never created anything rewarding enough to hold my interest. I would strongly discourage the types of programming exercises that were the normal starting point for a programmer back in the 80's and 90's, I'm talking the "10: PRINT HELLO WORLD; 20: GOTO 10" type stuff. Kids today are not going to be even remotely impressed by that. It was only impressive back in the day because you were commanding this computer to do something, and it was obeying. It was empowering because computers were not mainstream. These days, such a simple concept is akin to when your math teacher gives you a list of additions or multiplications to perform. Sure it helps get them into the mindset and learn the basics, but it's tedious and not likely to hold the person's interest. They would require a strong initial interest to learn this way, I think. Sounds like this kid has none, so far. So he needs something where he can hit the ground running and get something usable out of it.
The first time I really created anything worth being particularly proud of was when I started getting into the web side of things. HTML is extremely easy to learn. The syntax is very simple, you don't need a compiler, and what's best is that you can teach yourself through using View Source to see how a website performs a particular trick, then add that trick to your own bag. Grow it out from there into CSS & JavaScript. If he takes well to this, it won't be long before he's ready to start trying some server-side scripting. The move to a database back-end is particularly rewarding. If he's more the self-teaching, hands-on learning type, HTML is the perfect starting point because it takes almost no knowledge whatsoever to produce a very basic webpage. As they start to branch out from HTML into things like JavaScript, the transition from those languages into more formal languages is really not very difficult. They will be missing a strong foundation due to being self-taught and using fairly casual languages, but if they're smart they will adapt very quickly.
Scratch.
When I was in grade school, there was Turtle, then I went to basic playing with drawing graphic lines and printing to screen. It all gave you a nice direct feel for what could be done. A nice place to start now might be Processing http://processing.org/
When I got into coding I wrote a bot for some free to play MMO. I used AutoIt3 as the scripting language. I had id do simple things like detect my health and heal if it gets low, run around and search for monsters then kill them, etc. I could write a few lines of code and then watch as the code was executed and had an effect in the game world.
If your kid has never coded before you'll have to teach him to think like a programmer. Teach him logic. For example, if health is low, use heal skill. You can use the PixelSearch function to detect if a certain part of your health bar is red, and if so you can use the Click function to click the healing skill.
I installed Scratch (http://scratch.mit.edu/) for him. He loved it. It teaches how to program without worrying about learning a programming language. It's got a built-in graphics editor and sound recorder too. He can upload his creations to the Scratch site or download any he wants to see how it works. It's a great way to get started.
I'm a professional games programmer, and I started in the 8-bit days where programming was much more simple and the hardware you write games on was much more direct. Nowadays you have very complex systems and the best game programming system I've seen where you can concentrate on programming the game with good tool support is the XNA system. Download Visual Studio 2010 Express and the XNA SDK and try out the tutorials.
X --> 1 Lbl A Disp X X+1 --> X Goto A
Coming from the exact same world that you are, my advice is not to try to teach the kid any "real programming", that is actual programming languages that could be used to make independent products, but to start with something super-high-level within one of the games. You know, the built-in languages that you can use to make bots or scenarios or whatever. Then later on, if that's fun, he can learn a normal language like C or Java. Think about it: when we were kids, the games we had were guess the magic number, or lemonade stand, or text-mode Oregon Trail if you were really fancy, so learning BASIC put us pretty much right on the level of modding those types of games. Teaching a young gamer BASIC or even C nowadays would still put them miles away from the gaming they're already interested in, so start with the built-in languages the games use for mods instead, and that will be the hook; if anything will lead to C or Java later, that will.
Also, Java is a good choice once they are ready to make the jump to a full-featured programming language, because the applet system makes it relatively easy to make a game they can share and have others play, by embedding it in their personal web page. It also allows makes it easier to get into GUI programming with all those pre-made widgets 'n' things that don't require them to already know as much of the nuts and bolts of the language as something like GTK would, and although some argue Java teaches beginners bad habits, it's nowhere near as bad as VB for that (spoken as someone whose first OOP experience was several years of VB, from which I later had to resuscitate my mind...)
"I don't care about the Constitution!" --Bill O'Reilly, November 17, 2009
Blitz3d. It's a tool for writing 3d games. The nice thing about it is that you can do complex things with very little coding but is, however, very limited. The demo is free and might be a good way to capture his attention.
I've seen many children who were strapped to the piano at an early age and ended up hating music by the time they went to college. Same applies for computers, although if you keep him scrawny and out of sports you may end up with a pale faced pencil necked computer nerd.
Should you choose to ignore my warning, there are many 3D packages available for free. I would recommend XNA Game Studio with the C# Development Environment. If you want the reinvent the wheel linux mindset there is Ogre 3D. Unity 3D is free for the basic version and is great for getting something on the screen quick. In fact, Unity 3D is the quickest way to get interesting stuff happening.
Have him writing his own games with Java using Alice. Learns some programming, and can play games while doing it.
Assuming he has any interest in programming whatsoever, you'll have to find him something that relates to the games he is already interested in:
If it's something like Everquest, you can pull down EQ source code off source forge and run your own emulator. Get him set up with a development environment and start teaching him C++. He'll be able to actually code something, rebuild the server, log into his own server and actually see his contribution in-game. See eqemulator.net for more info on the project. I know WoW has custom servers, but I'm not sure how open source WoW's code is (if at all). At the very least he could start creating WoW addons.
If he's into RTS games, get him into map building. Starcraft 2's map editor would be a great start assuming you have beta access (what with it being a new game and all, and not something old and boring).
Some people (like myself) like to keep entertainment and work separate. I spend most of my time playing games and I wouldn't ever want to start programming for them on top of it. A good alternative is android app development. Need a motivator? Have his parents offer him a droid if he agrees to teach himself google's API and create an app for it. This will only work if the kid isn't spoiled and doesn't already have a droid :)
Maybe it's been mentioned before, but just in case: Take a look at Unity 3d. (Get it here: http://unity3d.com/) - that's a pretty powerful game engine. The standard version is free and will suffice, it is very easy to learn. It's kinda like an universal level editor. Coding is done in javascript or C#, but there are tons of examples to get started (Official tutorials: http://unity3d.com/support/resources/tutorials/). And the community is pretty active aswell, so he'd be able to get help on the (Official forum: http://forum.unity3d.com/ - User wiki: http://www.unifycommunity.com/).
Not to troll the "when I was your age we had to make our own paper before we could program our punch cards"- people.
But - whatever you choose, something with instant gratification usually works best. Eventually he may code for the fun of coding, but in the beginning, a fast result is a good motivator.
If you go with a traditional language, look for a easy graphics toolkit, text output is not coool. Modifying something graphical, scripting for an existing game, also works. Or for C programming something like an arduino. Avoid a situation that goes like: I want to show you something really cool, but first you have to learn these two other things.
www,freshiacademy.com, teaches camps and programs on how to make video games using basic software that then leads them into coding...
If he says "Sweet!" and starts getting interested in the mechanics of programs, you can show him something far easier to edit: uncompiled code. If he doesn't care about editing (or even modding) games, or editing any program for that matter, then he's not going to want to code either.
... you want to give the kid something easy that gives him visual feedback and isn't "plumbing" like C++. C++ is a good first language to learn but ONLY after the person discoveres whether or not they like programming or not. A book I highly recommend is C++ Primer plus, because it starts from simple examples and explains why things are the way they are and gives you an idea of all the work that goes into "coding" a computer.
http://www.amazon.com/Primer-Plus-5th-Stephen-Prata/dp/0672326973
The definition of "normal" must have changed since when I was growing up...
Python
Eh.... going from playing games to programming is a huge jump. If the kid has never played with anything (HTML, CSS, etc), then it's going to be like doing math for him/her and they will not enjoy it. Think of it as doing something fun... then shifting to something extremely boring/confusing... because that's what it's going to be to them. I LOVE gaming and I love coding.... but it's something that I personally love to do. As far as your kid, it's going to be difficult to force something you enjoy, or used to enjoy, onto them without a sense of direction. Now maybe, if you took it up again with your kid, showed him that in X many hours what kind of product you can make, they may become interested and actually want to take up learning it on their own. Just a personal suggestion. Good luck!
"Instant gratification takes too long." - Carrie Fisher
Get the kid off the computer and out in the real world.
Sign him up for martial arts, an indoor climbing club (even non-athletic people can do this), take him hiking.
It's easy, at any point in one's life, to sit down and focus on learning something technical (even though you do have to start very simple). However, it's much harder to become active and social later in life without starting early.
.sigs are for post^Hers.
Get him into developing in PHP/HTML/CSS/Javascript. It took me three years to learn how to make sexy, functional and useful web apps. Follow latest web trends with jQuery etc and you'll be flying in no time.
It seems to me that you wish to curb the kid's hours spent gaming and replace it with something that you view as more "worthwhile." First thing, I suggest you sit down with the boy's father and talk about why you want him to take up a new hobby.
If you still think a different hobby is the right way to go, sit down and talk with the boy. "What do you think about computer programming? Why do you like video games?" You might be surprised by his answers. Progressively more kids game for the social aspect and that's something a lot of parents fail to grok. Coding is typically a lot more solitary than an MMORPG.
Okay, you've done this and you're still gung ho on this coding thing. Get him off of Windows. Nothing trashed my desire to game more than formatting my Windows box. At the same time, a lot less of the core of Linux is hidden behind a GUI so he'll be exposed to more code and how computers actually operate. After learning bash tools like ls, grep, etc, more serious coding is just a natural progression.
As for what distro to start him off on, that's a tough choice. Ubuntu is a pretty good beginner distro (though deb packaging can be a bitch for a new user), but Lucid has undergone some weird design choices. I'd say give him a copy of Fedora and maybe show him how to add the fusion repo's so that he can play video. Oh, and enable compiz-fusion. When people ask me why I use Linux, I just show them the windowmanager effects. Compiz-fusion makes maximizing a window fun.
Lock him in the closet with the computer and no games and tell him he can't come out until he creates a game.
When I was about 13, I was sending about 3-4 hours a day playing little computer games. I had a bit of an interest in programming, but not the dedication. Well, my Dad & I made a deal. When I could code up a particular program, I would be allowed to do whatever I wanted with the computer, no time limits or restrictions. But, until then, the only thing I was allowed to do was work with code (or other homework). It took me about 3 years. By the time I was done, I not only could write the program that was part of the bargain, but I knew the C language like the back of my hand. I didn't have much of an interest in gaming either. It also forced me to get a bit of a life too. When I got fed up with coding, it got me out of the house to do other stuff. It's been years since then, and now I'm married with two kids and have a pretty decent job doing higher end IT work. So, I'm with the folks who've said your friend ought to man up a bit. It's certainly not child abuse to tell your teen the games are off limits for a while, and go spend some time with him doing some other things. He'll probably thank you for it later.
If he's not playing any games he has/can_get the source code to, get him some of the right games. When he find one he likes, then show him a special way to "cheat": change the game.
"I changed the conditions of the test." -- Admiral Kirk
As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
Alice is a tool built by CMU researchers for exactly the purpose you want -- to gently introduce your kid to programming and making it seem fun and easy without scaring him. http://www.alice.org/index.php?page=what_is_alice/what_is_alice Alice was the brainchild of famed researcher late Prof.Randy Pausch and is used in thousands of educational institutes and schools. In Alice the programer builds up a story by programming and your child wont even know that he is coding until its too late ;-)
The thing that pulled me beyond the scope of a mere user and ultimately led to me becoming a programmer was hacking game data and binaries.
Back in early 90s somebody showed me how to edit game binaries in a hex editor and change strings. I got tired of doing that and before i knew it i had a virus for windows 95 written :-P It went downhill from that, soon my friends didn't understand what i was doing any more, and they started to use the phrase "compiling kernel" for anything i did, that was unknown to them.
Ironically, i have never ever written a game.
Regards,
Rox
For me, math, science, and reading were all good motivators. We talked about formulas, equations, and algorithms all the time in class. Since class was really boring, I'd spend my time programming our TI-8x's. F=ma, E=1/2mv^2=mgh, etc all go into the calculator. Reading at home played into that really well. For example, in Sagan's Contact they talk about a message being embedded somewhere in Pi with the hint that such a message could only have been created by an architect of existence. One day in geometry we learn how to calculate Pi, and guess what I'm programming in my calculator. Later I read stuff like cryptonomicon and between silk and cyanide and spent countless classroom hours trying to find new ways to factor numbers.
Looking back, I was always interested in tinkering with large public data sets. I built several iterations of a fantasy baseball league site and multiple stock analysis tools. I also played with decision tree algorithms and imdb's public data and messed around a lot with trying to analyze my pokerstars hand history. Today, we are drowning in new and interesting and often totally unexploited data sets. The right 20 lines of perl could change the course of human history. The challenge is not to find those 20 lines, but to look for them.
Some kinds of games encourage programmatic thinking. You get a lot of exposure to arbitrary sets of rules and how to manipulate stuff in well defined environments, to build and test plans, etc. Civilization and StarCraft are all kind of production/workflow optimization problems. At some point though, there's a difference. Programming is more an act of creation. What's possible is undefined and what happens is defined by you. I think to make the leap from gamer to hobby programmer, you need a spark of something, the kind of attitude that believes 20 lines of perl can change the world.
I think a classic mistake in programming education is to teach using "good teaching languages". Working in a write only language like perl allows you to produce immediate results at a time when you're not ready to accept the full abstraction of good programming practices. It also primes you to accept the principles of a good programming language at a later date. A year breaking bad habits is a good trade for 5 years of programming experience.
Because I'm good at guitar hero doesn't make me a good guitar player.
Because I like GTA doesn't mean I should try running people over on my way to a hooker.
I'm afraid there is no correlation between gaming and coding. I know many good gamers who would be horrible coders.
"Dear Slashdot, I have a, um, friend, whose kid won't get off XBox Live or say more than two words to me. Drawing on your experience, can you tell me how I can get him to stay down in the basement writing third rate c++ and avoiding herpes-spreading females long enough for me to watch my neglected porno collection in peace?"
I know I am replying to my own thread here but I submitted it without the proecessing links! ... you want to give the kid something easy for a beginner that gives him visual feedback and isn't "plumbing" like C++.
http://www.processing.org/
http://www.amazon.com/Learning-Processing-Beginners-Programming-Interaction/dp/0123736021/
C++ is a good first language to learn but ONLY after the person discovers whether or not they like programming or not. A book I highly recommend is C++ Primer plus, because it starts from simple examples and explains why things are the way they are and gives you an idea of all the work that goes into "coding" a computer.
http://www.amazon.com/Primer-Plus-5th-Stephen-Prata/dp/0672326973
It's a simple as the old programs, but it's streamlined by the decades of improvement we have had in between.
Once you have explained Object Oriented Programming to him, the rest would be a doddle for a fresh young mind.
My kids are interested in programming because they saw me playing around with Alice one day. http://www.alice.org/ I agree with the comments gamer does not equal programmer. Most of my friends are gamers and I will play for a bit but I am the only one that codes.
Oh wow...so many ways. I cut my teeth on coding playing text based muds. Of course, it takes a certain kind of person to play those.
1) Get them hooked on a game they can write programs for. a Mud/MOO/MUSH that's coder friendly but not dominated by them so they don't just cut and paste "scripts" is a good starting point.
2) Show them an abstraction layer for a game they can code other things for--if they use world of warcraft, programming for the armory API can be invaluable. At least--it was really useful in me to have my laptop pull up a window with the equipment of the player I was targeting... very handy when you're a rogue stealthing through an enemy city for a gankfest.
3) Game Modding. Not quite real programming, but some of them come close.
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.
This approach has the advantage that if a kid's more interested in modding the 3d graphics, 2d artwork or music that may also catch their interest. So if the kid's not interested in being a coder this still has the potential to set him on a path to excercising his mind - perhaps just fo hobby, perhaps as the start of something bigger.
These posts express my own personal views, not those of my employer
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 can quickly write code to do lots of kewl things and advance to harder stuff like inter-process communications, mailers, http-friendly apps. There's lots of people willing to help. Just keep him off adult land by not adult-validating his account.
The difference between playing a game and making one (however simple it may be), is the difference between riding a rollercoaster and building one.
http://research.microsoft.com/en-us/projects/kodu/
Point him to Unity3D (www.unity3d.com)
It's multiplatform, free for indie devs, has lots of tutorials and has lots of depth.
If I was trying to get learn how to make games, this is where I would start.
#include
int main() {
int i;
for(i=0; i=10; i++) {
printf("%i", i);
}
return 0;
}
Have him start playing second life and scripting in that. There's lots of tutorials and helpful people in the community, plus you can do all sorts of cool things with it at a fairly low skill level.
He is obviously into computers and shooting/killing stuff. Tell him that he gets to select which path to pursue. Either military school, then the marines and off to Afghanistan. Or follow the computer path and pick a career there.
Have gnu, will travel.
Show them how understanding code can help them compromise computers. Kids tend to enjoy breaking things.
Progamming games
(warning: annoying background image)
I've personally messed around with Colobot which uses a java/c syntax scripting.
so later on in life his job can be outsourced? get him interested in something else that can't be sent overseas.
I found this to be an entertaining way to get into coding.
http://www.ceebot.com/colobot/index-e.php
It doesn't have to be interesting for someone else for it to be interesting for yourself. When I was in school I made simple Pascal programs to do my maths and physics homework for me. When you get sheets with very similar questions, it's tedious to do the same thing over and over, it's more fun to write a program to work out (and show the workings) the specific question type if you input the different variables at the start. It takes about the same as working them out, and you learn the content just as well, but it's a lot more fun.
Good luck getting a 14 year old to be interested in what you want them interested in, but that said, I'd try and make it fun with a quick payoff. Who wants to spend weeks programming a bubble-sort or other such boring thing? Try Arduino--lots of fun gadgets can be made with some simple programming. Here's a video game development board: http://www.makershed.com/ProductDetails.asp?ProductCode=MKNN2 also based on the AVR proc.
If hardware isn't his thing, maybe suggest making models or maps for a favorite game? I'm pretty sure TF2 lets you make custom models now, and there are lots of fun custom maps out there (that gotta come from somewhere...). That's sort of coding...
I'd go for outdoorsy stuff, and cultural stuff first. Sticking the kid even more inside in front of computers is probably not a good idea at that point.
The Cloud - because you don't care if your apps and data are up in the air.
They have write a program to talk to a lock on the door so they can get food.
If they die nothing is lost.
I'd go on a Vegan diet but the delivery time from Vega is too long. --brownkitty
Beatings are a good start.
Find a game that the teenager is interested in that allows "addons" to be coded up.. That's a good start.. Another idea would be have him write an app for the droid/iphone/ipad touch.
Code a simple example in OpenGL. It's fairly easy to get started. Get a tetrahedron on the screen. Then make it bounce and spin and deform in real time.
In Soviet America the banks rob you!
Tell him there is a thing called Python.
Scalable Game Design: One can speculate or look at actual data http://scalablegamedesign.cs.colorado.edu/gamewiki/images/b/b2/Scalable_Game_Design_summary.pdf Over 50% of the students are girls, over 78% of the girls want to continue making games.
Simple: Don't
The world has enough loser hackers who learned to code in their teens and think they know something about anything. Let them get into it themselves if they are interested, then they can get on a CompSci course in college and not be saddled with 10 years of bad technique, bad habits and stupid languages like BASIC.
Everyone is living in a personal delusion, just some are more delusional than others.
The way I see it you have the following options: i. beat it into him ii. bribe him with hookers (when he's 16 of course) iii. accept the fact that he has better career prospects as a gamer, than a developer, considering most companies are outsourcing their development to India or other third world countries where labour (i.e. coders), are readily available for peanuts. iv. beat/entice football, baseball or basketball into him (as these are skill sets we don't outsource yet, but probably should).
Maybe I'm reading too much into but I'm somewhat bothered by the wording that you're trying to get him into coding, as if you have some personal interest in it happening. If that's the case, perhaps the first step would be to examine your own motives and ensure that whatever you do about it from that point onward is in his best interests and not pushing him excessively toward somewhere he does not want to be.
Once you do that I think it becomes really simple: Just have somebody sit down and talk to him about it. "Hey junior, have you ever considered giving programming a try? Maybe one day you can code your own video game." He'll either say yes in which case you have your easy in, no he's never considered it in which case just talk to him about the possibilities and see where it leads, or that he's considered it but for whatever reason decided against it and you should probably let the matter drop (unless it's something self-defeating like "I'm not smart enough;" it may even ultimately be true but it's probably a really bad reason to let a fourteen year old avoid trying something).
If somebody is a decent programmer themselves (you, his parents, etc) it would be a helpful tool to have somebody who could show him the ropes and who he could turn to for answers when he inevitably gets stuck. Show him some things you created, especially some of your older stuff. Assuming he accepts the premise some others have given decent choices for where to start: Game modding/scripting, frameworks, etc. Just help him temper his expectations so he understands that if he's not coding Quake his second week that it isn't a failure or a waste of time. I think it takes time to even realize how little computers actually know how to do before you understand the complexity of giving it the necessary instructions.
Tell him you'll buy him a hooker when he programs a wordprocessor.
If Google really cared they would fix Android Chrome to reflow text, instead of discriminating
Just today I talked to some old fellow (~80 years old) about his navigation system and he was totally amazed about the shortest path algorithm it uses. I told him about Dijkstra's algorithm and that it was discovered in the 50s (gasp). We had a look at the wiki article but I didn't get around to really understanding it.
Normally we go with our mental faculties we have in finding an acceptable path and then leave it at that. Our problems never require to get an optimal solution or to understand how we solve them exactly and what other options we have. Also frequently everyday problems are small enough that O(.) notation never comes in handy in comparing your algorithm performance.
Of course you can give your kid a computer and all of a sudden a memory space of 2^32 bytes and a throughput of 10^9 instructions per second change the whole thing.
I'm just wondering how you could challenge your kid to solve some problem with a computer. Way back when I got my C64 my father always nagged me about a database program he would like to have, I did give it a try with Basic. I also played around with raster interrupts to draw bars on the background because it seemed to be a cool thing to do.
I'm kind of curious whether you actually need a computer to get your kid interested in computer science. I could imagine playing with model trains could help. I think there is an article by Dijkstra about a real world algorithm regarding the assembly of trains. I always thought about controlling my setup with a computer anyway, so there is a start. I'm also wondering whether you could devise any cunning computing machine that doesn't need much silicon (SiOx is allowed) your kid might have fun fooling around with (tough call, it reminds me of an abacus or a certain Wolfram related xkcd strip).
Unfortunately it is easy nowadays to scratch an itch by just buying/downloading a program or you can just evade the itch by escaping into a virtual world. Maybe there is a multiplayer game where building robots is encouraged?
Ultimately your problem seems to be how to get your kid connected with the real world or at least into creative problem solving. It doesn't take a computer to do that. (It doesn't take a computer to become a nerd ;). Then again you could also live in the real world getting by without much creativity in problem solving (I still use maps). Your kid could be that dull. Maybe there is an evolutionary advantage in being good at real world problem solving. I would propose you come up with some incentives for your kid to get good at it, just in case, nagging also helps (studies have shown that), and just to be safe you can make another kid. Maybe the one you have really doesn't have what it takes to be exactly like you, also you never know what a sibling can be good for.
Je me souviens.
Going by my own example and that of my brother, nothing will get him into coding if he doesn't want to. Playing games got me into computers, and soon I was playing around with computers for its own sake instead of to play or make games. By his age, I was teaching myself C for the fun of it and experimenting with Linux too.
He'll find some obsession sooner or later. All you can do is present him with options and hope he picks something useful.
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.
...besides gaming and coding, that is. I mean, if finding a "more productive interest" is more important to your friend as a parent, then there are other computer-related activities that involve more brainpower than simply fragging or planting imaginary fauna or flora. Why not get him into something closely related to his passion? How about game asset creation? Get him into 3D design, say, with a free program like Blender.
I slowly transitioned to coding from designing levels and maps for games. Doing this is fun and easy, and you can quickly make things that are fun to play on. I started out playing games where all you do is paint terrain and add bad-guys to make the level then started playing Starcraft (1), which has a simplified environment that allows you to set up "triggers," choosing from lists of commands, that are basically if-then statements that check every second. I moved on to Warcraft III, which greatly improved on Starcraft's system, by allowing you to specify when the triggers were checked, and allowing you to store variables. Hungering for more power, I eventually starting playing with the free version of the Unity game engine, which allowed me to make a decent-looking 3d puzzle game in about a month. If you want to get your kid to code, you should introduce him to software that simplifies the process and allows him to get results he can enjoy quickly, and then sucker him in to more complex engines with more and more flexibility until he is doing actual programming.
Download the game, tell him this one comes with the programs that make it work, compile it, and play it. Let him play it. See if there's a to-do list for things they want done to the game, and do one or two. Let him participate by testing your changes.
I got this book for my 13 year old nephew and it was a real hit. It's geared towards middle schoolers who are used to point and click stuff, guides them through a similar game engine, then gradually introduces them to coding concepts. He loves the book and the tools, although I am having a hard time getting him to move ahead and code for real, but it's a great start. I highly recommend the book.
I know people here like to hate on Adobe and Flash (mostly because of how it's been badly implemented), but if you can manage the cost of the authoring tool - it's not that terrible to work with. It's fairly easy to make content within the Flash authoring environment as well as import images and sound from elsewhere. And it is possible to code and test some fairly simple game mechanics in ActionScript under a day. (And since it's ECMAScript based, it's not that big a stretch to see if similar things can be worked out in JavaScript. Although syntax is essentially the same, it's still harder and more challenging to do some things because content management and built-in libraries aren't really there in JavaScript.) A fairly easy challenge in ActionScript is making a working two player Pong or SpaceWar clone in under 100 lines. Or if you wanted to be funny, you could even try to combine the mechanics of Pong and SpaceWar - since what you can do is fairly open ended.
There's also quite a few communities that deal with coding ActionScript and making Flash games. So it's not like you can't find the info relevant to what you want to do with a little searching.
Runtime Revolution
Rather than trying to get him into coding, how about trying to get him into game design? Valve, the maker of Team Fortress 2, has released the design tools for TF2, and lets people make and submit items, maps, etc. Look here: http://www.teamfortress.com/contribute/
I'm sure this has been brought up before, but just because your kid likes video games does not mean that he will enjoy programming them.
There are many skills needed to create video games, even simplistic ones. The most important skill is game design, which is a completely separate notion from video games. Without game design, you fall back on classic games (which is a good place to start).
The second skill is general programming. A good place to learn programming with an eye towards gaming is Python (www.python.org) and the SDL wrapper Pygame (www.pygame.org). Within a week, you can get Space Invaders running.
The skill is audio/visual media creation or at least selection. It's hard to have a video without graphics (but Lord, I try). Sounds also a critical element.
Most gamers will never be interested in making games and that's OK. I like driving, but have no interest in automotive repair.
It's a tough one and one I don't totally have an answer for. I've got two kids, my son 16 is into WoW and CoD4/6. I've tried to encourage him into doing coding but as you point out it is tedious, big learning curve and at the end of the day the results are not going to be a patch on the games he played. So I looked for short cuts.
There is a system for developing games called GameMaker. It teaches OO principles but you can get by with out writing much code to develop simple games, do some coding and you can create more complex games. There is a community behind it so you can get free graphics to use in your games and you can also get the source to some games to hack. I think GameMaker is great, it is used in a number of schools, but for some reason it didn't fire the imagination of either of my kids; I suspect this has something to do with my teaching style or lack there off.
I've also worked through about 2/3rds of the way through "Hello World!" a book written to introduced kids to programming using Python. I found that if I left it my son alone he wouldn't do anything, so we sat together a couple of hours each week to work on it. I thought I'd made a break through when after typing in one of the simple games and explaining how it worked my son was able to make some changes to it by himself and he got a bit of a thrill to see the program work as he intended. However, it didn't last. I thought he was fine to work on it by himself so I left him to it, but he hasn't gone back into it all and just plays games all the time.
By contrast my 13 year old daughter has an interest in photography, drawing and painting.This has led her to teach herself how to use Gimp (because her old man is too cheap to buy Photoshop) and other drawing packages. She joined an online community which shares art work and people help each other out with techniques and tips. Developing her "site" within this community has led her to teach herself the basics of HTML and some CSS. I've offered to teach her a programming language but she's not interested as she doesn't have a use for it, but she has been asking questions about JavaScript lately so who knows?
So in general I think it's really hard to get your kids interested in programming unless they see a need for it. One approach that I haven't tried with my son, but I've been thinking about is looking at the games he plays and see if there are ways to write addins (like in Wow), or utilities that he could use in his game play. Start small and simple and if he sees a need maybe he like my daughter will be using programming as a tool to an end rather than something his old man feels he needs to be doing.
Both my kids have Apple ITouch, but we don't have a Mac so, as far as I know, there is no way for us to develop an app for the iTouch. I think the kids would get a great buzz if they could take their iTouch to school and show their friends an application, no matter how trivial, that they had written. I think an Android phone is a better option in this case, because of the more open development environment. Maybe we need an open source project to develop a GameMaker like development tool for Android?
GameMaker web site:
http://www.yoyogames.com/gamemaker/
I have no connection with gamemaker or the company, but I did own an earlier version of the software.
actualy microsoft and a few others have created programs in which you can create games
its the best method, slowly the kid will ask itself whats needed in general for programing
at the same time it will encounter highlevel code of these programs (easy to read but with advanced results).
a simple example is here http://games.venturebeat.com/2008/05/02/microsofts-popfly-makes-it-easy-to-create-your-own-arcade-games/
but look a bit more into this field and you find more similair products
another route might be Lego robotics.. learn programming and robotics at the same time.. could be cool
Little effort, high reward. Then he can grow into enjoying a huge engineering project. When I was 14, I scripted Java bots for Runescape and made phishing sites for it (poorly). I owe Runescape gold my programming skills. Lowly, but an awesome introduction into programming. Try to find something he could get cheap thrills from. Twitter program, perhaps ;)?
When you use a GOSUB, then it pushes a pointer onto an array that will return to that pointer when it encounters a RETURN command. Goto is nothing more than a jump. Think of all the people that use GOSUB without any logical usage of RETURN that they continually GOSUB until an overflow occurs. That is truly Evil. I can GOTO everyday without killing the execution.
Robots. Buy him a build-it-then-program-it robot kit beyond the level of Lego MindStorms. PBasic stuff from Parallax is old tech by now but can still engage kids his age. Also, Propeller is a fun challenge to use for video.
I personally started out by playing with GameMaker as a teenager:
http://www.yoyogames.com/gamemaker/
It's easy to get into thanks to their excellent guides, you can create a working prototype for e.g. platform games in a couple of weeks... It's also great fun because you get results quickly, but at the same time, you learn some basic stuff about game design, etc. If he plays around with it and discovers that he actually likes it, buy him the book "Game Development with Python" :-)
Get him started making mutators and small mods in Unreal Script for UT3 or UDK. It takes a little set up, but the payoff is instant and Unreal is one of the most used gaming engines out there. He will be playing games that use the same coding language that he is and this will build interest. UScript is also fairly easy to learn and is similar to Java and C++. The nice thing about UScript is that with about 15 lines of code you can make a weapon that lets the player teleport all around a level or increase the size of the players head. I started with UScript when I was 15 and I'm 18 now and regularly code in C/C++, Java, C#, and Unreal Script.
When I was young we had a rule - 30min of computer time a day - with the exception of programming. The only way I was allowed to use the computer past 30min a day was in QBASIC.
This is a great time for game enthusiasts to get into game programming. I would suggest downloading something like Unity or the UDK or one of many other free game development kits. Or, if you insist on open source, there are plenty of open source game engines out there as well.
It depends on the kind of game. If he likes solving puzzles, then he could be a natural coder.
-- QED
You definitely want to show him/her an alternative to proprietary software. Microsoft Windows and all the computer games are basically big immutable pieces of software without any room for creativity. You need to give the kid free software and a programming language with a comfortable learning curve. Myself I started with Omicron Basic on Atari ST. Today I would recommend Ruby.
And if you give the kid Linux with Compiz Fusion, he/she has something to show off to his/her friends.
It's like Alice except i don't want to kill myself whilst using it. Easy visual game design, can even support 4 360 controllers.
http://research.microsoft.com/en-us/projects/kodu/
I personally would recommend map making for a game like half-life 2 or Farcry. The concepts and principles could easily lead into modding which could involve a decent amount of programming, while starting out as something very close to what he is doing right now. It's relatively easy, and rewarding, and so is less likely to turn him away by demanding a lot of sacrifice for seemingly little return.
For RPGs, anything from full automation to simple keyboard shortcuts. For shooters, aimbots are fun.
It appeals to kids' competitive nature and sense of 'doing something wrong'.
If you are morally opposed, perhaps just the automated keyboard/mouse/gamepad?http://ask.slashdot.org/comments.pl?sid=1668492&op=reply&threshold=1&commentsort=0&mode=thread&pid=
Xbox 360 has dev kits. There are also game dev camps, out of work coders who pimp themselves out as tutors, easy iPhone rags-to-riches dreams (unlikely, but a motivator), etc. Motivation depends on the kid. Personally, I loved disassembling the games I loved and hacking in new functionality. Circumventing copy protection, finding easter eggs, upping stats, etc. The "hacker" angle might cause someone to gravitate toward game dev naturally.
I think it's safe to say that "He's so good at computers" Just doesn't mean "He loves to play WoW, and he's so good at computers he can make the latest games run on his computer. There was a time when getting anything worth playing to run meant you had to learn how to make a computer work, and probably upgrade the thing to make it any fun, but that time is long past. (You know add a fancy sound card, or a game port, optimize your conventional memory that kind of thing) Coding is a very specific sort of skill and the utility of that skill is somewhat limited depending on what he's interested in doing with his life. A doctor or Civil engineer needn't learn to code so much, math for example might be a better skill to start honing. Math doesn't change, almost everything else does.
Also, you can't "get a teenager" into anything. The best you can do is show him the door; he has to walk through it. Do this badly, and you'll turn him off something he could have been genuinely interested in by himself in a couple years.
Finally, you should get the kid's parents a copy of Marc Prensky's "Don't bother me Mom, I'm learning!" so they know gaming is not the complete waste of time they assume it is.
On average, programming these days is a thankless, underpaid, unstable job, likely to be outsourced to halfway around the world with no notice whatsoever.
Why would you want to do such a thing to your child?
The preferred solution is to not have a problem.
one option is to use a graphical coding system like Alice or Scratch. it provides a basic understanding of code and how code works and functions, but doesnt require the vast knowledge or books necessary for standard coding. of the two, i'd suggest Alice over scratch because i find it to be more intuitive
I grew up playing games, and am now a software dev. I started making maps etc for games, then moved on to modding which motivated me to learn code. Making maps gave me a good introduction to how the game engines actually worked and was rewarding enough to keep me interested.
I too learned to program in basic on a TI-994a. I wanted an Apple II but my dad wouldn't spend the money. But, I don't agree that Basic is the way to learn today. I've written a programming intro for the Scout computer merit badge programming requirement. Here's a link http://nicholdraper.com/scouts/jtutorial1.html I can usually get through this in about an hour and a half with five or six scouts 12-15 years old. I recommend that you get him an introduction into programming. After completing a small program, if it sparks his interest he will do more. One of the things that exists now that didn't when I was a kid is the web. So, in my introduction, I choose to teach using JavaScript. It exists for free in every browser on every computer. Also, learning a bit of HTML helps kids understand how the web pages they use every day are formed.
The kid spends too much time in front of a computer, and you want to turn him into a dime-a-dozen programmer? Teach the boy some useful skills. Like how to deal with money and get a job that might pay a little more than McDonalds. At 16 he should have some real world skills and be thinking seriously about college.
Autohotkey, it's the gateway programming language for gamers. Start off by telling them they can automate any repeptitive task in a game and then they will start thinking about bot building and it will go from there. For example you would be surprised how many games a simple f12::{down}{enter}{down}{enter}{down}{enter}{down}{enter}... script can help in. Also the good old click here 50 times rapidly script is very easy for beginners.
http://code.google.com/p/pypixel/
Python is a great language for introducing programming. pypixel is great for simple graphics, and this kid should be able to get a smiley face on the screen in only a few lines.
It's a site full of fun problems.
Go to www.garagegames.com, www.unity3d.com, or www.shive3d.com and set them free in the playground of EZ to program, cross platform, 3D game engines. That will allow them to make a demon fly around the screen in about as much code as it takes to print their name to the screen.
Parenting fail.
You know coding is quite a heavy thing to just throw at a kid. Him being from the "gratification-right-now" generation will make him quit long before anything cool can be done with coding.
How about leading him into mods? You can get results very quickly and pretty much for free after an initial investment. Get him a copy of Oblivion GOTY or Fallout 3, introduce him to TESNexus.com or fallout3nexus.com, download Blender, some of the easily available scripting wikis and forums and away he goes.
He can have a replica of his favourite Final Fantasy weapon in a couple of days, usable in-game. There are at least a dozen mods of Cloud's Buster sword he can reverse engineer to teach himself the shapes and the textures and how to make a file usable by the game engine. Immediate reward. May make him plug at it long enough to begin modeling NPCs and elaborate armour.
jesus christ, the original poster didn't ask for a psychoanalysis of the mind of 14 year olds or essays on who should or shouldn't be a coder. He's asking for an alternative to having to start with Visual C++ or KDE/Qt or whatever right off the bat. ***why is everybody on the internet an unhelpful knowitall jackass?***
try blitzmax.com, it provides a version of basic which has very straightforward graphics, sound, I/O mgt. and so on, so that you are not stuck with just text programs. There is a book called (I think) "Game Programming for Teens" which includes a limited but free version of BlitzMax, along with easy walk through tutorials, sample code of some simple working games and that kind of stuff.
TRS-80 Model III & TRS-DOS 4TW
Get him to visit a demoscene event like the ones at Assembly.org - while those have plenty of gamers, programmers are the people treated with respect there. Then again visiting such places does carry a risk - such an environment might also spark interest to such dangerous subjects as *gasp*... women in addition to programming. But then again is that so bad?
A great Java framework with a dumbed down IDE and easy to make visualizations. Tonnes of sample code and very helpful community: processing.org
Why not check out arduino? In that way he can learn to code and also see instantly how his stuff comes to life. It is real fun and he can start with some of the packages they sell on the internet. THey have a lot of sensors, screens, etc. A good small starting project could be an alarm clock or an alarm that triggers when someone enter his room. THat is fun and also adds the electronics knowledge.
Wow a lot of people have responded. I guess at this point Im just jumping on the bandwagon because really, who's going to read 400 something comments about this but...
Like others said, programming is like Math... most people can perform to a certain level being guided through the process but have almost no interest in it. They can see how the final result (a proven formula) is useful to them in various other professions/activities but don't have the interest, or right kind of thinking process to develop a formula themselves. Replace formula with program and we're talking about the same thing really. Perhaps unlike Math programming does appeal to people for all kinds of reasons, seems like it'd be good money and a growing field with opportunities but you'd be doing them a serious disservice to try get into it just for potential job prospects if they don't have the 'knack' for it.
On the first page of these comments is one which the user says they work with teenage boys and have noticed they eventually find something and just go about doing it, whether you want them to or not... I think most of us remember being teenagers and what it was like then.
You can't tell someone who they should be... the best thing you can do for your teenager is show them as much of the world as you can. Tell them about various professions, sciences, arts and try to get out and actually show them anything which catches their interest... expose them to as much as possible. Teach them early about how everything in our industrialised world links into one another... There are scientists who do very abstract work and document behaviours of various elements/phenomenom, engineers who try to find ways to use that to do something interesting, engineers and designers who turn that interesting idea into a plan for an object, more engineers and designers who take that plan and turn it into fine grained plans ready for production, production people of various kinds who master working with particular materials to create objects others have designed (and in the process gain skill for creating their own items), people who assemble, people who test, people who document, people who photo, people who market, people who sell, people who support. Teachers who teach others basics so they might find their own path, people who nurse the sick and infirm, people who enforce laws either physically in the world and with their great understanding of written law and it's application... so many things in the world to do.
In the process of them seeing all these things happening in the world around them soon enough they'll focus on something and at that point, all you can do is your best to support their thirst for more knowledge.
Side note, another funny thing about teenagers. They're super keen to learn, but the word learn is associated to school where they're forced to do things they're starting to lose interest in. Obviously they should at least finish highschool and do their best in things they've already eliminated as uninteresting to them but by early teens they're already choosing their path and you can see how thats going by which subjects they're starting to fail in and which they're excelling in... support them in the path they're choosing and help them find the particular specialisation their skills are best matched to and then I think you'll also find, most people are interested in what they're good at and good at what they're interested in... so much that interest and talent are almost the same concept :)
muds. if he likes games, actual games, if he cares about the mechanics. muds will do it. easy to get into, easy to progress to programming, and tons more depth the more he gets into it. if he can't do without the graphics, could always help him build an mmo, i'm pretty sure there are a few open source ones out there. either way, the toolset only goes so far and instils a hunger for more creative and mechanical control that only programming gives.
Colobot is a nice game that, during its time of release, provided an educational experience that wasn't so dry. I think it is a good approach for teaching coding basics which is interactive and fun. The gamers get to see direct impact of their coding skills in a game environment. Its easier than setting up an SDK of a really popular game but not as dull as reading a tutorial from Chapter 1 and printing text statements. Of course if said gamer isn't that interested in coding he would probably need something else to keep his interest going once the novely of this game wears off.
http://www.ceebot.com/colobot/index-e.php
I was a gamer when I was younger, and I always wanted to learn how to program/make games. My trouble was finding a code I could learn quickly. Early in college I took a C++ class, but I became frustrated because of how much effort (both the learning the language and the typing) there was to produce something simple, and I did not code until years later. I started again in grad school when I needed to code for research, and I taught myself the style, structures and algorithms I needed using python, then I went back to C++ once I had become a decent programmer in python.
Based on my experiences I would suggest getting the kid a book on python (the libraries are free online), and then try to suggest an "interesting" problem. Start with simple stuff and try to have rewards for both making it work and making it better. Maybe have a competition to see who can solve the problem more efficiently the parent or the kid. Just try your best to make it fun until he learns the basics, then it can become a tool, and if he likes using it, he may decide to make simple 2D games, and python has plenty of libraries if he wants to go to 3D.
-kratz
The best way is to give him a real-world project that will force him to program. Have him make a web site, or set up a web server from home so that his friends can log on over the internet directly to a computer that he controls.
Be aware, though, that it really takes a special mindset to not only enjoy programming but be good at it.
They need to really have a strong sense of order. Attention to detail is required. They need the ability to concentrate very hard and be able to flow chart behavior in their heads.
If they don't possess these skills, they'll find programming intolerable.
I love programming. But when I first started, I thought computers were only good for games. I thought programming was retarded. But by my senior year of college, I took on a project that required assembly level programming of a dsp chip, and that hooked me. I enjoyed the zen-like state I went into when I started programming, and I enjoyed putting code in order. I used to spend lots of time as a kid building snow forts and arranging the best location for my snowballs for a snow fight. It's the same sort of mental pattern I use when I program as well. Now I program at work and in my spare time. I love it.
Actually, that's interesting you pointed that out. Maybe perhaps big name companies with boat loads of money SHOULD pay kids to learn computer programming. Or at least have a reward system like you mention. For instance, a simple idea could be, to make a comment entry form using html and javascript, and the more creative your result is the more points and money you can be rewarded, which can earn the kid money for school. Heck, EA can run a programming teaching software that is simple enough to use and to understand programming logic, yet powerful enough if needed to do big projects. And the programmer can be paid some money or earn some points towards free videogames, computers and the like. I remember there's an article somewhere online on a particular school that rewarded their students to do well by paying them real money to get A's in class. And it worked quite well!
Yeah, I DO notice the lack of girls in my computer courses. At least for like the programming and a bit more in depth computer courses. Maybe schools should pay girls money to get into computer science, that way we get a much more varied populace in our computer science and computer related programs. I'm pretty sure girls have great ideas that could be put to good use as well!
Ask him/her if they would like to learn programming.
Ask them what they already know.
Tutor them through a simple input-print-type program.
If they, on their own, keep working and improving it, they will become a coder. If they don't, they won't.
Okay, if the kid isn't interested, the attempt is doomed to fail and you should let him/her learn whatever else they want. All this pressure to be "good" at something long before they can even get a job tends to ruin relationships and doesn't particularly help anyhow. Better to just let them play games if they feel they need to do that to compensate for school stress and all that.
But you can however, make an attempt to sit down with them and show how it is done on a few evenings. Kids, even older ones, actually like to do some learning with their family. You'll however have to accept that it may not be the thing they want to dedicate their lifes to... but it probably is no problem to get started. You can also do various other things. Teach how to cook. Teach how to chop wood. Teach how to drive. Teach how to fix clothes. Teach how to tend to plants. Whatever. All of these skills are useful and something you can do as a parent, they'll strengthen family bonds, and if not done in excess can be very good edutainment.
You really think he spends all those hours in his room gaming?
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
Set up a game account - then to get money put into the account projects must be completed... The latest games may be purchased from the game account.
...or maybe they will be like us amd just dig the power and control.
I recommend starting with Game programming. That is what got me interested in programming originally. Kids like games and often they want to make their own. Game programming is a natural jump from gaming. I highly recommend Game Maker. It lets you start making games without coding and then you can gradually start making the games more advance by coding. Game Salad is also an alternative. It has no coding but you learn how to create logical structures. For more advance users you can try Unity3D. Even my wife thought that was a lot of fun.
The Brick engine may bridge the gap.
Coding simple games leads to a better understanding of how games can go together
http://rs.tc/br/doku.php
So, as suggested, modding games is a great way to harness the enthusiasm for games which is critical. Dont just have an agenda to teach programming, be flexible - if their journey into game related stuff veers off (for example) into a graphical or design direction its important to support that equally and not show a bias / agenda. Also worth considering is flash & scripting as that's pretty approachable and can offer lots of extra complexity that grows with experience. But be prepared to offer support when hard patches arise (as teenagers can sometimes have short attention spans for problem solving!) Be wary of helping too much though, the geek mindset is to jump in with both feet to help and it's easy to forget that young people need the freedom to be creative and make their own mistakes - that's how we learnt in the first place too :-D
If I were a parent, I would say no to consoles in the house, but get my kid a really nice PC. PC Gaming is much more likely to lead to modding which will in turn lead to creativity, and that may be in the form of programming.
Also, "important" is subjective.
Yep. With gaming, it all depends on how much detail is consciously examined, i.e. if the player is good and they know why, they've exercised their mind.
The first two examples that come to my mind are wall jumping (Mario) and bunny hopping (Quakeworld). But obviously, I'm in QA, not a dev.
Coding is not "art".
Why coders can't live with the fact that their profession is utilitarian in nature and essence and be happy with that?
IANAL but write like a drunk one.
Traditional programming platforms take years to make any games up to todays high standards.
Unity3D has a nice WYSIWYG editor and plenty of copy and paste code examples so you can make a pretty good looking 3D games in days.
Additionally, maybe the kid won't interested in programming but is more into arty stuff like modelling, texturing and animation. Unity3D can introduce them to all of these things.
http://unity3d.com/
Associate the kid's interests in games with examples of what coding can do. If there's a great metaphor to relate something done with code to something a person already finds interesting, coding is suddenly similar to a familiar world they enjoy.
If you know the kid, looseBits, get to know their games and what it is they like, or comment about. Then reference some cool coding that acts in a similar fashion.
Do they respect the advantage of playing strategically as a team over just having really good aim or strong spells? Of course, because a tricky shot isn't so important when the enemy is in a vulnerable position. What if there was a way to have code strategically organize a display of colors so more were shown than were allowed?
It would be difficult to find somebody whose interest in programming isn't sparked by something like that.
Don't do it... He'll just sit in class playing WoW all day. at least 50% of my classmates did.
I have an alternative viewpoint, I think you should introduce him to Qt the c++ related gui production system. Within a few tutorials you can create simple spreadsheet programs, phonebooks for your contacts, so very quickly you get quite gratifying programs for very little effort.
Hope that helps :)
You could always look into BYOND -- it's a free game programming platform that's been around for quite some time, and is still evolving. It's a great language to start off with and it also helps you learn the lower level languages if you get the basics down.
Challenge your kid with the fun sides of coding!
- Developing servlets on Apache!
- Making toys searchable in Solr/Lucene!
- Upgrading a sound driver to get Skype to work on Linux!
Don't forget that kids tend to get overwhelmingly excited by stack traces!
Come up with a simple way of making his games not run. He will spend a lot of time figuring out why. Increase difficulty everytime he comes up with a solution. I learnt programming this way when our teacher simply took the games of our school LANtastic menu, in the process of figuring it out I read as many batch scripts as I could to alter the boot parameters to bypass the LANtastic password manager allowing to play golf and test-drive to my hearts content. He could have just taken these games off, but I think he wanted us to figure it out.
Make him program games?
His parents are wondering how to get him into biology and medicine so he can be an ob gyn. Any ideas?
Democracy Now! - your daily, uncensored, corporate-free
10% percent of coders play games.
Only 1% of game players code.
And only 1
Leave him the fuck alone. He'll figure out what he wants to do on his own...
"Gamemaker" is what got me in to programming. It's a game creation tool (for windows only unfortunately) which is perfect for introducing someone to and sparking their interest in programming. I think i was actually about 14 when i started using it. It lets you create simpler games with no knowledge of code (just drag and drop action blocks in to events) and so it gives a very high ratio of "satisfaction from cool end results":"effort put in to learn skills".
Soon however you find your creativity in game design held back by the drag and drop tools and you start dragging in "code blocks" which is the gateway in to real programming. It uses a nice high level interpreted language which is... well very forgiving. Again you get maximum reward in terms of cool end results for the work you put in to learn the skills.
Then after a year or so you realise the limitations of the environment you've spent so long learning and you move on to grown up languages and you despair at how much effort is required just to get an empty window to display, but you soldier on....
Well... that's my story
Buy the kid "Torque for Teens" book and download the educational version of the Torque engine: http://www.torquepowered.com/
Then he can create his own awesome games right from the go, and the learning curve is small. It doesn't take much to get started, but you have to work to be great :)
Set him loose.
Give him a copy of Nisan & Shocken - The Elements of Computing Systems. That way he`ll get to run along in the innards of what he`s reliant upon for his fun.
And then give him a copy of Serial Experiments Lain. Then he`ll wonder about his own innards. Double the fun.
It might be advisable to have somebody ready to do the deprogramming afterwards though.
I recommend Game Maker. Even though it's a simplistic game creation tool (where you can simply drag & drop commands instead of using the build-in scripting language) its accesibilty makes it fun to use for beginners who like gaming. Experimenting with this is a good way to learn how to solve typical programming problems and it also gives you a basic feel of how programming languages work.
If he doesn't like working with Game Maker, coding is probably not something for him anyway but otherwise it's an excellent start.
Just show him the Source SDK from Valve.
It's free, very very easy to get into with the available tools, and has a remarkably helpful community if you treat said community with respect.
Making TF2 levels/maps and/or HL1/2 levels/maps is very compelling, once you've played those games.
Of course, it's all just Quake and Worldcraft ~13 years later, but still, I can't think of any better way to get anyone onto the map->modding->coding path.
Second choice: NWN1 and the Aurora SDK. Same deal, but different genre.
Seriously, the way to get kids into coding is to get them into robotics. Check out http://www.botball.org/
A good robotics kit will let you build a simple robot, and then make it do things with software. The first time you build a simple robot that follows a line, you'll get hooked, because of the physical response to some text on a computer screen.
Children need to experiment. All those who hate BASIC without understanding VB etc., have to realize that VB has underlying BASIC code. BASIC is simple programming languages without type checking etc. One can teach a child not to use GOTO etc. The parent should give the child a challenge to write a program for a simple game. If the child takes it as a challenge, then the parent has broken the ice and the child will proceed to explore more about CS and other programming languages etc. The goal is not to make the child a BASIC programmer rather to allow the child to explore the programming ideas. I have done that successfully with two of my children who now program in C, scripting etc. You have to look from the child's view of what is easy to learn rather than what one ideally should learn.
For a game-obsessed teenager, maybe the best approach is to point him towards a visual development tool (where no actual code is written, and the learning curve is low, but it still teaches the fundamental programming concepts). Something like Illumination Software Creator. http://radicalbreeze.com/?page_id=102 That way he can make real software in an approachable way right off the bat. Might help to keep his interest and focus.
I would recommend game maker (http://www.yoyogames.com/gamemaker), you can make games as soon as its downloaded and then supplement them with code for more advanced functions. I am a first year games computing student and had an assignment which had to be done in game maker.
Sitting in front of a computer/console all day has ZERO correlation with being a programmer. Some people sit all day on facebook and MSN messenger, does that mean they'd be good coders? Nope.
If he was cut out to be a programmer he'd more likely be taking the thing apart than playing games on it,
No sig today...
Tell him he can get all the free games he wants if he learns how to break their security
I've tought grade 7 kids to code using Ren'Py (renpy.org). They can program visual novels pretty simply and it can lead to more in depth programming using Python.
I worked as a computer camp counselor for several years and had gone as a camper in years prior. When I started at the camp (in the 90's), it was basically a small group of nerds getting together to have fun coding, playing games and learning about cool new technologies. Everyone who was there enjoyed it and wanted to come back for more the next summer.
Then the dotcom bubble hit. Attendance at the camp nearly tripled and, for the first time, you started seeing kids come in who didn't really want to be there. They wanted to engage in traditional summer camp activities and did not do very well on their programming assignments (either due to lack of aptitude or lack of desire). This made it tougher for some of the counselors too. I was fortunate enough to be teaching the advanced kids who really wanted to learn, as I did when I was one of them (they had to regularly kick us out of the computer lab so we could get at least *some* exercise and sunshine).
Anyway, long story short...If you're kid is not into programming or any other area of IT, don't push him -- It won't work out well for either of you. Let him play all the games he wants as long as; he is getting good grades in school, and it is not interfering with his social life. If he has a "B" average or better, and regularly spends time with friends rather than being completely isolated, then he should be able to play all the games he wants.
Show him Second Life (Teen Grid) and let him learn scripting in the virtual world.
Microsoft released a programming environment specifically for this called "Kodu". It's free. It allows you to create your own game without knowing any programming language (it's all visual). Introducing this to him will definitely help to see if he's interested in coding at all. The options are limiting, and if he feels limited, he'll probably want to move towards a more advanced engine and language.
From my own experience, I know that I just didn't have the right education to learn to program games that young. I started learning basic, but I could not program graphics. It takes a lot of sophistication to program anything significant now, and it's really hard to get a kid interested by saying "put 100 hours into learning this, then 100 hours into make this, and soon you'll have something slightly better than pong!" You need more immediate feedback, which is why an engine is the way to go.
I work full-time for a game studio and have taught a course in video game scripting at a local game design school. These kids were a lot older than 14 and PAYING a ridiculous amount of money to be there (about as much for a year and a half as a full 4-year BSc). I had lessons where you would get near-instant gratification with just a few lines of code, and I still couldn't keep their attention. Most would rather just be level designing. So I wish you luck, and don't force him into anything. If you force him, he'll hate it for the rest of his life. Even level design leads to a good career though, so don't force coding down his throat. Kodu will also help with level-design (but then he'll probably move onto something more sophisticated, again).
Way back in the day, my dad told me I could have a modem for our TI99/4A.... just as soon as I wrote a driver for it.
I saw no posts modded "5, Informative", so I thought I'd take a crack at it.
http://www.alice.org/ - software designed to disguise programming as storytelling. Aimed at young children and women, not really suitable for the 14-year-old-boy types.
He likes games, so start him onto games. Most first year computer science students at my university think they want to develop games. They figure out differently by about year 3. Start with Unreal Engine 2, or something like that, and let him build small levels for Quake/Doom/etc. There is a fair amount of programming-like scripting that goes into level generation.
Find which game he plays that has the most ability to be modded, scripted, or otherwise programmed, and see if he has any interest in that.
Quake(1) used to be great because quakeC is really easy to get into and there were ftps full of example code you could easily modify, but I dont expect a 14 year old kid today to have any interest in the classics.
Halflife1 or 2 are both okay starting points if you're okay with buying him his own server for him to mod with Sourcemod or Metamod, again a lot of example code to work off of.
World of Warcraft is not a bad way to go, there is a lot you can do in LUA as far as making addons goes.
As far as upcoming games, Natural Selection2 will be a great one since ALL mod code is done in runtime modifiable LUA, and its going to ship with its own debugging tools and dev environment.
All of these will be a great way to teach him basic programming logic because he can easily see the results of his code and keep it fun. It's not fun to print Hello World anymore, but it's fun to make your nailgun shoot rockets.
If he's in to console games, or strict console ports (like Modern Warfare), there really isnt much he can do to expand the games since they are so locked down.
Most of what I listed has been FPS games since thanks to iD software they've always been the most open. Theres a lot of other ways to go depending on what he's interested in. MUGEN lets you make fighting games really easily, and there are some other 'game developing studio' type games that might be worth checking out, but the problem with those is unless he already has an interest its not going to compete with what he would rather be playing.
Theres also thriving romhack communities for games like Super Mario World, but i'm not sure anyone should start learning to code by patching in ASM to other peoples code.
Start him with game hacking/cheat coding. To get him right into things set him up with a nice base to start on and point him in the right direction. I have been amazed at the complexity and scale of some game cheats i have seen coming out of teens and i have also been amazed at the sheer stupidity of most.
You don't, programming is a boring and tedious task, too many people glorify it as some sort of end all nerdskill, but its just as useful as knowing anything else really. Why not teach your kid how to use Maya or Blender, sometimes people that aren't into technical things are into creative things. The only real compelling notion of programming is video game programming, and because it is so complicated and difficult to do successfully, many people never even venture to that level.
You didn't say what kind of gaming he's obsessed with. How about using the editing tools to create his own castle in Oblivion? Does he or she play WoW? Get him a book on coding WoW add-ons using LUA. How about sh'mups? Simple level design using a decent FPS engine. There are also some simple front ends you can use to put together a simple Xbox 360/PC game using Visual Studio Express and XNA creators club. It may or may not lead them in the direction of programming, but level design is a multi-disciplinary skill that could lead to study in other creative areas like industrial or 3D design, scripting, etc.
In short, give him some tools that work with his interests, and let his interests dictate what direction he wants to go in.
"Can't you see that everyone is buying station wagons?"
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.
You need to re-read the datestamp on that news item, n00b!
How about you let them figure out what they want to do on their own, or encourage them to do something. Pushing your agenda on your child is a sure fire way to just loose a child.
If he/she is not into it right now, they probably won't ever be. That might change at some point in the future, but a 14 year old kid is ... A KID and wants to have fun, stop trying to treat them like an adult.
Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
Try getting them into coding either hacks or mods for the game he plays the most. It would seem relevant and cool to him... I guess :/
Would you hug a bear?
http://robocode.sourceforge.net/
Write Java or .NET code to destroy other bots! I haven't played/coded-for this game in several years, but I know somebody with the exact same problem as the Ask Slashdot poster... And the game is genuinely a LOT of fun, as there are lots of other bots freely-available to compete-against, some of which are pretty sophisticated (implement statistical targeting, a genetic algorithm, etc.).
See also IBM's introduction to it way back in 2002 -- which was around the same time a previous Slashdot article pointed me towards the game: http://www.ibm.com/developerworks/java/library/j-robocode/
Is Capitalism Good for the Poor?
Firstly, let me say that I don't think it's your job to coerce your child.
Anyway, I got into programming when I was around 13 because I was a leader of a "clan" for the game Delta Force 2 and I wanted us to have a webpage. Now I'm a software engineer and I work for NASA. But, I'd have never gotten into if my parents didn't take the parental restrictions off of my AOL account so that I could play online.
Cheers
Anything can, could, and will happen.
Get him into model railroading with a computer and network attached .Then he can program the trains to run ... or not. Sometimes they don't run anyway, with or without a computer. Some times they run into each other head on like in the real world. For this he could make $200k a year or lots more with an MBA.
I surprised that there hasn't been a lot of talk about second life but it seems like most people are to busy being caught up in their own self justification than posting a useful comment. Second life is a huge community of coders that create some amazing things ( although may want to wait a fews years as 80% is porn related ) but my brother is 14 and plays it 15 hours a day and now helps me sometimes with my visual arts and comp sci classes. He stays away from the porn parts on his own but my mother is five feet away from him most of the time anyway.
People have this misconception that things were easier when you would manipulate individual pixels on the screen (directly to the memory/registers the display was reading from). The thing is you can do that with a variety of libraries basically as easily and in some cases more easily than you could before. Just check out SDL or SFML. Especially in the case of SFML, you can move on to adding OpenGL code into your application when you feel you are ready.
The want must come before the means. The real question you're asking is how do you get a kid to want to make something instead of watching a movie.
Any interest can be enriched by a greater understanding of science; for the electronic world: A CAD project could help design a better skateboard. Knowing the deterministic nature of processors will give insight into NPCs. Linear programming can show how to maximize damage output. A bit of x86 instruction set mixed with a debugger/disassembler could unveil the hidden variables in any PC game. et cetera ad nauseum.
My advice: if you want a kid to be productive, get them to make something. Buy some wire strippers, a cheap multimeter, and an electronics kit from NerdKit.com (if nothing else, the kid can tell their friends that his/her parents got them a pair of strippers for their birthday). I recommend NerdKit because it's specifically designed to be interfaced with the computer, so it gives the basics of scripting and electronic engineering in a neat package.
Instead of Coding how about designing game levels with Unreals Game engine? Which can lead to model building in a 3d package which most have a language back end.
3dbuzz.com has a lot of free resources on various packages.
Find a local game developing studio and get a tour for him to go through to help motivate him.
-Ak
Why not trying to get him into programming challenges or simple hackgames? (es: Projecteuler and python or then writing his own bot for simple online games) I think that it could be a good starting point for playing and programming at the same time. Or show him some crazy coder stuff on thinkgeek :P
I'm amazed that no one has yet mentioned XNA Game Studio, available for free for all students (www.dreamspark.com). It might be at first intimidating for a newbie programmer, since it provides a full IDE interface, but there are a good number of walkthrough tutorials allowing you to make a game of Pong in a short time, and a 3D space blaster type game in a bit more. It's also compatible with the Xbox 360, so if he has one he could create simple games to play on that. It's probably a bit more attention grabbing for the son than the old BASIC code that most people seem to be reccomending...
Ubuntu user #11075
...and was already doing some simple(and not so simple) BASIC programming.
Then as a kid, I got enrolled in a more structured programming course and after teaching the basics IIRC they had us write a game or whatever, plus they showed us some other games that were simple enough for us to emulate given our lowly 1337 skillz at the time...
Anyways, why is this kid allowed to spend ALL of it's time gaming anyways? And more to the point who's funding the habit? The little bugger should be usefully employed in doing things like the yardwork and other chores for a limited allowance. Probably should also just outright limit gaming time.
Buy him one of those simple robot kits (like lego mindstorm or something) The things are fun... but utterly useless without programming
make him feel bad that all he ever does is playing silly games - esp. stress the fact that you are totally ashamed of how he "wastes his life" by beeing probably the lowest form of consumer instead of actually doing something productive with the computer YOU bought him. forbid him playing at random times, if neccessary power off the computer yourself - or sanction him otherwise.
if you'd keep this up for a little while he will try to hide that he's playing and eventually try to impress you with what other interesting things he found out his computer is capable off (f.e. programming). you should keep the pressure up until he keeps going back to his new interrest out of his own free will - remember to compliment him on his new found skills from time to time and support it.
this is a tiresome process tho - would take AT LEAST half a year of constant pressure, which most loving parents are (or should be) incapable off. additionally chances are n:1 for him to pick up programming in the process (while n the number of productive or semi-productive things you can do with a computer, and thus chances could be slim).
good luck
"If the kid in question isn't already curious about programming, I'd bet money he won't ever be."
That's not a great bet to make. I had no interest in programming, hardware, or even really using a computer until I was about 22. I played games but they were just games, not something I was interested in doing as a hobby. My school didn't really have much of an IT programme beyond "touch-type all this crap into a word-processing terminal so you can earn minimum wage doing exactly that when you leave here!" It took watching a roommate put a PC together for the first time to get me interested in it. I'm a late starter, but I can match the profile you've posted word-for-word and I f*cking LOVE what I do now.
My point is that it's never too late to develop an interest. It'd be a real shame if it turned out that the kid would have adored programming if only he'd been introduced to it by somebody who knew how.
Well, let's see, I was already pretty enthousiastic when I was 14. I used to break open the pc tower just to dismantle it to its bare parts, and then reassemble it before mom and dad got back home. Didn't always work, but I fixed it, learned quite some things, and broke a few.
We had IT as a course in high school, TurboPascal IIRC. For some reason that just worked out, I didn't know anything else but the very basics of TurboPascal, and looking back now, perhaps they could have taught a language that still had some relevance. TurboPascal didn't interest me, I was good at it, and helped the others out, and explained to them what did what.
I self-taught myself HTML, and covered it again in a voluntary IT course at the same school, and that _did_ light the fuse. I mastered HTML quite well, and wrote my code in Notepad rather than any WYSIWYG to be able to see what did what, and what effects my changes had on the final result. Then came along its friends, like JavaScript (back then rollovers were mostly JS), and even a little CSS. Once there it only got bigger, once I realized that I was copying my own code instead of generating it, I started looking into PHP.
Instead of finding myself some free hosting, I mucked around for days with Apache, MySQL and PHP, but at last I had my very own local server, and my first look at phpinfo() made me quite proud of myself. I even dabbed with ASP for a while, but didn't like it too much.
It would remain quite stationary for a few years, but I brushed up on my coding skills and solved errors as I encountered them.
It wasn't until university that I started to use an IDE, while we learned the basics (C,Java) on a command line, C++ was taught in combination with Visual Studio, I never really liked Java back then, don't know why. And as I became more fluent in C++, someone pointed out to me that there was another potent language available for use in VS, namely C#. I never did much in it, except for some quick sorting algorithms if someone I knew had 'a lot of data on a subject' and needed to do something to that data. Later someone showed me how to combine both my passion for websites and my then still very basic knowledge of C#. As I had also already had a Databases course in the meantime, I could find my way just fine in SQL.
So now I make ASP.NET websites, create Flash animations, write SQL queries and debug style sheets in Firebug. I like challenges, I like it even more if people claim something is not possible.
Perhaps another angle, does the subject like to tinker with wires and LEDs ? I had a basic electricity kit when I was that age, and while it didn't do much, it did have a sort of simple CPU block you could use. You could make very simple things by following the manual. I believe I also had a secondary kit, which consisted of some magnets and some other electrical components, which could make a rotor spin by magnetism. It did show in a vey clear way how it 'worked'.
Something I've only seen in a course last year was combining both very basic programming (called 'Processing') and some very basic electrical wiring (with everything you need to know about electricity also included) in a book called 'Making things talk'.
They take some very generic household items and add something extra to it, while it often wasn't that useful, it was interesting to see a product being augmented by adding technology. I quite liked it. For example steering pong paddles with the arms of a teddy bear, or making the mat the cat sleeps on aware if there is something on it, and hooking that up to a webserver.
The guy may be completely different than me, but here's how I went from gaming to coding:
I played a lot of Duke3D. Some day I started using the level-editor and I took the time to read a manual (not the official one). I loved to produce game related things instead of just consuming them.
again, he might be completely different, but learning the level-editor was my first step to becoming a graduate computer scientist.
The MAFIAA is a bunch of mindless jerks who will be the first up against the wall when the revolution comes
programming is an itch, like music or art, but if you want to try game programming or computer art using free downloadable stuff, Blender is a place to start. Before download, checkout Blender 3D Noob to Pro or something like that on free wikibooks. that let's you build kewl stuff without a lot of money.
When I got started into programming (I was about 8 or so) all I wanted to do was make the games I was playing, I really loved how creative the people behind the games were and I wanted to be like them. So, I starting googling "How to make games", etc. When I found out about the whole programming thing, I started with the most basic one out there, HTML (I know it's not really a programming language, but whatever) and just kept on progressing until I got better. Javascript, PHP, Visual Basic, VB.NET, C# and now C++ is where I'm at. Maybe you should tell him that you can make games by using programming. It really motivated me.
No!
It's never too late, in my not so bloody humble opinion.
If the kid liked playing with Lego, Mechano, (K-Nex these days?), making wooden stuff or even sand and snow - when younger, then there's a good chance that the spark is there. There are scads of other possible indicators that the talent might be there, too.
I think one needs a bit of logic - but not as much as people pretend - to be a decent coder. A lot more different talents to be a great geek, but there are stacks of different sorts of geek, so even which skills one is best at is just character.
What makes a person have potential as a geek - and I think there is just one thing:
You have to like to fuck with shit .
Games got me into coding - I liked to play them, and I wanted to make them. Turns out, I enjoyed coding as much as playing games. I discovered I loved debugging, optimizing, and just writing regular code.
Some kids these days are just getting into coding. Go check out the forums - it's bizarre, they chat like lolcats on meth, but some of them ask real questions and are seriously banging their heads on shit. Answer their questions. I see kids trying to make USB video game controllers using common microcontrollers (AVRs and PICs) to bit-bang the low speed interface - they want to know why their out-of-spec stuff works on the right USB port, but not the left on their laptops (yup - Apple). ;] They need help with problems. Sometimes daft, and sometimes not. Sometimes you remember the class of bug that they are hitting and how long it took you to crack it the first time...
Maybe if we knew what sort of gamer the subject was we might make a claim as to what sort of coding they might enjoy. Ultimately, the way to find out if someone likes to code - is to try out coding with them.
Personally, I love pairing, so taking a newb for a ride can be a lot of fun - they can get to see a program develop a lot faster than if they had to crack every problem themselves, but if they are still typing in the whole deal, it will feel much more like you showed them how, but that they actually did it.
And - you know what? A friend of the family was a coder - he noticed that I liked video games and showed me how one can write them. First via typing things in from Compute! (and perhaps BYTE, is blurry memory)... then via coding in basic - ultimately someone gave me some books on C, and I got a compiler off of a friend in class ('this thing is five disks, and it's not even a game - yer nuts!')... thing came with a shell, micro-emacs (shudder), and a debugger. Debugger meant I could see what my code compiled into, and thus I fell into the hypnotizing pool that is assembly on the 68K...
So:
I call BS on there not being fresh kids getting into it. Look at robotics, the maker scene, Ubuntu, the modding and addon gaming scenes - find folks who have questions that you know how to answer - and bloody well help them.
dfj
PS: The era of 8-bit pixels was the 90s - for consumer-level hardware, if you recall. The 80s were all that irritating bit-planes, monochrome, four, 16 - even 12 colour modes. Don' even think of telling me to get off yer lawn. ;]
The blender noob to pro wiki book, and some python tutorials, they can easily interact with objects in real time in 3d, you can make a basic fun interactive game in a few hours, and can take it as far as you like.
http://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro
What about something like Robocode, that requires programming to compete in the game?
http://robocode.sourceforge.net/
Import a 3DS model of his favorite character into /* Macromedia */ Adobe Director.
I would choose something very graphical and with fast results, like Processing. Start with some simple ball physics and soon he'll be in love :)
Instead of starting with code, start with design docs.
Have the kid start drawing and writing concepts they are interested in.
Ideas for characters, enemies, level designs, screen layouts, etc.
Buy some graph paper.
Then, after kid has some ideas in place, do you let them at any form of code.
Now they have programming goals and specific problems to solve via code instead of random poking around with code and getting bored / giving up.
I say that the best way to start is web development as the basics such as HTML and CSS are much easier to pick up than most programming languages. Then maybe, move on to interactive VB.NET modules and the like as it is one of the more simplified languages and the teenager will appreciate the extensive GUI tools.
There's a reason many of us young 'uns started with the web - in 30 minutes, I can teach someone to make an html page with images, different colors and sizes of text, and links to other pages. You'll learn how to do loops (in javascript, probably) when you find a use for it.
have you read the Moderation Guidelines Addendum?
Set him up with the tools to do simple coding. That might be an installation of Perl, a barebones HTML page for writing Javascript in, a purpose-built teaching language in the style of LOGO or Processing, a graphics calculator, an Arduino, ZZT (google it) - the list is long. The hook into coding is being able to make it do something interesting, just like the hook into learning an instrument is being able to produce a sound you like on it. The direction taken from there (circuitry, web development, graphics, hacking on games) will determine what is appropriate to do next.
You can't make someone into a coder if they aren't that way inclined, but you can provide an environment which will make it easier for them to pick up- it's like giving them a guitar instead of a set of bagpipes.
The other thing to bear in mind is that kids often have short attention spans, which mean they will only put a lot of effort into something they find immediately and deeply rewarding. Though I have been coding since I was a young child, I didn't write any "serious" programs until the age of 17 or so because they required more time and effort than I was willing to devote to the task. Increasing age exponentially increased my attention span, so for a teenager the best you should hope for is to get them writing some "mickey mouse" programs that demonstrate what coding can be. The rest is entirely up to the kid.
And +1 what everyone else said about pushing someone into an activity they don't want to do.
A few years ago... when my son was 11 or so... we got him into Scratch classes at the local community college... He liked it... this year in his 'you guys are stupid' 13th year... he asked to take a python course... ( admittedly we were forcing him to take a remedial class as well... but to fill the day he chose Python)... I also recommend using an open source machine for them to learn on... its a great way to have lots of code to tinker with... Cheers and good luck inspiring the kids... Jeff
Due to the fact that it is nearly impossible for a beginner programmer today to develop a play worthy game by himself without a lot schooling, time, and patients, why not look at the type of games he's playing and see if there are any in that genre that have the ability to be modded. If he likes playing RPGs, have him take a look at Neverwinter Nights 1 & 2, which come with the same software that the Original and Expansion Campaign authors used. RTS, give him a copy of Warcraft & Starcraft and let him design his own levels and such. Platformers(ie Mario), if he has a PS3 then LittleBigPlanet is a good start there. These are just the 3 genres I am familiar with, but I am sure that there are other genres that have similar games that can be exploited for those that play games and would like to get into game development.
one of my first forays into programming was writing mods for Unreal Tournament 2004. It wasn't THE first, that was writing programs using TI Basic on my calculator to do my math homework for me, but writing mods was a lot more interesting. You could do something simple like change the rate of fire of a weapon, compile, and immediately see what you had done.
Get them to start playing Garry's Mod (with wire mod addon) it will turn the game into a game about programing. I've actually heard quite a few stories of gamers turning programmers due to this game.