As far as blog-chain-letters go, this is a great one. It’s interesting to see how many diverse backgrounds lead us in the same direction.
How old were you when you started programming?
How did you get started in programming?
In 1981, hoping to squelch my constant nagging, the parents bought me a used TRS-80 Color Computer (with 32Kb RAM!).
Awestruck, I watched as my Dad connected the computer to an RF modulator, connected the modulator to our television, and tuned the television to channel three. Completely expecting to immediately start playing arcade games at home, my hopes and dreams were summarily crushed within seconds of Dad pressing the power button.
Luckily, the person we purchased it from also threw in several copies of Rainbow Magazine, 80 Micro, and Creative Computing with the computer. After a while, I decided to look into them, still hoping to find a secret way to turn the ‘ol CoCo into an arcade.
At five years old, much of the English content of the magazine was meaningless to me, but I was fascinated by the BASIC and assembly code listings. Never one to give up easily, I started typing and running these programs. One of them just had to be the arcade program!
Over the next few weeks and months, I began to realize that I could change the commands, their order, and even write my own from scratch. I was hooked.
What was your first language?
The TRS-80 shipped with Microsoft Color BASIC in ROM. I hadn’t thought much about that until now, but I guess you could say that I was partial to Microsoft development from the very beginning.
What was the first real program you wrote?
The first program I wrote from scratch was supposed to be a game (sensing a pattern here?), but fell quite a bit short of the goal.
The program displayed the most articulate and detailed instructions screen that I could muster at five years old. My assumption was that if I described the intended controls and theme of the game well enough in BASIC, I would be able to play that game.
While that’s not a bad high level notion of the development process (for a five year old), simply placing that entirely in Print statements wasn’t quite enough for the interpreter to go on.
It made sense at the time.
What languages have you used since?
I have always enjoyed dabbling in any language I can get my hands on. As a result, listing everything I’ve written a few programs in since 1981 would be a pointlessly long laundry list.
Let’s just say everything from BASIC and Pascal to Ruby and C#.
What was your first professional programming gig?
Through the wonders of nepotism, I found myself writing a retail point-of-sale, inventory, and reporting system when I was 13. It ended up being a very interesting endeavor, because it ran on an Amiga 3000 instead of a boring IBM PC.
To give you an idea of just how abnormal this setup was, the database “server” had a copy of a 3D ray tracer installed, at a time when ray tracers were mainly the exotic purview of Hollywood.
Using a DBaseIII database and its odd embedded programing language, mixed with unadulterated fear of failure, I somehow ended up with a fully working product in the end.
It didn’t have much of a GUI, but it was leaps and bounds beyond the days of the TRS-80 Print statement instructions.
If you knew then what you know now?
Absolutely. Without the slightest hesitation or doubt.
What is the one thing you would tell new developers?
Software development is less about coding and more about communication.
Building the greatest mousetrap in the history of mankind is meaningless if the situation calls for a doghouse.
Take every possible opportunity to sharpen your written and verbal communication skills. Do not underestimate their crucial role in your success or failure.
What’s the most fun you’ve ever had … programming?
The one time that sticks in my mind is a final project for CS2430 at Georgia Tech. It was an operating systems and/or C course, depending on the day, instructed by the ever brutal Jim Greenlee. Our final project was to implement the basics of KSH in C (without using any OS calls).
The head TA, Bob, drilled memory management into our heads above all else throughout the entire quarter. Malloc, malloc, malloc. No matter what you asked him, the answer would somehow hinge on the proper allocation, reallocation, or deallocation of memory.
Fast forward to the night before our final assignment was due. My partner and I were furiously trying to finish the project, but simply could not grok how to implement one of the more complex functions. Just before submitting the mostly complete project, I wrote a stub for the function we couldn’t get working:
malloc(0); // malloc for Bob.
On the graded copy of our source code, Bob wrote “Thanks”, and gave us 100.
Maybe Joel was actually right that everyone should learn C (or at least fake it).
Whew. Is that over yet?
Well, that’s how I got started. Thanks for tagging me, Justin. That was a fun trip down memory lane.