
How do kids these days get started in programming? - vaksel
http://www.ensode.net/roller/dheffelfinger/entry/how_do_kids_these_days
======
akie
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! :)

~~~
omarchowdhury
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.

~~~
josefresco
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.

------
silentbicycle
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.

------
adamc
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.

------
joe_bleau
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.

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

------
cool-RR
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.

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

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

~~~
cool-RR
Looks interesting! I'll check it out.

------
kiba
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.

------
etal
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.

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

~~~
josefresco
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).

------
quizbiz
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.

------
sker
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.

~~~
donaq
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.

------
dkasper
"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.

~~~
psyklic
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.

~~~
tjr
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.

------
mannicken
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.

~~~
rythie
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).

~~~
mannicken
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!!!).

------
tsally
<http://www.squeakland.org/>

------
tokipin
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

------
triplefox
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.

------
graemeklass
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

------
jaxn
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.

------
Erf
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/>)

------
jackowayed
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.

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

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

