Sunday, June 24, 2012

Luck

Recently I was asked how I started programming. Telling the story made me reflect on how sometimes what appears unfortunate on the surface turns out to be a stroke of luck.

When I was 5, my parents decided to buy me a video game console. They were both very busy (my dad getting his PhD, my mom working multiple jobs), so I had a lot of spare time. Nintendos were all the rage, but my dad bought a Radio Shack system, either because it was cheaper or due to his unfamiliarity with popular trends.

We only owned four games, so after I had played each of them hundreds of times, I got tired of them. It turned out that the console had a BASIC interpreter if you turn it on without a game cartridge. It came with a book with short programs at the back. I started typing them in and it would draw cascading lines and circles on the screen.



We did not own a memory cartridge, so I had to re-type the whole program every time. I also did not know how to touch type, so it would take an hour to type a 5-line program. But I had hours of time every day, so I would do this often.

When I was 8 or 9, the local school offered an introductory programming course, and my dad signed me up. The first day resembled the scene from Karate Kid where the kid discovers to his shock that he has internalized karate without realizing. The teacher handed out a syllabus with an overview of conditionals, loops, gotos (remember this was BASIC), and I knew it all already. I remember being confused. Programming is a challenging school subject, so how could it be the same thing I had been doing for years on my video game console?


I went home and announced to my dad that we can drop the class and get our money back, because I magically knew all the material already. He must've thought I was joking. He insisted that I keep going, even though I learned nothing new from that class.

A couple years later, our family friend (a CS grad student) saw that I knew the fundamentals and taught me LISP for fun. I wrote little adventure games for my brother; "You see a book that says TOM. Read / take / north / south?". Then Pascal and C in high school, the unforgettable euphoria of my first program which drew a circle using trigonometry, and eventually realizing at 16 that computer science was my life calling. There has never been a moment of doubt since.

Last year, my dad mentioned wistfully that he wished he could have given me more material possessions as a child. "You never wore designer clothes growing up," he said, "Kids love McDonald's, and I couldn't take you very often. And you only had that cheap Radio Shack game system with so few games."

8 comments:

Mike Lambert said...

I had a similar experience with the Sinclair ZX81 in the UK. But I did not have your patience or stamina and got fed up with it!

Sylvain said...

BASIC is also how I got started, how do kids get started today? The significant milestones in my learning journey were:

- Drawing objects on screen thanks to my very own BASIC program (took ~2 years from 1st exposure to computer)

- Years later installing Linux, with no documentation and poor knowledge of English (~6 months for CLI, another 6 months for X11)

- Setting up a TCP/IP network w/ a 2nd computer I had found next to a neighbor's trash container

- 'Getting' object oriented programming. ~1 month of a professor pounding our heads with the concepts. Woke up one morning and suddenly it was all obvious.

Been working for Network Security vendors my entire career, where I get a good mix of sysadmin, software engineering and a good mix of technical and business challenges to solve.

Greg said...

My similar experience was using friends' computers starting around 14 and getting my own radio shack color computer around 16. I do think you were fortunate to have had the experience when you were so much younger!

Milkman said...

Lovely story - Kinda like Jobs' famous "connect the dots" speech! Just felt good reading it!

james said...

heh, i have almost the exact same story, except mine was an atari 400 and my dad had no regrets about my clothes not being designer :)

Neuro said...

Hmm I was interested when at school when they went through what you could choose for your GCSE (O levels and CSE's back then) and they mentioned this brand new course they where doing in Computing

In the first year we did CECIL which is basically an educational assembly language in the second it was BASIC - the first year teacher left and was replaced by a maths teacher with zero knowledge so I taught my self basic quicker tan the teacher did.
Oh and my dyslexia meant I was put in the CSE (thickos) stream – this was of course before the school areas where gerrymandered and all the posh white kids went off to a different upper school my alma mater is now proud to only be the second worst school in the county J

Took it up professionally when I went to interview at BHRA a R&D place on CIT’s campus was offered a job math modelling or pipeline transport – the latter some times involved crawling down a mile long pneumatic test rig to unstuck the PIG so I decide that computers sound like it would have more long term career.

Anonymous said...

My start was an old 8086 with the ugly green screen monitors. Just a primitive machine.

I then moved on to a 486 and started graphics coding by reading Michael Abrash's articles in Dr. Dobb's Journal.....

Good times......

bruce said...

I love these stories.

For me, I was 7 and we had a Commodore 64, also running BASIC. Apparently I had begged my parents for a computer when I was 5. I had to take 3 days off school because I was sick, and spent it learning how to program from a book that came with it.

Instead of the family friend, there was a very smart and precocious kid at school who somehow taught himself about computers from a very young age. He was a year younger than me and was put up a grade, but he was probably about 2 or 3 years ahead of the rest of us. He introduced me to PCs and modems.