
The Little Coder's Predicament - mqt
http://whytheluckystiff.net/articles/theLittleCodersPredicament.html
======
Erf
Truth. I got my start in programming with BASIC via DOS. Today, I find that
the biggest mental block to learning a new language is the difficulty of
setting up a development environment.

It's at least a little bit surprising that platform developers don't put more
of an effort into making coding for their platforms more accessible. One might
assume that Microsoft would have a lot to gain from a generation of young
programmers learning to develop for Windows.

~~~
hedgehog
Someone at MS cares:

MS Small Basic <http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx>

~~~
snprbob86
We care on the XNA team as well! It's not bundled, but you can develop for
your Xbox 360!

<http://creators.xna.com/>

C# Express, Game Studio, and XNA Framework are free for personal and
commercial use on Windows. Deploying to your Xbox 360 costs $99/year which
includes the rights to sell your games on Xbox Live.

The download includes a simple Platformer game "starter kit" (written by yours
truly) which is perfect for game development newbies with just a tiny bit of
programming experience. There are loads more samples at
<http://creators.xna.com/en-US/education/catalog/>

~~~
riklomas
Why isn't it free to deploy to your Xbox and then $99 for the ability to sell
your game?

~~~
wallflower
I'd love the ability to deploy my little learning-iPhone-SDK apps to my iPhone
(to get the 'oh wow' feeling that I built something) but that's going to
require $99 and getting a provisioning certificate from Apple. And in fact, I
may pay the $99, just to be able to do this (not necessarily to sell apps).

I believe that Apple and MSFT did this licensing fee program to stop any sort
of homebrew movement (e.g. people sharing games outside of the approved
ecosystem). They came from Homebrew but that's in the Cambrian age for them.

<http://en.wikipedia.org/wiki/Homebrew_Computer_Club>

~~~
nuclear_eclipse
With Android, there are no barriers at all to setting up the SDK, creating an
application, and installing the application on your own phone via USB. You can
even go so far as to build and distribute the .apk packages to let anyone in
the world install your application on their own Android phone. In fact, if you
don't care about the Market at all, you can simply release, distribute, or
even sell your application on your own to customers, and they have the ability
to get your app onto their phone as easily as downloading it through their
Android Browser.

The only barrier comes when you want to start putting your apps on the Android
Market, at which point you must become a registered Android Developer, for the
cost of a whopping $25, which then allows you the ability to publish apps to
the Market.

------
gjm11
What _why describes is half the problem. (Maybe a bit more than half.) In the
Good Old Days, you could take your Spectrum/Amiga/BBCmicro/C64/whatever, and
(1) write a program that (2) did something comparable to the games you could
buy. (Less polished, sure, but not a million miles off.)

Nowadays, #1 is harder because there's no programming language bundled with
the system, because it doesn't drop you into a REPL when you boot it up, and
because the programming languages you can easily get hold of don't have nice
easy facilities for graphics and suchlike. That's _why's point.

But of course #2 is harder too, because modern PCs are capable of all sorts of
astonishing 3d moving graphics and stuff, and the games you can get for them
exploit that. But that stuff is really difficult for a novice, and poorly
supported by learner-friendly programming languages, and really difficult to
do _well_ even for experts.

So, for most people, the amount of gratification you get from writing your own
code is less _relative to what you get from just using other people's
software_ , even if we solve #1 comprehensively. So the motivation to learn to
program is less.

(Of course, there's a small minority who fall in love immediately with the
very idea of programming. But it _is_ a small minority.)

~~~
bd
Exactly, lack of motivation is a big deal. Games these days have crazy
production values (GTA IV took 3.5 years, 1000 people and $100 million
budget).

I know, there are also some very good indie games, but you have to be very
creative to be able to compensate for a lack of production values. Not
everybody is so multitalented.

One possible solution is to get into programming by modding existing games
(instead of starting from scratch). Many cool games have very good scripting
engines (for example Unreal, Civilization or Half-Life).

If you mod an existing game, your work is incremental, you can play with all
these expensively produced assets. There is an instant gratification when you
see some change in the game world made by you. Additionally, your results are
immediately understandable to your gaming buddies.

~~~
cabalamat
I know one of the developers on GTA IV. He says it cost $5 million.

~~~
bd
Leslie Benzies, producer of GTA IV estimated costs to be $100 million.

[http://www.timesonline.co.uk/tol/news/uk/scotland/article382...](http://www.timesonline.co.uk/tol/news/uk/scotland/article3821838.ece)

Maybe your friend was doing just a port on one of the platforms? That could be
in the ballpark.

------
gcheong
The one thing that seems to be missing is the idea of including a programming
tutorial with the pc or console. What if your XBox came with a manual called
"Programming the XBox - a tutorial introduction"? When I got my Apple II+ it
came with a programming manual on Apple BASIC presumably because that was part
of the reason for the machine's existence - as an easily accessible platform
for people to learn to program on. Nowadays, the idea that the common person
would actually _want_ to program their computer seems to have been lost.

~~~
jballanc
That's because the Apple II+ was produced in an age where the inventors of
computers envisioned everyone learning to program computers...as opposed to
using them as really expensive fancy typewriters, which is essentially what
most people use computers for today.

~~~
neilk
The only person who has ever had that vision, consistently, is Alan Kay.

The Apple was programmable because it was made by hackers for hackers. There
were a few firms that would do software consulting for corporations and
institutions, but the notion of consumer software barely existed.

Apple didn't mind it if a few people wrote third-party software and sold it.
But I think in the beginning they expected to provide all the important
software themselves, just like every computer manufacturer of the era.

~~~
neilk
And, I speak as somebody who used to hand-compile SHAPE files on the Apple II.
These were a sort of vector graphics which you had to first painstakingly draw
on graph paper, unspool as a series of draw/turn commands, and then translate
into bitmasks according to a lookup table, and then cut those up at seven-bit
intervals, and convert those into decimal numbers. This is not something that
anyone ever conceived of as a children's toy. Even though some kids (like
myself) persevered.

Hm, I wonder if pg's concept of Languages For Smart People applies. Is it
possible that kids just don't like kids' languages, like Logo and so on? I
have to say that I certainly didn't, although I was exposed to it much later
than Alan Kay would have preferred.

------
Jebdm
What about LÖVE? <http://love2d.org/>

It's _really_ easy to program for; Lua is a language you can pick up without
much effort. It's reasonably fast and built upon a few fairly ubiquitous
libraries. Game distribution is easy (zip and change the extension to
".love").

Obviously it doesn't come pre-installed anywhere, but it's not hard to get. It
would probably take a little work to make it run on game consoles, though,
depending on how many of the libraries it depends on are already ported.

~~~
GHFigs
_why on löve: _A+_ <http://hackety.org/2009/01/29/loveInTwoDimensions.html>

------
Klonoar
_why's made significant inroads in this area since this posting, though. Sure,
there's definitely a ways to go, but Shoes is one of the best toolkits I've
seen period, regardless of being aimed at children.

On the subject of game consoles and development, the PS2 did have a version of
Linux where you could use it to run various things (games, scripts, programs,
etc). Granted I never got to use it myself, but I recall reading that the
reason Sony didn't push it too hard is that there was little to no interest in
it, at least compared to the overall market.

I actually reviewed a couple different programming environments for kids about
a month or two ago, over on Linux.com (<http://www.linux.com/feature/155203>).
Bit of a shameless plug, but I figure it's somewhat relevant to the discussion
at hand. _shrug_

------
ojbyrne
I get his point, but can't get away from the idea that he's describing the
web... and php. New distribution system, larger audience, same idea.

~~~
thalur
(as a web programming novice) I think the problem with the web in this context
is there are still some significant hurdles to getting set up, e.g. getting a
server to host your webpages (unless you only want your friends to be able to
see it when your PC is on). If you could get rid of these barriers...

I think if someone could provide a browser-based all-in-one solution with
language+IDE+hosting+tutorials, then that would fulfill most of his criteria.
You could type a few lines, instantly view the page and then send a link to
your friends (who can view it at any time).

~~~
potatolicious
It's been a while since I've developed PHP on Windows, but way back in the day
there was a popular package that would install PHP, MySQL, and a smattering of
other things (like a GUI DB manager) in a single click. It got me started on
PHP very, very quickly, and in a lot of ways I owe a lot of my coding
experience to it.

Macs also now ship with PHP and Ruby, though they are sometimes broken.

~~~
dmoney
I believe you're talking about XAMPP:
<http://www.apachefriends.org/en/xampp.html>

------
njharman
The BASIC of today is HTML/CSS/JavaScript.

Then there are things such as <http://tryruby.hobix.com/> and processing.

~~~
pygy
Both "Try Ruby" and "The little coder predicament" have been written byt the
same person, namely why the lucky stiff or _why.

His main programming progress for the last two years has been Hackety Hack, a
programming environment for kids, based on Ruby.

The first iteration of HH was built on top of Mozilla, but abandonned because
of cross platform issues.

The next version, due this march, runs on Shoes, a GUI toolkit he developed
with HH in mind.

<http://hacketyhack.net/> <http://shoooes.net/>

~~~
pygy
I can't edit my post anymore, sorry for the typos. BTW, s/progress/effort/

------
codemonkey
Yeah, that would be great, but I don't see it happening. In 1982, little geeks
like me wanted to spend time playing with their computers, but there was
almost nothing you could do with them, so you /had/ to become a hacker to have
any fun. And the hardware was more accessible. We wrote code in real mode with
no protections, and the peripherals were simpler. I wrote my own banner
printer when I learned I could control the pins of my dot matrix printer
individually. Now you have to learn postscript or something comparable just
print "Hello World," or you have to write a kernel driver to talk to the thing
directly.

The bar to get the machine to do interesting things is too high, and the
distractions are too many. You can spend weeks with your computer without
running out of websites to explore.

P.S. If anyone does figure this out, please be sure not to implant damage that
must be undone later. The mental leap from line-numbered BASIC to structured
programming was a big one.

------
burke
I learned to program on my TI-83. Over the past few decades, computers have
built more and more walls between typical users and programming, whereas on my
calculator, it was right there... on a whim, I could, say, make a program to
calculate the area of a trapezoid. At the time, if you asked me to do the same
thing on a desktop computer, you'd be getting a blank stare.

Graphing calculators today are essentially the new programmer's playground
that all computers were 20ish years ago.

Why seems to be making great progress toward reversing this change with Shoes
and Hackety Hack, but I think the ultimate solution right now would be some
sort of programming environment built into iPod Touches. (EDIT: Heh, I stopped
reading before the end. I guess that was his idea too.)

~~~
Spyckie
Yeah, I learned on my TI-89. Ironically, made a DnD character stat generator
and a function to calculate the first 6 elements of an infinite series...
(calc class was quite boring).

I abused the GOTO statement, though... hey, it wasn't like you were going to
care about elegant code design at age 14 on a TI...

~~~
utnick
Same here, I made some pretty complicated games on the TI-85, tetris for
example with all of the blocks drawn with "0"s, that was a HUGE mess of gotos
and especially when you can only see like 8 lines of code on the screen at a
time gotos to far away can get _very_ confusing.

------
jsvaughan
Another vote for <http://www.processing.org/>. It's superb; if you haven't
tried it and you, like me, spent your childhood writing programs on your
spectrum, you should check it out.

------
jballanc
While this is rather old, it's also rather timely:
[http://hackety.org/2009/02/05/theFundamentalLittleHackersSum...](http://hackety.org/2009/02/05/theFundamentalLittleHackersSummit.html)

...oh, and personally, I can relate. If it weren't for the Apple IIe in my
middle-school math teacher's class room, I wouldn't be a programmer today.

~~~
diN0bot
it's also relevant.

mac's come with sqlite3, python, a terminal, a decent developing environment
(extra cd). it's probably not a big deal for windows folks to download
languages and developing environments, too, to say nothing of ubuntu.

the web is a trove of treasure tutorials. open source and the web are
thriving, the community is more inclusive and inviting than ever. more and
more i run into artists, non-video game players, females, mechanical or
electrical engineers and young folks discovering the joy of programming
(arduino, processing, openframeworks, scratch and python are examples from
recent interactions i've had).

video game consoles might be less programmer-inviting than they used to be,
but they're also catering to a more varied and more expecting audience than
they used to.

~~~
jballanc
Sure, but I think _why's point is less about availability and more about
approachability. As a 10 year old playing with BASIC, it took me all of a day
or two to begin writing my first text adventure game. A few weeks after that,
and I was writing graphical interfaces.

Available tools are worth nothing if it's not painfully obvious how to make
them do something interesting...and you have to remember that _interesting_ is
different today than it was when I started programming. I doubt today's 10
year old would be impressed by a text adventure...unfortunately...

~~~
diN0bot
today's 10 year old is probably writing a twitter script in python in 2 days.

as a non-video-game-playing female i didn't find programming approachable
then, but i have found it approachable in the past 2 years. i can't speak for
10 year olds, though.

there are _numerous_ improvements in the approachability aspect (scratch,
alice, processing, arduino on the educational front). i suspect
approachability had little to do with you success as a 10 year old. your
argument is simply that BASIC was _available_ when you were 10 and now you
can't think of modern fun tools and fun tasks. letsmakerobots and
instructables come to mind as good starting places.

~~~
tsetse-fly
I think approachability is absolutely key. Kids wrote programs on their
Commodores, Ataris, and TI calculators because the environment was already
setup. You could type in a few commands and _instantly_ have something running
(a program that solves the area of a triangle or one that plays a cool
sequence of tones). There's only one editor and one language.

The majority of today's 10 year olds are not writing twitter scripts. It
requires a significant amount of understanding and time to do so. You need to
pick a programming language, install it, figure out how to write your program
and how to execute it. The barrier is _a lot_ higher than writing a program
for your calculator during math class.

It'd be much easier for you to find people who wrote trivial programs on their
Commodore when they were 10 than it would be to find 10 year olds who are
writing python.

~~~
plinkplonk
" I think approachability is absolutely key. Kids wrote programs on their
Commodores, Ataris, and TI calculators because the environment was already
setup. You could type in a few commands and instantly have something running
(a program that solves the area of a triangle or one that plays a cool
sequence of tones). There's only one editor and one language."

I agree. If Commodores or Amigas were available today, I'd buy one for my 5
year old nephew so that he could fiddle around with it, play some simple
games, write some small programs and so on.

Maybe there is a market for a small computing device that has the "instantly
have something running, but is completely hackable" characteristic.

------
psyklic
I miss how difficult it is to get into graphics programming nowadays. DirectX
and OpenGL have somewhat high learning curves for new programmers (especially
kids). Even the "simplified" graphics libraries are usually OOPified and take
some learning.

I miss the days of mode 13h!

~~~
diN0bot
try scratch or alice for kids programming try processing or openframeworks for
graphics

~~~
reconbot
Since you're the only one who's mentioned it, I second Alice. (
<http://www.alice.org/> ) I learned about it from Randy Pausch and his "Last
Lecture" (it's also mentioned in his following lecture). It's a way to simply
drag and drop java until you want to drop it and type on your own. You control
animations. From their site.

Alice is an innovative 3D programming environment that makes it easy to create
an animation for telling a story, playing an interactive game, or a video to
share on the web. Alice is a teaching tool for introductory computing. It uses
3D graphics and a drag-and-drop interface to facilitate a more engaging, less
frustrating first programming experience.

They've even gotten EA on board to allow use of their Sims 2 characters. Good
stuff.

------
catch404
I owe alot to the Pre-computer 1000 :
<http://www.vintagecomputing.com/index.php/archives/324>

As a 7 year old I just loved the feeling of making the computer do what I
want. The instant feed back of print/ input/ run cycle also played a big part
in it.

After playing with C++, Pascal and learning Java I didn't get the same feeling
until I started learning Python - Really captured that moment again :)

I've enjoyed learning Clojure too - the LISP syntax is so different to what
I've learnt that it brings the same feeling :)

Great article!

------
Spyckie
I think this is a great idea, and there's a lot of weight behind it. In trying
to teach my little cousin how to code one of the biggest blocks I faced was
that there was nothing right at his fingertips to play with. I had to spend an
hour or so getting him to install stuff, and by that time, he was
disinterested.

What got me started was that in 10 minutes, I could have a program running on
my TI 89 that did something cool, even if I never looked at it again. We need
something like that for this generation that uses this generation's portable
technology.

------
nirmal
Unfortunately Handykey (makers of the Twiddler) are out of business for the
time being. Fortunately, there is some work in our lab along with Chris
George, founder of Handykey, to build a Bluetooth version of the Twiddler that
follows the Bluetooth HCID Profile.

[http://wiki.cc.gatech.edu/ccg/classes/7470/7470-f06/bluetoot...](http://wiki.cc.gatech.edu/ccg/classes/7470/7470-f06/bluetooth_twiddler)

------
neilk
Ok, who else here has

    
    
       HGR: HCOLOR=3:
    

burned into their corneas?

------
stuartk
I remember as a kid going into the local computer shops, getting onto a speccy
or commodore and typing the immortal lines:

10 print "hello" 20 goto 10

Felt great to watch that mother scrolling!

But the first thing that kids of today will do when they get hold of a new pc,
is get on internet to search for pron.

------
danw
The closest modern equivalent is myspace. Myspace users are encouraged to
modify their profiles with custom html/css. There's existing layouts to copy
and modify. Any changes are instantly visible. It's easy to share layout code
with friends.

------
evanjacobs
The predicament presented is not new since there has always (in my geek
lifetime at least) been a division between "computing" devices and "gaming"
devices.

Yes, I too learned programming on my TI99/4A and Aquarius and Laser 128 but
then I also played games on my Intellivision without a way of trying my code
there.

I always saw hacking on my computer as a "gateway" (no pun intended) to
creating more advanced programs in much the same way as playing backyard
football was a "gateway" to playing professional football (if I was good
enough).

Finally, it seems to me that the ultra-portable laptop revolution will be the
driver of getting more "computing" devices into the hands of future
generations.

------
skenney26
Learning to program now is easier than ever before.

Last week my partner was in Spanish class and the teacher told her that the
most important languages to know in the future will be English, Spanish, and a
programming language. Programming is the new literacy. She decided she wanted
to learn to program. We opened up Terminal on her Mac laptop, typed "python",
and used Mark Pilgrim's Dive Into Python as a guide. Done.

With a PC you at least have access to JavaScript (and Marijn Haverbeke's
Eloquent JavaScript tutorial) which is more than suitable for a first
language.

------
sgharms
As _why alludes to, I think the best work being done in this area is by Alan
Kay and his work with Squeak in the squeakland project:
<http://www.squeakland.org/>

I think it could easily be ported to a variety of platforms.

And _why's totally right. My 8-bit sprite of a jumping cow for Logo was the
sweetest (yes, C64's in Texas, that explains a lot about the jumping cow).

------
dhouston
the fundamentals haven't changed; the gateway drugs are just different :)

php and rails tutorials, html, flash, even custom myspace profiles (for
example) are the BASIC for today's kids. then you get your facebook apps,
iphone apps, etc as you move up the food chain to more sophisticated
languages.

------
Create
As a general note, _consumers_ are not _supposed_ to fiddle with the _product_
, since customizations are supposed to be sold as _services_ related to the
mass market item. Exploration and learning should be restricted as much as
possible (see Digital Restrictions Management, and the Right to Read). But
then again, dumbing down consumers does fire back in the end...

So when users do finally get to program, the supported way of doing it is:
[http://www.charlespetzold.com/etc/DoesVisualStudioRotTheMind...](http://www.charlespetzold.com/etc/DoesVisualStudioRotTheMind.html)

~~~
DLWormwood
I know you're being flippant, but there really is a critical underlying
problem with making everyday technology intentionally arcane.

If people are unable to easily learn how something works, they will, for all
intents and purposes, treat things as black boxes or "magic" and learn to
distrust them (and those who do understand them) when things go wrong. This
problem isn't unique to computing. My father grew up in an era where
automobiles could still be serviced by end users, and learned to appreciate
doing things like changing the oil or replacing parts himself. As such, he
knew the limitations of the machine and could be more helpful to mechanics
when bringing in a vehicle that was too broken for him to fix. Even more
importantly, he knew when a mechanic was trying to snowball him with bogus
repair suggestions.

The distance most people have from our food production processes is another
example. A century ago, vegetarianism, when it was rarely practiced, was
usually a religious choice and not regarded as a threat by meat eaters, or
vice versa. Nowadays, its a full blown political movement which I suspect is
in no small part due to the shock some people have growing up when they first
learn where meat comes from late in their life (and in conditions most people
feel have to be hidden.) I've seen kids who vehemently deny that meat comes
from animals. When they grow older and finally learn/accept the truth, the
impact would be much more shocking that a child who sees farm animals from a
very young age.

Back to the original topic, even if most end users don't bother to learn to
program, the _perception_ that it is easy to get into is very important, in
that it insures that they might know somebody who does.

I wish I could write more, but the gist I'm trying to get at is very hard to
put into simple words. Hopefully, somebody else here will understand my
underlying point and enunciate it better than I can.

~~~
Create
It has been well articulated (with some of the consequences) in James Burkes'
Connection series during the "good old days" of the beeb.

Would people know why is it cold inside the fridge, while it is hot outside?
Or what makes the cold stay inside the box? Nevertheless, almost everybody
relies on a fridge ...and almost nobody knows what actually it is. Tricky
situation indeed on the long run...

Somebody has made the series available on:

<http://www.youtube.com/profile_play_list?user=JamesBurkeFan>

but the account has been closed. There are some traces on:

<http://www.youtube.com/user/JamesBurkeWeb>

You might like it: it is worth every minute.

~~~
DLWormwood
Late response, but...

I really enjoyed the Connections2 series that was available on American cable
TV a few years back, but I know of few people who have. I think my country has
developed a real hostility to learning the history of _anything_ ,
technologically or otherwise. I've never watched it, but I've had similarly
minded co-worker point out how much the movie _Idiocracy_ rang true as a
premise. I weep for the future...

------
dimitar
I think javascript can be a possible solution - if only making Firefox
extensions were more accessible to kids (remember - short attention span; they
wouldn't want to read much to do it).

------
anthonyrubin
OS X includes Perl, Python, Ruby and AppleScript. More tools are available
when Xcode (free) is installed.

------
iamelgringo
I learned on a TI99-4a, too.

My wife got me another on off Ebay a few years ago.

