Rss

It’s like “Glee” with coding instead of singing

Like a lot of old programmers — “when I was your age, we used teletypes, and line numbers, and couldn’t rely on the backspace key” and so on — I sometimes wonder how different it is growing up as a young computer programmer today. Back in the 80’s we had BBSs, but no public internet… a smattering of computer books, but no O’Reilly… and computer science as an academic discipline, but further removed from what you’d actually do with what you’d learned.

Developers my age grew up on some kind of included programming environment. Prior to the Mac, every computer came with some kind of BASIC, none of which had much to do with each other beyond PRINT, GOTO, and maybe GOSUB. After about the mid-80’s, programming became more specialized, and “real” developers would get software development kits to write “real” applications, usually in some variant of C or another curly-brace language (C++, C#, Java, etc.).

But it’s not like most people start with the formal tools and the hard stuff, right? In the 80’s and 90’s, there were clearly a lot of young people who picked up programming by way of HyperCard and other scripting environments. But those have largely disappeared too.

So what do young people use? When I was editing for O’Reilly’s ONJava website, our annual poll of readers revealed that our under-18 readership was effectively zero, which meant that young people either weren’t reading our site, or weren’t programming in Java. There has to be some Java programming going on at that age — it is the language for the Advanced Placement curriculum in American high schools, after all — but there’s not a lot of other evidence of widespread Java coding by the pre-collegiate set.

I’ve long assumed that where young people really get their start today is in the most interesting and most complete programming environment provided on every desktop computer: the web browser. I don’t want to come off like a JavaScript fanboy — my feelings about it are deeply mixed — but the fact remains that it is freely and widely available, and delivers interesting results quickly. Whereas 80’s kids would write little graphics programs in Applesoft BASIC or the obligatory 10 PRINT "CHRIS IS GREAT" 20 GOTO 10, these same kinds of early programming experiences are probably now being performed with the <canvas> tag and Document.write(), respectively. In fact, the formal division of DOM, CSS, and JavaScript may lead the young programmer to a model-view-controller mindset a lot sooner than was practical in your local flavor of BASIC.

The other difference today is that developers are much better connected, thanks to the internet. We didn’t used to have that, so the programmers you knew were generally the ones you went to school with. I was lucky in this respect in that the guys in the class above me were a) super smart, and b) very willing to share. So, 25 years later, this will have to do as a belated thank you to Jeff Dauber, Dean Drako, Drew Shell, Ed Anderson, Jeff Sorenson, and the rest of the team.

Did I say “team”? Yeah, this is the other thing we used to do. We had a formal computer club as an activity, and we participated in two forms of programming contests. The first is the American Computer Science League — which I’m releived to see still exists — which coordinated a nation-wide high school computer science discovery and competition program, based on written exams and proctored programming contests. The cirriculum has surely changed, but at least in the 80’s, it was heavily math-based, and required us to learn non-obvious topics like LISP programming and hexadecimal arithmetic, both of which served me well later on.

Our school also participated in a monthly series of programming contests with other schools in the suburban Detroit area. Basically it worked like this: each team would bring one Apple II and four team members and be assigned to a classroom. At the start of the competition, each team would be given 2-4 programming assignments, with some sample data and correct output. We’d then be on the clock to figure out the problems and write up programs, which would then be submitted on floppy to the teachers running the contest. Each finished program scored 100 points, minus 10 points for every submission that failed with the secret test data, and minus 1 point for every 10 minutes that elapsed.

I have no idea if young people still do this kind of thing, but it was awesome. It was social, it was practical, it was competitive… and it ended with pizza from Hungry Howie’s, so that’s always a win.

Maybe we don’t need these kinds of experiences for young programmers today. Maybe a contrived contest is irrelevant when a young person can compete with the rest of the world by writing an app and putting it on the App Store, or by putting up a web page with all manner of JavaScript trickery and bling. Still, it’s a danger to get too tied to the concretes of today, the specifics of CSS animations and App Store code-signing misery. Early academic exercises like earning to count in hex, even if it’s to score points on a quiz, will likely pay off later.

Comments (5)

  1. rwenderlich

    Interesting thoughts here. I’m not sure how much of this is done either, but I agree it seems like this could/should be a big push in schools. Imagine if there was a “Glee” for high school students, where you could team up and make games and show them off to the school/etc. – kids would love it, and gain really valuable skills for later in life!

  2. Speaking personally as a young developer, 14 and just going to release my first app with in a few weeks, i leant simply from jailbreaking my iPod touch.

    I got an iPod, jailbroke it and started digging into the file system. Found out what most of the really deep down files did, like which plist file controls the battery low, lock screen and status bar text.

    Looked at the file arrangement of .app folders and which graphics in apps i could edit.
    But then modifying apps got boring and i wanted to make apps so i looked around for solutions to make apps on the iPod itself on windows and even on linux.

    (NOTE: all of those exist and are quite easy to use if you know how but things like cycript, javascript/objective c scripting language mix that was executed as if it was the compiled binary, have little documentation so are hard to get used to + airplaysdk and dragonfiresdk where either not around or just starting really when i was looking)

    So i ended up getting a mac (actually 3 before i realised only newer ones can run the iOS SDK).

    But anyway i already knew HTML and CSS but wasn’t really into web design, i also knew basic javascript but i’ve never tried to master it, and also didn’t really consider that programming as it was so basic and like forum BBC code.

    My first and currently, if i’m honest, only language i know is Objective c.
    I went straight into that because that’s what i needed to make stuff for my fantastic little pocket computer. I learnt it simply by using google and youtube for whatever i wanted to make.
    YouTube tutorials are much more useful to young developers starting out then written tutorials as when you are starting out you don’t understand much about it at all so people showing you part of a junction out of contents doesn’t mean much to you if you don’t even know where to put it.
    I haven’t even touched, or seen a physical copy of, a BOOK on developing all my knowledge has been gained on my own through google searching for want i think will help me learn.
    I wanted an app for my site, i searched and learnt how to use UIWebViews. I wanted to add photouploads to it for the forum i searched for how to do it and found tutorials, code samples and videos and mentally noted all new syntax and things that seemed odd to my. I just dived into what ever part of the language i thought i needed/wanted to use, possibly happy in ignorance about how hard some things would turn out to be.

    However i didn’t release my ‘just learning’ projects but worked on building up my knowledge of objective c bit by bit as i came across different situations that needed new techniques.

    I’ve now finished my first AppStore quality game “iSpaceShip” which should drop into the appstore within a few weeks.

  3. I think a large portion of kids these days are learning programming through Flash. There are 40k+ games on Newgrounds.com and a huge community of people writing tutorials and making games.

    There are also a bunch of people using visual programming tools like Multimedia Fusion and The Games Factory: http://clickteam.com

  4. kisstank

    We’ve had some sort of equivalent to the “computer clubs” for a long time now, it’s called the Demo Scene. Though most are now comming of age, there’s a lot of discussions going on to increase the influx of new “players”. There’s also some looking at what HTML5 and the canvas tag offers in that area for new folks.

    Have a look at e.g:
    https://github.com/mrdoob/three.js/

    There’s also quite a lot of “demo-ish” creativity going on with Processing (and lately processing.js :))
    Though java per se is somewhat frowned upon in favor of c++ for real time graphics rendering, processing is a good place to prototype ones ideas.

  5. […] Adamson meditates on the history of programming and programmers in It’s like “Glee” with coding instead of singing: Like a lot of old programmers — “when I was your age, we used teletypes, and line numbers, […]

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.