Tuesday, June 10, 2008

Meme: How I Got Started Programming

Tim whacked me with his post, so here goes.

How old were you when you started programming?

High school, 1979.  Age of 16 or so.  Radio Shack TRS-80 with a cassette tape drive for its storage.  Not quite punch cards, but damned close.  A buddy whose parents had gobs of money bought him one. (A tape drive, for cryin' out loud!  They must have been rich!)  He and I were in a D&D group together, so naturally a geeky computer attracted us.

How did you get started in programming?

I went enlisted in the Air Force in the general electronics field.  I could have ended up stringing telephone cables, but got lucky and landed a position in school for repairing massive aircraft radar systems.  I got even luckier by landing a slot for doing inflight repair, fulfilling a dream of flying I'd had since I was a kid and my dad used to take me out flying over rice fields in central California.  I digress.  At tech school in Biloxi, Mississippi, I got the chance to start programming 6502 processors using octal assembly code.  A complete PITA, but it rekindled the interest I'd found from the TRS-80 years earlier.

I got my first real computer a year or so later when I hocked the new aluminum wheels on my '67 convertible Camaro in order to buy an Apple //e computer complete with 32K of memory and a 64K video card.  Man, that was the cat's ass!  (I see Wingfield had a 128K expansion card.  He must have been living the high life, I tell you.)

I progressed to dropping in a Non-Maskable Interrupt card so I could hack into various wargames that were kicking my then bony ass.  I eventually did such crazy stuff like soldering together EPROMs onto a single socket with a DIP switch so I could toggle between the //e and ][+ BIOS sets.  I hung around a guy who wrote a voice driver for his modem to have his computer call up folks at random times, say "Asshole", and hang up.  Somewhere along the line I wrote some code that manually moved my 5.25" floppy drive's head around.

That interest slowly progressed as I was posted to Anchorage, Alaska, where I bought a 286 system from Radio Shack and started fooling around with Borland Turbo Pascal, then Turbo C++.  I eventually bought a generic 386 system from some company that went out of business the week after I bought the box.  So much for tech support.

The Air Force was kind enough to pay for 75% of my schooling while I was active duty, so I started taking night school courses at a branch of  Chapman University (then just "College").  I hit Pascal, more assembler, threw up through one Cobol course, and did some C++.

All that was just some background until I left the Air Force, wandered 'bout for a number of years, and eventually worked my way into cutting code for a living.  More or less.

What was your first language?

Whatever the variant of BASIC on that TRS-80.

What was the first real program you wrote?

Tough to nail that one down.  I remember starting one on the TRS-80 which was supposed to compute catapult damage to a castle wall (D&D, remember?), but I can't remember if we finished it.  Most likely it was some octal exercise on the 6502 in tech school.

What languages have you used since you started programming?

Surprisingly, not as many as some others: BASIC, AppleSoft BASIC, Pascal, Cobol, Assembly on a number of different procs, C++, Perl, Java, C#.  Suffered through Lisp just enough to be able to configure JDEE when I was doing Java work.

What was your first professional programming gig?

I did some writing of Perl modules for managing servers and accounts when I was a network admin, but that's utils, not cutting code.  My first "real" programming gig was as part of a team working on tools to convert SGML to HTML and XML.  (Yes, kiddies, let old fart Jim tell you about when you needed a PhD to understand stupid markup made when single characters counted so everything was implicit, not explicit.  Try figuring out an implied element closing when you're five layers deep.  Obviously I'm still scarred.) 

I only wrote code around the edges of that, so maybe maybe my first gig was actually writing tools to strip out metadata from DTED terrain data files and stuff all that in a database for use by a really cool system designed to figure out where bad guys hide so you can more easily find them and blow them up.  I wrote some code around the edges of that one, too, as well as built tools to create database schemas in Sybase 11 and Oracle 7 for the system's underlying datastores.

If you knew then what you know now, would you have started programming?

Hell yes!  I love what I do!  I wish I could have done more of this over the years, but I've had a somewhat eclectic career due to following my wife around for her military assignments.  (Germany, Alaska, Washington DC.  It's not been bad...)

If there is one thing you learned along the way that you would tell new developers, what would it be?

Learn to learn, don't just learn technology.  What you knew five years ago is laughable now, and what you knew last year likely isn't a higher on the scale.

One more thing: Learn to have the confidence to say 1) "I don't know" and 2) "Man, that code I wrote last year/last week/this morning really sucks.  But I've learned how to write better code, so I'll do better." 

#1's never been a factor for me because I follow with "But I can find out.". 

#2 has only just started to get somewhat easier after reading blogs or hearing podcasts from folks like Atwood, Ching, Miller, Haack, and a bunch of other industry leaders.  If those guys can be up front about their weaknesses then why should the rest of us not be?

What's the most fun you've ever had ... programming?

I'm torn between two things.  First off, watching the head of a hard drive move back and forth as you're stepping through some driver code you've written really is cool.  SOOO much of what we do is nebulous, which I think is part of the reason we like writing unit tests: a green indicator comes on.  Seeing your code make something physically move  is just plain wicked cool.  That bit of fun was, uh, many years ago but I still remember it vividly.  (I also remember having to repair the armature after some bad code...)

The second bit of fun would be a space of a couple months after I'd joined Quick Solutions last year.  I came on board with the expectation from my boss that I'd quickly jump into a leadership role and help drive business, lead teams, write offerings, etc.  But... for my first couple months I just got to sit my kiester in a chair and code.  It had been YEARS since I'd been able to have no responsibilities but write tests, write code, geek out with other smart folks.  One of the most refreshing times of my life, and exactly what I needed after coming out of a less than optimal situation.

Passing on the love (or, tag, you're it)

Jason Haley

Ben Carey

Drew Robbins

Leon Gersing

Dave Donaldson

2 comments:

Anonymous said...

I'll get to responding some time this week :)

Anonymous said...

You just had to call me out... ;)

http://www.fallenrogue.com/articles/263-How-I-got-started-programming

Subscribe (RSS)

The Leadership Journey