So I decided to spend a few hours a day practicing; it's been almost two years, I haven't stopped since.
From then on I kept nagging my parents to buy one for me too.
When I was about 13 my father finally got a computer, through work. It wasn't a C64 like my friend had. It was an Olivetti XT x86 running at 8Mhz (most XT's at the time ran at 4.77Mhz). A massive gray box.
Over the next few years I learned BASIC then x86 assembly. By the early '90 the European Demo scene was in full swing. Good memories.
It also interests me that so many people started with HTML. I never really "learned" HTML, nor was it the first language I used. I just had to use it once to build a website, and it came extremely naturally after a bit of Google searching for tags.
10 PRINT "TEST"
20 GOTO 10
I hadn't mastered the concept of breaking out of the program so I reset the computer. And then stupidly entered the same program again to make sure it, you know, wasn't a bug or something.I think that compsci programs should be like art schools where your portfolio is what's considered first when you apply for admission.
However there are plenty of people who are far less fortunate and were not exposed to programming until much later in life (I know quite a few good programmers like that), is it fair to disallow them of a CS education at the because they don't have a portfolio at the age of 18?
But we aren't there yet, and there are plenty of kids (especially in poor countries) which simply don't have access to a computer and/or someone to give them that first nudge to start programming.
Now, I don't think I could write anything in TI-BASIC to save my life. Thank goodness.
If you give a 12-year-old a Python repl, then they'll be paralyzed. There's just too much freedom. In years of tinkering as a child (in between booting and launching WIN) the only things I ever figured out how to do in DOS were press the enter key to make lots of C:\ prompts appear, and type things to get a "Bad command or filename" error. Compare that to the TI-83, where I was able to figure stuff out with minimal introduction.
Another aspect that shouldn't be discounted is that students can practice programming during math classes...
Another thing that may greatly help is auto-completion. Type some random stuff and look what the IDE thinks it is.
May I ask, what sort of programs you wrote? Interactive stuff, drawings, calculations? And what kind of topics/challenges did you like most?
What I know about software architecture and programming concepts now at the age of 20 entirely dwarfs the accumulated knowledge and skills I gained from 9 til 13. I just did not have the intellectual maturity to really understand in a conscious way concepts like closures, types (sums vs products, unions vs records), data structures, algorithm performance (other than a visceral understanding of what is faster), static vs instance functions/variables, manual memory management. And so much more.
I think my knowledge and skillset grows exponentially year over year, but in the beginning I did not have much to compound and not enough maturity to gather and own much knowledge and experience. Would I be roughly where I'm at now if I had started at 14 or 15? I've thought about this a lot and I don't know.
Other thoughts on this are appreciated.
To be clear, I don't for a second regret the time I spent early on learning how to program; it was so much fun and intellectually stimulating. I'm actually quite proud of how early I started.
Something I've noticed from some classmates who where early starters is that they're not "superstars" after all. Some start at the age of 10 with basic but somehow they get stuck or something. A friend of mine had programmed since he was 10 (we're about 21 here) and he had done demos, designed his own processor and he was simply that guy. I looked up to him and I could of course never reach his level of prowess... Until one day when he was going to write a small program in C but he couldn't figure out how to do a loop without a goto. That was a pretty real eye-opener I tell you.
Another classmate also started at around 10 but he's still harbouring opinions like "C++ is the best, the rest are bad".
I'm not sure where I'm going with this, but I thought I'd share this anyway. The point I think I'm wanting to make is that when you start doesn't really matter, it's all about what kind of person you are and how much effort you put out.
Of course the reason I feel jealous sometimes is the thought "what more could I have done if I started sooner?". This is a bad thought to have I think, but it's still there somewhere.
It was a pretty natural process, from looking at some of their scripts and wondering "wtf" all the way to downloading the mysterious PHP interpreter and asking for help on rather trivial problems.
When I got to high school the BASIC class disgusted me. The teacher had zero experience and no style. Every assignment or lesson was out of a book that must have been 10 years old.
Edit: I've never used any books. It's really amazing how much is out there with a single internet connection.
Every assignment or lesson was out of a book
that must have been 10 years old.
Why does a book for introduction to programming need to be newer than 10 years? SICP is almost 30 years old.I assure you no revolutions in elementary BASIC programming have happened since 2002 :)
- play games if you plugged the cartridge into the side. We had one cartridge "Popcorn", which occupied Christmas day.
- if you didn't plug a cartridge into the side it dropped you into a BASIC interpreter and sat there with a blinking cursor waiting for you to program it.
So on Boxing Day I started reading the BASIC manual and started learning to program. I still remember parts of that first program, a bingo number puller.
20 IF N=1 OR N=2 OR N=3 OR N=4 OR N=5 OR N=6 OR N=7 OR N=8 OR N=9 OR N=10 OR N=11 OR N=12 OR N=13 OR N=14 OR N=15 THEN PRINT "B"
now get off my lawn.
I started getting more and more interested in the things I saw like the way the chat programs worked (they were java applets), exploring them as a user and mod and learning how to "hack" them. It wasn't long before this lead me to communities where I was also shown HTML and I started learning about it.
When I was 10-11, I got into modding boards like the InvisionFree ones, which taught me a lot more about HTML and exposed me to JavaScript as you only had limited access to them so that's how all the modding was done, and a lot of those communities intersected with ones about making your own forum systems and/or modifying forums you had more access to (like hosting your own phpBB or IPB forums) which got me interested in PHP and MySQL.
By that point I'd heard a lot about C, etc. too and I was a lot more curious about computers than I was my schoolwork so I'd spend as much time learning about everything I could as possible. I started migrating to more general programming and hacking oriented communities when I was 12 and would stay up literally all night most nights and make up the sleep on the weekends, and I haven't had a proper sleeping schedule since.
Not much later I started experimenting with Javascript, which did not go too well because I didn't know of the existance of error messages (using IE6), had no experience of course, and there was nobody to guide me. I also hadn't discovered forums yet, and none of the classmates I had on MSN were into coding yet. But I learned it eventually :)
I think I was 11 or so when I went to a summer camp with my new laptop (an old thing that I got for free on the fleamarket). The idea was to play games on it - unfortunately it hadn't any on it.
One of the parents there then remebered that there's often some sort of BASIC preinstalled on these DOS/Win3.11-machines which normally had some demo-code (including games). It turned out that there was indeed one (Gorillas, an artillery/worms-like game), but got quickly boring. So he showed my friend and me some basic commands for QBASIC and the rest is history ;)
I have some fond memories of that (and subsequent) camps, like trying to figure out if RAND() would actually return 0 or only bigger numbers. So we just wrote a program that generated random numbers and would stop if it encoutered a zero. Then we let it run while we went hiking trough some mountains.
Another fun thing was to figure out new instructions. There was a manual, but we couldn't read it because it was in english. But it had a nice list of all the commands. So we took one that sounded cool and tried to figure out what it did.
After that, my friend got a laptop too and we would try to out-code the other. One time, we tried to implement an "operating system" (it consisted of a long and fancy start-up animation and a nice menu to launch other programs). Every time, one of us implemented a new feature into his "OS", he increased the version number, copied it on a floppy and went around screaming "Guys! Look! This the newest version of my OS!"
</end of story>