Hacker News new | past | comments | ask | show | jobs | submit login
How do kids these days get started in programming? (ensode.net)
27 points by vaksel on April 19, 2009 | hide | past | favorite | 41 comments



First, they make a website. This gets them acquainted with HTML and CSS. Then, they make another website, and then another one. Then they discover that Javascript or PHP can make your website 'do stuff'... which essentially means they just got started in programming. Hoorah! :)


Back in the day me and my friend ran a clan, playing the PC game called "Unreal Tournament 2004". At first we wanted a simple site to showcase our members, wins, information on the clan.

Then we wanted a way for people to apply for the clan and setup tryout dates. After that we wanted a system to allow other clans to challenge us and schedule games. Then we needed a way to host videos of games we had and let people comment on that.

As the requests and features piled up we went past HTML/CSS and found out about PHP/MySQL... the rest was history. Also, we were 14-15 at the time.


I'm officially old if you were 15 when UT2004 was out.

Take your same story (+4 years of age) and rewind 5 years (to the days of Napster) and drop the 2K4 from UT and you have my beginning to the world of web creation.


There are a couple separate issues here, and they really do need to be handled distinctly:

1. How do you get useful tools? Nowadays, you can just download free interpreters and compilers for several languages, etc. This is still a somewhat new phenomenon. (I remember saving for a while to buy a C++ compiler, as a teenager.) This has gotten MUCH easier, IMHO. Starting with a free Unix helps, because it will likely have development tools pre-packaged. Windows doesn't have otherwise ubiquitous tools present, nor the sort of culture that tends to accompany them.

2. How do you recognize what tools are any good? This may be getting harder. Any good advice is drowned out by the sheer quantity of contradictory advice coming from blogs, the reddit echo chamber, etc. It's not easy to figure out the implementation quality, availability of libraries, and other relative merits of different languages until you're already at least competent with one. (Python still seems to me like one of the better choices for a first language.) I imagine that a newbie being sold on [insert language] will probably just end up more confused.

3. There are numerous protocols, standards, etc., and it's hard to figure out which matter. JSON? XSLT? TLA? Learning which of these actually matter (and, really, which will still matter in more than a year or two) takes perspective that new programmers don't have. I'm not sure if this aspect has gotten better or worse, since a lot of old stuff that seemed crucial at the time has likely just been forgotten.


My daughter found a version of turtle graphics linked to by her class's website, and was thrilled to discover she could change the pictures by changing the program. (She's nine.) That's how she got started.


One of those 'back in the day' posts, huh? I was just a kid when I started messing around with the Hewlett Packard HP-41C programmable calculator. That was an incredible amount of handheld power at the time. RPN and maybe 256 bytes or so to work with? Even got a little app published in the Key Notes user's club newsletter, but I'm sure it was due to my age, not the quality of the code...

Then I borrowed a TRS-80 Model I book--the intro to BASIC book that came with every TRS-80. Read it over a weekend. I remember it clearly because we also installed a garage door opener that weekend. Big fun! (Looking back, a lot of the books in those days were really clear and easy to understand.) To actually try the programs I wrote (longhand, on notebook paper), I would hang out at the Radio Shack in the mall and transcribe and debug the code. The sales dudes were really cool about letting a strange and polite little boy play with the low-spec computers for an hour at a time, even if he only occasionally bought electronic components. By this time I was hand assembling Z80 code (remember peek and poke?) and they were selling the TRS-80 module III and the Coco.

But you know what? As exciting as it was then, it's even better today. Free compilers and dev tools? FPGAs? More free online docs about anything than you could read in a lifetime? Places to meet, discuss, and share tricks with people all across the world? Hell, people throw away computers I would have killed for back then. The barrier to entry is so much lower than it was back then. No contest, things are freakin' great today and it's still exciting.

I still have the intro to Z80 book around here somewhere.


(Insert standard comment about graphing calculators as a typical starting point.)


On a related note, I'm working with a friend to make a Python version of Logo, that old thing with the turtle you could program to make drawings.


The OLPC has that already if you haven't seen it.

http://wiki.laptop.org/go/Turtle_Art


Looks interesting! I'll check it out.


The manuscript 'Think Python' (http://www.greenteapress.com/thinkpython/thinkpython.html) includes a chapter where they use a Turtle to create simple drawings in Python. This book is aimed at beginners.


Is it something that I can install in a computer so a 6-year-old who never heard about programming could use it?


No, not really. Involves installing Python/IDLE and then importing a module. Not difficult, but probably not what you're looking for!


Doesn't python have this built in? Try "import turtle".


The goal is for it to be usable by 6-year-olds who have never heard about programming.


I had the idea to make some sort of easy to use frontend for turtle(you know, with tutorials and built in functions to easily do more advanced stuff), but unfortunately i don't have the time at this moment. The turtle module is really cool, and I've spent some time playing with it. Hope you guys make something cool.


I got my start because simply I want to program games. I still program games to this day, although with a bit more realistic expectation.


I know a bunch of people who got started on TI graphing calculators. That was about 10 years ago now though.


Yeah I spent my senior year of high school in math class programming my TI-83 so I could play Drug Dealer, MK3 and other assorted games (the teacher didn't seem to mind). Not to mention creating and selling cheat sheets to classmates with similar calculators (they minded that).


So many apps are built to be extensible now that I'd say it's still completely normal to fall into programming without any special effort. Remember that in the good ol' days, most kids didn't even have access to a computer. Now, any sufficiently internet-addicted teenager is bound to end up modifying something with plain text -- that's all it takes to get started. There's markup for forums, blogs and wikis, and that standard method for overriding the CSS on your MySpace page that's actually pretty gut-wrenching if you realize what's going on, but still, it's genuine CSS. Most sufficiently involved games have some kind of scripting capability, too. And you don't even need a proper text editor, much less a "development environment", to get started with any of this.

I started out with Geocities and the "View Source" function in Netscape. Amazingly, even now that most of the Web has been tamed and the most popular websites keep most of the interesting code behind the scenes, browsers still have "View Source", web-based rich text editors still have an "Edit HTML" tab, and you can still quickly download all the static components of a public webpage, modify it locally, and load your creation in a browser to see what's different. Compared to the days of Windows 3.1, this is awesome.

Then, consider the built-in interpreters that come with every modern non-Windows OS, package managers for finding and installing free libraries, free online documentation and even complete books on just about everything... if a kid these days can't get started with programming, it's because either they're not interested yet, or they don't realize they're already doing it.


Game Maker was my start. http://en.wikipedia.org/wiki/Game_Maker. Maybe I used it from version 2.x until 5. I had a blast with it, it got me started with the web as I wanted to make it available for download and it got my started with distribution. I think every computer in my middle school computer lab had versions of my games by the time I left. I even sold a few games for 5 bucks.


Anybody else started with mIRC Scripting? I did. It was cool to be able to do all sort of things, specially if you were IRCop.

Now that I think about it, every "big" program should come with an embedded scripting language. It will bring a lot of people into programming and it would make life easier for all of us. Imagine if all of the main IM clients had one.


I did. The interesting thing was that I'd been a Computer Engineering student for about 2 years and hadn't really developed a passion for coding until some guy was being a jerk in IRC because he was good at playing trivia quizzes. I decided to ruin his fun by writing a cheat script for the game and distributing it to the other regulars in the channel who were also tired of his bragging about being smarter than everyone else just for winning at trivia. I will always be grateful to that guy (though I still maintain he was an utter ass) for helping me to find my passion for coding.


"It is not as easy to 'get your feet wet' these days like it was back in the day."

Really? I've always thought kind of the opposite. Maybe not as easy to get your feet into the nitty gritty internals of the hw and os, but easier than ever before to get a development environment set up and start writing code.


It's much harder to have the computer show you something simple and fun.

That's the whole premise that _why was taking when he decided to make Shoes (http://shoooes.net/)


I've been playing with Shoes lately. Check it out, it's fun and simple.


Sure, it's easy to download Visual Studio Express. But it's hard for a beginner to do cool things with it. .NET has a learning curve and is boring to beginners -- and alas, most Visual Studio stuff is based on .NET.

DirectX takes a lot of code just to get something on screen. Making a Windows forms program in C++ generates a lot of extra code that is confusing.

Back in the old days, no complicated APIs or SDKs were needed to do something exciting like graphics. Just one line of code and you could write a pixel to the screen. Nowadays, to do anything of value you need to know how to use complex APIs.


Moreover, the threshold for what counts as "cool" and "exciting" has risen significantly. Twenty-five years ago, it was sufficiently cool to have a text-only console program. While text-only programs can still be useful today, they don't appear terribly inspiring to invite someone into programming.


Though would a kid of today think a desktop app is cool? hard to share with friends like a website would be.

The only type of cool desktop app is a 3D game and they are pretty hard to get going like you said.


I don't know if it's "these days" enough but I started programming at age of 9 in 2001, first on some Soviet computers's BASIC, then on 386/486 (they still had those)'s QBasic, then on VB6 in 2002, and then somewhere later in 2002 I found C, and in 2003 I moved to C++ completely as writing something more complex with C than "Hello World" was kind of hard for me:)

Another shift happened when I was 17 (last autumn), as I have discovered LISP and Python and Ruby. With Python and Ruby understood that programming itself can be fun, not just the fact of solving problems with it, and expanded my brain (almost blew it away) with Common LISP, Scheme (call/cc.. yay), and Clojure.


I'd count that as these days, though that's was still some pretty old stuff at the the time you used it.

I was on BASIC on the BBC B computer in 1989/90ish and Q-basic around 1991/92 (when I was 11 or 12).


Yeah, I started out without personal computer, in a informatics club in post-Soviet Union country. We didn't have much money and were packed with 286s, 386s, and we even had one P133 (it ran... omg, Win95!!!).



Small Basic is pretty cool

http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx

it has a few graphics things and handles a lot of stuff for you. for example, if you want to use the Turtle object, you write one line of code:

  Turtle.Move( 10 )
this will automatically open a drawing window with default properties and show an actual turtle moving 10 pixels

it has intellisense and a cute UI too


The problem back in the day was always documentation and concept-acquisition. To some extent documentation is still a problem, but at least with modern languages a lot of the APIs and data structures for common tasks are sitting at your finger-tips, you don't have to reinvent them, so "throwing something onto the screen" is a faster process, and you usually get much more helpful error messages.

The concepts are still problematic though.


Depending on the age I would recommend Lego MindStorm. Not only does it develop 3D spatial skills (the robot) but it has a graphic user interface for programming it to move. It covers basics of if-then-else and loop logic. As they get more experienced they can program using the Visual Studio .NET toolbox kit


I am trying to figure out how to introduce my sons to programming. I am thinking about teaching them Ruby or Python since they are on their iMac already.

When I was in elementary school I made rocket ships with BASIC (granted, that was in the mid 1980s). I want something that simple and kid friendly.


I'm a recent CS graduate.

1993: DOS Basic. Entered programs from 3-2-1 Contact magazine. 1995: Robot Battle (http://www.robotbattle.com/) 1996: Klik 'n' Play (http://www.clickteam.com/)


Seriously? The 5 minutes it takes to download and install an interpreter is negligible compared to how much better the languages are now.

Making simple GUIs is easy with a lot of languages, plus many languages are more natural and English-like.


I started at the BFOIT(.org) program, where I learned turtle graphics (JLogo).


the Lego Mindstorms system is awesome. Squeak and Alice provide very approachable implementations of Smalltalk in a Turtle graphics-ish environment.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: