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.
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.
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.
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.
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.
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."
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.
I can't believe I'm doing this, but it has to be said:
Have you considered Crysis?
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
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.
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.
I said "most" games.....Crysis is a benchmarking tool, isn't it? :-)
If you post as Anonymous Coward, don't expect a reply.
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
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....
Same. My first real computer was a 486. I didn't have the required RAM to run Decent, my most favorite game of all time. I figured out how disable the memory checking and was able to run the game at home.
The following has been useful in a classroom setting: http://scratch.mit.edu/
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.
Though I agree with the comment further up about how this whole thing is ill-advised and how a gamer is not the same as a proto-coder, I also want to second this.
Unreal coding is an excellent way to get your feet wet, in an environment where you can achieve cool, rewarding effects pretty early in the learning process(A simple 'gravity mod' is about four lines of code!). Not to mention Uscript's strong resemblance to Java makes the skills pretty instantly translatable to other applications.
DRM: Terminator crops for your mind!
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.
Back in my day,
And whatever you do, for God's sake, don't start your attempt to get him to start coding with "Back in my day".
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/
At the risk of going all nationalistic, I believe that this is one of the advantages that companies located in North American and Europe have in recruiting people. In NA/Eur people pick engineering / comp-sci. In Asia, your parents often pick it for you. The result is that a higher percentage of people in the field here have "The Knack".
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 :)
Calm down already, it's a 14-year-old. Give him a chance to try it at least.
If he has any interest in creating something (game, interactive story, animation, etc.) it might be worth having him check out "Scratch" from MIT.
My pre-teens have played with it a bit - it can be pretty fun, and one can see how it introduces a lot of coding thoughts.
http://scratch.mit.edu/
"Scratch is a programming language that makes it easy to create your own interactive stories, animations, games, music, and art -- and share your creations on the web.
As young people create and share Scratch projects, they learn important mathematical and computational ideas, while also learning to think creatively, reason systematically, and work collaboratively. ...."
I 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.)
This.
I think most of the people in this thread don't remember well what they first did on computers. For me, it wasn't creating things from scratch; that's too hard when you don't have the foggiest idea what you're doing. That would be like saying you learn music by starting out with a blank sheet of staff paper and an idea for a symphony.
I believe that most programmers started out modifying something existing - for me, it was University of Texas Super Star Trek and Crowther's Adventure. Before that, it was Lunar Lander on my TI SR-71 programmable calculator. It was easy (once you found the code) to change it, modify it, and see instant results in a sophisticated environment. For others, it might have been typing in BASIC games on their Apple II or C64, and modifying them to make them work differently.
Once you have the background as to how programs work, it becomes so much easier to realize a program that you conceive and implement yourself.
Or, you find that you really couldn't care less about doing this kind of work.
Modding an existing, interesting game - two thumbs up.
And the worms ate into his brain.
There's nothing "special" about a person who writes code. They've simply learned how to adapt their minds around the way that a computer solves a problem. Sometimes, having to go through this exercise means that you get new insights into the problem. That's why I'm a professional programmer. Other times, it's just a dull drag to get'r'done.
Until I went to college, I was "self-taught" in programming. I learned a lot of cool, new things in college, and I learned a heck of a lot more when I started producing code for money. I have the "knack" for it. But you know what? When I look back at code I wrote even a few years ago, it sucked.
Why?
For one: programming is an art, and well, practice makes perfect. That said, everyone sucks when they start.
But the other one, and Joel Spolsky says this rather concisely: it's easier to write code than to read it.
Discouraging people from becoming programmers because you don't want to fix their bugs is just about the lamest argument I've ever heard. Bugs happen, man. If we had a magic formula for writing software, guess what? We'd write software to write software. No one gets it right.
But 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.
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.
I agree with the other comments: if he doesn't have the interest, or if he doesn't have the aptitude, then trying to push him into coding is a waste of time.
That said: check out PyGame. PyGame is a set of libraries for Python, specifically intended for creating new games.
http://pygame.org/
Hmmm. I just went there, and it says that PyGame has now been ported to JavaScript. That probably makes sense, given the major efforts to speed up JavaScript in the new-generation web browsers.
At the PyGame web site, there are a bunch of games people have written, with source code available; and some of these games are half-done and half-broken. If he has the inclination to code, he might get interested in a half-done game and start fixing it up. Or even take a game that isn't half-baked, and start adding new features to it.
steveha
lf(1): it's like ls(1) but sorts filenames by extension, tersely
If he's been doing it for a week, and he's destined to be a coder, there's nothing you an do now to stop him.
OTOH, if he isn't going to pursue it and take it to the next level himself, he'll never be a coder. The most important point about good programmers is that they must be able to solve their own problems (that is, at its heart, what the job is), they have to be able to teach themselves, and they must do this continually for the rest of the their lives, or at least as long as they're still coding. If they don't have the ability and the drive to teach themselves, they will never be a good coder and it's a very bad idea to try to force them into it.
"Convictions are more dangerous enemies of truth than lies."
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?
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
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.
OK, it was a TI SR-56 calculator, when I lusted after a TI-59.
I thought SR-71 sounded suspicious.
And the worms ate into his brain.
"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.
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
Any programmer worth anything can do advanced math, like calculas.
Rubbish. I’d been writing code for years before I ever so much as touched a calculus textbook.
Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
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.
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.
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!”
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
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.
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.
There are some resources out there designed to attract the "gaming generation" into computer programming - it also happens to be a professional interest of mine (I teach primarily first year computer science).
Perhaps the most famous would be Alice (http://alice.org) - a drag and drop 3D programming environment.
Scratch (http://scratch.mit.edu) is a 2D drag and drop environment
Greenfoot (http://www.greenfoot.org) is a 2D Java programming environment
Env3D (http://env3d.sourceforge.net) is a 3D Java programming environment (Disclaimer: I am the author of this tool) - It makes programming in 3D very straight forward, especially for beginners.
Have fun!
This is the age where boys seem to be "lost" the most, and parents seem to get the most concerned about them.
I work with boys (save the jokes), and I've seen it happen in several cases, right around this 13-15 age range. They suddenly find something they're interested in, and they just DO it.
In one case, it was a kid who just suddenly found video games boring, and moved on to photography and writing. He's very creative, and he found this very rewarding.
My own son; was a Guitar Hero monster. And I told him (joking): "if you spent this much time playing a REAL guitar, you'd be a really kick ass guitarist, instead of just beating your friends at a video game that will be obsolete in 2 years. Which do you think you'll be thankful for, when you're my age?"
He sold his xbox360, and all his games, (I miss Halo 2. . . ) and instead of spending 6 hrs a day playing video games, he plays his guitar for 6 hours a day. And he's pretty amazing. Even if his dreams of rock stardom don't work out, he's going to have a skill and a developed talent he's going to use the rest of his life.
So - don't "push" him in any direction. But DO expose him to other things. (I think it helps if some of the exposure happened before video games came in). He'll push himself in whichever direction works for him.
My armchair-psychologist idea of why this happens, is they're still searching for an identity. They're trying to figure out who they are. You can also make them somewhat accountable for the decisions they make too. (ie. there are consequences to spending all your time on video games. . . failing at real life).
These are my friends, See how they glisten. See this one shine, how he smiles in the light.
I know he sounded harsh, but he might be right. Nowadays it's nearly impossible for a future coder to NOT be into it at 14 years old. I'm 24, and I started programming at around 13, without internet, with a gcc that I had gotten from a CD that came with game programming magazine and a tutorial from like the 80s. Nowadays if you're interested in programming you just have to google it, it's a great advantage and it's likely that if he hasn't started to become interested in it already, he won't, ever. I'm pretty sure most of the developers that started coding out of curiosity instead of being forced to do it by a college/parent will agree with me here.
Check out my blog!
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.
You know, Gates only started when he was 13. I don't think 1 year is going to mess it all up for this kid.
Comment removed based on user account deletion
It's a free and open-source Quake-like FPS. Usually the progression goes like this: Playing -> Mapping -> Scripting -> Coding. I've seen that progression played out several times in the community and myself (full disclosure: I moderate the forums and Quadropolis.us, the primary source for maps, mods, etc.).
Mapping is done in real time and in-game. A mere tap of the E key will switch between editing and playing, so you can see and test what you're doing immediately.
It's also designed to be light on resources. I use the (very underpowered!) open-source radeon driver to drive my Radeon X1600 Pro, and I can get a consistent 30 FPS with the eyecandy barely dialed back.
For a little more detail, here's the description from cubeengine.com:
Have you tried Alice?
I've abandoned my search for truth; now I'm just looking for some useful delusions.
I 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/
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.
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.
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.
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.
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 ;-)
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.
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.
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.
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.
I'm sorry, but I disagree. You're absolutely right that nobody is born a master, but some people simply don't have the knack. I've seen people that have been coding professionally for many years do things that make it obvious they don't get it and probably never will. Others see a pattern once and will pick it apart telling you if this is smart or really an anti-pattern. I don't mean the ideological flamewars of this approach is better than that approach, but picking good code from bad code, good patterns from bad patterns. There's always better but some are just consistently writing poor code.
Live today, because you never know what tomorrow brings
Show them how understanding code can help them compromise computers. Kids tend to enjoy breaking things.
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
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!
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.
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.
Runtime Revolution
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.
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 ;)?
The fact that you think calculus is advanced maths, tells me you've never seen advanced maths. Calculus is straight forward and sensible. Convolutions and inversions of n-polytopes - that's starting to look at the gentler topics of advanced maths.
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.
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.
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.
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.
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.
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.
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.
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.
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.
You really think he spends all those hours in his room gaming?
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
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
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.
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.
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.
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
"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
Let's just put it this way. The nature vs nurture debate is hardly settled.
US-UK-Israel: The real Axis of Evil
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.
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...
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.
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.
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?"
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.
Yes, it was BASIC (GW-BASIC, actually)... then when I went to community college they required a programming class and all they taught in the engineering department was Fortran, so I had to learn that. Then I went to a different college and turns out that to be taken seriously you really have to program in C++ so I did that as well. Then it turned out that to really really be taken seriously, you have to know how to write in assembly language, so I did about three different types of that (80x86, MIPS, and the Motorola 68HC12, IIRC)...
Then I got a job and the only programming I’ve had to do has been Excel formulas, SQL queries, VB functions in Access, and ladder logic for Allen-Bradley PLCs.
Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
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.
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
Buy him one of those simple robot kits (like lego mindstorm or something) The things are fun... but utterly useless without programming
"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.
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.
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. ;]
What about something like Robocode, that requires programming to compete in the game?
http://robocode.sourceforge.net/
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 :)
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?
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.