David R. Heffelfinger

  Ensode Technology, LLC

 
Bookmark and Share

How do kids these days get started in programming?


Back in the 80's, when I was growing up, all personal computers would come with a BASIC interpreter which you could use to write your own software. As a matter of fact, it was expected for end users to write their own applications.

My very first personal computer was an Atari 800,  I was in my early teens when I got it, it was a hand me down from my uncle, who had gotten himself a shiny new IBM PC.

 

During that time, computer magazines came with games and applications in source code form that you had to type into your computer in order to "install" them. A lot of us didn't know exactly what all these lines of code meant, but we wanted the game or application so we typed away, unfortunately typos were an issue, since we were just blindly copying what seemed like greek into our BASIC prompt. Fortunately BASIC was interpreted, so it would catch syntax errors immediately, but many times the syntax was correct, but there was still a typo in the line, making the program not run as expected. It could be frustrating at times, but it was very satisfying to finally get the code to work exactly right. You could also experiment and make little changes here and there to see if you could change the behavior of the software. I remember eagerly waiting for the next issue of A.N.A.L.O.G magazine to arrive in the mail every month to see what goodies it would bring.

It is worth mentioning that at this time there wasn't yet a dominant computer architecture for personal computers. Some of us had Ataris (8 bit and/or ST), others had Commodores (PET, Commodore 64 or 128, Amiga), others had IBM PCs, other architectures existed as well. What all of these architectures had in common was that they all came with a BASIC interpreter. As a matter of fact, in most cases, the machine would boot directly into a BASIC prompt. The BASIC versions of the machines were not 100% compatible across one another, since vendors modified them to highlight specific features of their own products, but in general your BASIC skills could be used across architectures.

I remember been amazed at the wonderful things you could make these machines do, it got me really motivated to learn to write my own software, not simply blindly typing code listings from magazines. A lot of software developers from that era got our start that way, at the time, the barrier of entry for software development was very low. I derived a lot of satisfaction in creating software, I would proudly show my creations to my friends and relatives. All of these got me motivated to pursue a career in software development, which is what motivated me to major in computer science when I went to college.

Somewhere in the 90's most of these various architectures disappeared, and the one true personal computer platform emerged, the IBM PC, or what we simply call a PC today. Just like all the platforms of the time, the IBM PC came with a BASIC interpreter, but unlike the others, BASIC wasn't built into the operating system, it was something you had to look for if you wanted to use it. When the PC became the de facto standard, the focus of having end users as programmers started to decline. Magazines stopped coming with BASIC listings for you to type in. When DOS 6.0 came out, PCs even stopped coming with a BASIC interpreter altogether. Now if you wanted to develop software, you had to install a compiler or interpreter yourself, which, sadly, is still the case today.

So I wonder, how do new generations of software developers get their start? It is not as easy to "get your feet wet" these days like it was back in the day. I wonder if they pick computer science without knowing exactly what they are getting into? It's a shame that software development is not as accessible as it once was.


 
 
 
 
Comments:

Just my two cents: I'm currently a college student working towards a CS degree. I got my start in middle school by programming simple games and such on TI calculators in BASIC. The use of graphing calculators is pretty standard in math classes higher than geometry/trig today, at least in the US. I agree that it's too bad that Windows doesn't come with any real good 'learning' programming language (OSX ships with Ruby or something, doesn't it? And any decent *nix install will have a copy of Python.), though I think that those that will become programmers will find their start through the internet. If you're interested in computers at all as a kid today, you'll eventually stumble upon programming ;D

Good post.

Posted by Acedio on April 19, 2009 at 01:52 PM EDT #

My first experiences also were with Basic, BlitzBasic or something like that, even though it was already the are of graphical OS' (about 5 years ago).
After a while of fooling around as child, I moved on the Visual Basic and VB.Net, but anbandoned that quickly and started with C++.
If I already had children, I guess I would get them started with some programming language which would you easily allow to draw things on the screen and interact with the user - command line programming isn't quite the thing kids are looking for.

Posted by Mononofu on April 19, 2009 at 02:20 PM EDT #

In highschool, I started by editing macros (Macroquest) in Everquest. I also read the forums for these macroes a ton.

That eventually led to a small, but good programming job that is now putting me through school while I work on my civil engineering degree. And I'll be graduating debt free.

Posted by 66.93.224.41 on April 19, 2009 at 02:27 PM EDT #

I learned to program on the TI-83, using horrible labels and spaghetti string code. I liked it and took a computer science course in high school, which was when I decided I wanted to major in CS.

Posted by Kevin on April 19, 2009 at 02:36 PM EDT #

I started coding in Basic, years later I started coding again in Javascript, and then moved on to server side scripting in PHP from there I started learning many other languages including C and python.

Most kids these days are getting in to programming through "making a website" or "making a web app". Almost every PC has a Javascript interpreter.

Posted by Jesse McNelis on April 19, 2009 at 02:36 PM EDT #

[Trackback] story has entered the popular today section on popurls.com

Posted by popurls.com // popular today on April 19, 2009 at 02:40 PM EDT #

I've heard that many kids get their start making webpages and learning HTML and JavaScript. Or learning to program their TI graphing calculators in the psuedo-BASIC language that it comes with.

I think these are both horrible starting points.

I also grew up learning BASIC by copying the source code examples of games from different listings, but when I look around today, there aren't that many of them in modern languages. These books just went over syntax and a reference for functions, but didn't stress the practical and fun applications of programming.

So I wrote a book and put it online for free under a Creative Commons license. The book is "Invent Your Own Computer Games with Python" and is available online here:

http://pythonbook.coffeeghost.net

Each chapter of the book starts with the complete source code of a new game, and teaches the programming concepts from the examples. I think having these full examples is a great way to learn programming, especially since Python has such a gentle learning curve while remaining a Serious Programming Language. (Unlike Scratch or Logo or various "game creation" kits.)

Posted by Al Sweigart on April 19, 2009 at 03:15 PM EDT #

I accidentally stumbled upon VBA then VBS then Javascript then Java

Posted by Bob on April 19, 2009 at 03:16 PM EDT #

I honestly don't know where you'd start today, probably VB or something browser-based? My route: AMOS Basic on the Amiga, QBasic on MS-DOS, C with Watcom and DOS4GW, C++ on IRIX...

Posted by craig on April 19, 2009 at 03:20 PM EDT #

I randomly chose CS as my major as I got tired of doing Math proofs. I wonder if it is a mistake since I do not think I am very good at it. I become easily frustrated when I cannot find the bug in my code.

Posted by accidently on April 19, 2009 at 03:23 PM EDT #

I agree.
Check out the Harp Project (http://www.harp-project.com).

Its aim is to bring simplicity back to computing and allow people to toy around with conceptually accessible computers.

Posted by CmdrOberon on April 19, 2009 at 03:28 PM EDT #

Well, the HTML parser has problems with parenthetical URLs.

Here it is again:

http://www.harp-project.com

Posted by CmdrOberon on April 19, 2009 at 03:29 PM EDT #

I am currently in highschool, and I was first interested in programming shen my brother showed me the tick-tack-toe game he was making in Java. This was the summer between 8th and 9th grade, and I decided to download VB and do the microsoft tutorials, and I ended up spending my summer programming stuff in VB, took intro to computer science my freshman year in highschool (VB) and took intro to computer science II (C++) my sophomore year.

Posted by MrBlue on April 19, 2009 at 03:33 PM EDT #

Ti-83+, A lot of kids have this nifty little calc to thank for getting them into programming.

Posted by Zem on April 19, 2009 at 03:33 PM EDT #

Whenever I see a post this ignorant, I have to wonder if the author is living in a cave.

It is EASIER, repeat EASIER to get into software development than it was during the Commodore/Atari/BASIC era.

It's called "Linux". L I N U X. You can find it on the Google.

It's free. It runs on everything. It comes bundled with dozens of free programming language interpreters and compilers - at the very least you get C, Python, Perl, Lisp, and Bash or another shell language. Python is often recommended as a stand-in for the extinct BASIC, as it's about as beginner-friendly.

And it will all run on any desktop machine you can basically pick out of the trash. So you could theoretically get started for free. And unlike BASIC, when you learn one of these other languages you're on the path to being a paid professional developer.

Microsoft culture has tried to suppress beginning programmers and that's why they don't pack QBasic anymore, magazines don't print source code, etc. If you do nothing but stare at FOX News all day, you might be tempted to assume that programming is restricted to the realm of fairies and elves. But it's not.

Posted by Penguin Pete on April 19, 2009 at 03:33 PM EDT #

OK, besides the previously rejected comment, what kind of moron sets a spam filter to kill anything over 1000 characters???????? Spam posts are usually *fewer* characters.

But I see this site is a church of ignorance, so I'll just ignore the troll, period. Everything I had to say was too wise to post here anyway.

Posted by Eff You on April 19, 2009 at 03:37 PM EDT #

Take a look at simpleJ:
www.simplej.org

Posted by Gerardo Horvilleur on April 19, 2009 at 03:47 PM EDT #

Minor error - DOS 6.0 still came with QBASIC. My first computer was a Windows for Workgroups 3.11 and DOS 6.0, and it had QBASIC. It was Windows 95 that was first without any BASIC.

Posted by billswift on April 19, 2009 at 03:58 PM EDT #

There's an unfunded project from Microsoft Research that I like playing with - Small Basic. http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx

It's a toy language, but there's enough in there to make building trivial programs trivial, and medium programs possible.

I am also partial to the BlueJ Java environment. http://www.bluej.org/ The IDE is easy to learn, and makes writing medium programs reasonable.

By the time BlueJ makes sense, any of the free Visual Studio Express Editions are also reasonable choices.

I hesitate to suggest Eclipse or full-blown VS to kids; very powerful, and with learning curves to match.

Posted by 209.216.188.247 on April 19, 2009 at 04:13 PM EDT #

I got into programming through my handy little TI-83. During class I would just pull out my calculator and start coding, at first I coded things like the quadratic formula into my calculator, but I quickly moved onto more fun things like blackjack. It is really interesting how many people have the same story about how they got into programming, and how BASIC is still the starting point for many programmers.

Posted by Mike on April 19, 2009 at 04:21 PM EDT #

I'm the author of the entry.

I find it a bit odd that I'm being accussed of not being aware of Linux, given that I'm typing this from a laptop runing Ubuntu Intrepid Ibex, and that this site is hosted on a CentOS server.

I am very much aware of the existence of Linux. However I'm not sure a child or teenager is likely to install a a whole new operating system in order to figure out how to develop software.

Regarding the 1,000 character limit, that is a default setting of Apache Roller, the blog engine I'm using. I don't usually get long comments, so I wasn't even aware it was set this way. I tried to change it but there are issues between Roller and JavaDB, the database I'm using. The comment setup page is throwing an error 500.

Posted by David R. Heffelfinger on April 19, 2009 at 04:29 PM EDT #

Agreed with that dude up there.

Linux, Linux, Linux. And Python. Python is a damn fine programming language, way better than the MS BASIC I got started with. There's an embarassment of wealth of free/cheap tools and Linux and other open source let the young mind with the curiosity peak under the hood. With Visual Studio, there's so much excess garbage trying to make your life easy you forget there's a hood to look under. Not necessarily progress, there. Linux. And Python. The kid will be set up to work at Google then, because last I heard they don't f*** with Visual Studio there.

Posted by SDC on April 19, 2009 at 04:36 PM EDT #

I know some start out by fiddling with JavaScript. It runs "right here"; anywhere.

Linux and the many programming options, languages and tools that come along it usually follows. It'll take a person from "kindergarden" to "enterprise" (or whatever) at whatever phase works best for him/her.

I started out in the 80's too and I think the situation is actually better and more open or available today even though it is bigger and (thus) a bit more confusing.

Instead of buying a magazine that "filters reality" or gives one a lead, one ask friends or people on the Internet for advice on where to start.

Posted by Lars Rune Nøstdal on April 19, 2009 at 04:44 PM EDT #

This post is spot on! The first time I saw code was on my dad's ZX-80, which we (mostly him) programmed in Basic. Later on it was GW Basic and QBasic that came with Dos. Even though I was barely programming (more like playing with numbers to change the colours of characters in games that my dad wrote) that was what got me into it.

About an end to young programmers interest in programming - I think it's a reasonable concern. In an economy like ours (South Africa) Comsci is seen as a quick route to a paying job, so people start university without any prior programming experience (some do really well). However IT in general seems to be losing out to the more commercy degrees (it seems people don't want to add value, they just want learn how they can make other people do it).

Posted by 196.25.255.218 on April 19, 2009 at 04:46 PM EDT #

I started by learning BASIC on my Atari XE when I was 6... I then spent the following 19 years trying to unlearn it, moving through Pascal, C/C++, Java, Python, and now I work as a C# developer... I only wish Python had existed back then.

Posted by cfdave on April 19, 2009 at 04:49 PM EDT #

Oh and I forgot to mention the hours wasted hacking inline x86 Assembly into Pascal programs to make fast blit routines... Hah hah.

Posted by cfdave on April 19, 2009 at 04:51 PM EDT #

Just somebody who got interested in programming.
Python3 is interesting but not alot of help with it yet.
Java, Greenfoot, Processing,
are good. Have yet to find a tutorial that is good to follow. I got interested by browsing the web and looking at the links. That got me in to Xhtml and CSS, then Javacript. It is already on most browsers but it's not a "real" language "they" say. Scheme is also supposed to be good. If a person is curious.. and I think you have to be to be a programmer there is lots of stuff out there to find.

Posted by john on April 19, 2009 at 05:00 PM EDT #

As others have mentioned, the web technologies HTML/CSS/JavaScript work together for a young programmer to learn data structures, user interface and basic algorithms without ever encountering an interpreter or compiler outside the web browser.

That's where I started in the 90s, in the world of Netscape 4; later, wanting to produce more complex applications, I learned to use CGI in C and moved on to Perl/Python/PHP.

The popular Linux systems have interpreters for Perl and Python installed by default, and the Mac OS even comes with the Apache httpd and mod_php! All in all, I think it's easier now than it has ever been to get started, especially with all the help available on the Web (though some of it is less than brilliant.)

Posted by Futuregasm on April 19, 2009 at 05:01 PM EDT #

Very good question. I programmed my TRS-80, Commodore 64 in BASIC when I was a kid. Entering my professional career I wrote BusinessBasic, JCL, Informix i4GL, and HP-UX shell script to pull together applications. It's been 15+ years since I've had to develop an application and would be quite challenged as to how to start.

Posted by fil on April 19, 2009 at 05:05 PM EDT #

"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."

Posted by Edsger W. Dijkstra on April 19, 2009 at 05:06 PM EDT #

My parents bought my sister one of those cheap laptops you can find at Toys R Us and it had a basic interpreter. This was my first experience with programming (my sister soon lost control of the laptop).

I then started doing html, and was exposed to perl while hacking ultimatebb, a BBS of the time. After a while I figured hey, I can do this on my own, and starting making my own CGI scripts from scratch.

Then came php/mySQL. Then python. OOP came. Then an interest in lower level languages like c++. As I was learning, OSS was critical, as I learned how to code by examining other people. Best practices came from reading community posts.

Currently, I do 90% of my code in python and C. I do a lot of linux stuff (several linux servers), have done some clustering, object tracking, web development, a variety of stuff, and am very involved in topics surrounding security. I'm 22 years old.

Posted by endeavormac on April 19, 2009 at 05:12 PM EDT #

I think Squeak is a great introduction to programming for kids, it's a visual, object-oriented implementation of smalltalk. It runs on Windows, Mac, Linux, etc...

http://www.squeakland.org/
and http://www.squeak.org/

Posted by Dan Lundmark on April 19, 2009 at 05:13 PM EDT #

PCs are no longer a 'hobby' toy. Too refined and useful.

ROBOTS are the present day version of yesterday's programmable computers.

Lego NXT MindStorm - amazing visual, kid-friendly style of programming. Very powerful, too. The IDE Runs on Mac and Windows. The code runs on robots!!

And the children rejoiced.

Posted by Denis on April 19, 2009 at 05:29 PM EDT #

Lol..I couldnt even be able to type in a word document in this stuff

Posted by James on April 19, 2009 at 07:02 PM EDT #

Myspace was yesteryear kids programming environment (ugly webpages), Facebook helped a lot by not allowing them to change the template :)

Posted by Alx on April 19, 2009 at 07:37 PM EDT #

... the one true personal computer platform emerged ...
Yeah! Take that Apple!

Posted by Ruby Blye on April 19, 2009 at 07:41 PM EDT #

Buy a kid a Mac Mini.

Comes with a Terminal shell with all the Unixy shell goodness to hack with. And several languages pre-installed like Python, Java, etc. Have I mentioned that nowadays the Internet exists? With loads of free documentation and tools available that kids in the early 80's did not have? And major bookchains just about everywhere all carrying computer books?

If anything, it's gotten easier for them today. Stuff is cheaper (and often free) and easier to get ahold of than we were a kid.

Heck, even the winters are milder, thanks to global warming! :)

And you kids better stay off my damn lawn or I'll sick a Perl script on you...

Posted by Mike Kramlich on April 19, 2009 at 08:11 PM EDT #

As mentioned, Squeak is excellent. So is Alice. Lego Mindstorms is another avenue.

Posted by Joel Hooks on April 19, 2009 at 08:27 PM EDT #

When I was a first year engineer, Computer Programming was just another course I was going to have to take. I had a friend of mine show me the basics a few months before the class started, and I fell in love. To me, Programming is like Writing Music. You find your own path, and are, in a way, truly creating something out of nothing. With enough time and money, I could build a personal calculator, a physical object. The software version only takes an hour or two, depending on how complex you wanted to get, and is absolutely free, as long as you own a computer and have a compiler. It, like Music, has become a passion of mine.

Posted by Alex on April 19, 2009 at 10:12 PM EDT #

I too started with a TI-83. First with the quadratic formula. I am not really into programming now, just took a java class which is required towards my EE degree. I mostly just programmed my calculator to solve chemistry problems and other science class calculations such as chi square analysis.

Posted by dan on April 19, 2009 at 10:47 PM EDT #

I think that kids these days get their start by clicking "View Source" in their browsers. More at:

http://nuts.redsquirrel.com/post/98038049/view-source

Posted by Dave Hoover on April 20, 2009 at 01:43 AM EDT #

I'm currently 24 and I guess my first exposure to programming was writing batch scripts/ect, and a little bit of coding in my elementary school's "computer club".

However, it didn't become an obsession until this thing called "AOL" came along...I soon was running into people in chatrooms who were running programs that allowed them to do things like boot other users off, send multiple lines at once, send rainbow colored text, ect. They called them "progz" or "proggies"

I thought this was really neat and started researching them, and soon was hacking away at a pirated version of VB and making my own "progz". While looking for "progz" I found myself exploring this thing called "the internet". It was really confusing at first, but I got the hang of it. Then I discovered Angelfire and started working on my own webpage: learning HTML ect.

After that I was hooked and started picking up new languages....

I know for a fact there's a whole generation of kids who got started in almost exactly the same way...

Posted by Lucid on April 20, 2009 at 02:24 AM EDT #

I think it was harder in the early 90's, but things have changed a lot since. I was looking at spending $350 for a C compiler... now, you can download python, c++, c, PHP, whatever for free. heck, they come as part of any Linux distribution, also free. And of course, the web environment is completely easy to get into - anyone on the web has everything they need to start programming in Javascript.

Posted by Julian on April 20, 2009 at 02:44 AM EDT #

I remember, started with HTML and CSS when I was around 13-14 an did static webpages, it's cool because i didn't know even about tags and worked wizardly with front-page 2003
I designed weblogs templates
after some time started with visual basic...then JavaScript, Java, bash ,...and so on
I thing bash script and linux is so cool for children start!

Posted by ArAsh on April 20, 2009 at 03:54 AM EDT #

This is something that _why tries to address with http://hacketyhack.net/
Unfortunately it is in some kind of transformation phase right now.

Posted by jonelf on April 20, 2009 at 05:15 AM EDT #

I started with Basic on ZX Spectrum, but I really got into programming with VisualBasic and VBA. If I'd have to recommend a starting language, that would be something for desktop development. Html/Js is not a good starting point, since it's so frustrating to make the final product look as you want. I guess VisualBasic is still the king to get the basic programming principles. Or some Linux analogue (I'm still not aware of any that has a visual builder..). Or JavaFX or maybe Flex...

Posted by Mare on April 20, 2009 at 07:26 AM EDT #

I think easiest way to start programming today, is HTML. From here on, one could start using CSS, than for a bit of dinamics, JavaScript. Since all these tehnologies are client side, it depends on a person if he/she is ready for server side world of development.
But I started as a lot of others, with BASIC on Commodore 64. But in school I learned Pascal and started using Oxford Pascal. Till thhis day I tried a lot of programming languages, but the one that I like the most is Java.
But I tried to teache my nephew to do a simple web page (he asked). So I gave him a quick start and bought him very simple book. But he is too much in the game world, the rest you know.

Posted by Andrej on April 20, 2009 at 08:19 AM EDT #

The Logo language was developed at MIT around the time of the advent of personal computers to make it easy for beginners to learn how to program. Logo is still alive and well and many young people have their first programming experience with it.

Bill Glass
Terrapin Software

Posted by Bill Glass on April 20, 2009 at 08:34 AM EDT #

I agreed with what you said. I have similar question myself when my 7 years old son wanted me to teach him how to write a game. And I did some searches and ends up teaching him using an old Apple IIGS.

This is my story for sharing with you: http://retromaccast.ning.com/profiles/blogs/the-world-youngest-apple-iigs

Posted by Lim Thye Chean on April 20, 2009 at 09:26 AM EDT #

Am from mexico,

i was teached with vb6 but when i went to University they teached me Java & C#.

My nephew told me they're practicing vb6, he is 10 yrs old.

Posted by Insane on April 20, 2009 at 10:36 AM EDT #

Microsoft revived this programming spirit with the very fun (and still in early stages) MS DEVLABS' SMALLBASIC:
http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx

Posted by LD on April 20, 2009 at 10:36 AM EDT #

This is an issue that we educators struggle with increasingly as the years go by. Twenty years ago, an average user's expectations of a computer were relatively low, so it was easier to create your own programs that duplicated what other programs did.

Now our users' expectations are incredibly high. It's impossible for a first- or second-year student to create an IM client, an MMORPG, or a 3D video game that approaches the quality they're used to. But our first-year programming assignments haven't changed much over the last twenty years. It's easy to see how beginners become dismayed at the sheer complexity of even simple applications.

One educational effort focusses around providing robust libraries that allow easy access to 3D graphics, data structures, and the GUI. But the downside is the student believes that programming is simply glue that fits these "black box" pieces together and they never become more than API users.

I think I'm limited to 1000 chars, so I'll cut it off here.

Posted by Barry on April 20, 2009 at 03:51 PM EDT #

This is an issue that we educators struggle with increasingly as the years go by. Twenty years ago, an average user's expectations of a computer were relatively low, so it was easier to create your own programs that duplicated what other programs did.

Now our users' expectations are incredibly high. It's impossible for a first- or second-year student to create an IM client, an MMORPG, or a 3D video game that approaches the quality they're used to. But our first-year programming assignments haven't changed much over the last twenty years. It's easy to see how beginners become dismayed at the sheer complexity of even simple applications.

One educational effort focusses around providing robust libraries that allow easy access to 3D graphics, data structures, and the GUI. But the downside is the student believes that programming is simply glue that fits these "black box" pieces together and they never become more than API users.

Posted by Barry on April 20, 2009 at 03:53 PM EDT #

Post a Comment:
Comments are closed for this entry.
 

« November 2024
SunMonTueWedThuFriSat
     
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
       
Today

 
© David R. Heffelfinger