Brian Moore called me out on providing some answers to a few questions about how I got started in software development. Seeing as it's Brian that asked, I'm only too glad to oblige.
This post is actually the most recent in a thread of posts from different bloggers, essentially a blog-based chain letter with a purpose. And I can guarantee that you won't get ten years of bad luck if you don't respond.
Here is the stacktrace for this thread as it stands today:
With that said, here's my contribution.
How old were you when you started programming?
I was thirteen. My friend next door got a Commodore VIC-20 for Christmas. After spending more time on it than him, I immediately began earning money to buy my own and, after a particularly lucrative garage sale in the summer of 1984, I went to Toys-R-Us and bought a Commodore 64. From that point on, most of my free time was spent sitting at the keyboard copying programs from the popular computer magazines of the time and learning how to code by changing them to make them do what I wanted -- it was my first experience with extending third party software.
And by the way, I still proudly own my Commodore 64 and even pull it out for my kids sometimes when they start complaining about how slow their Internet access is.
What was your first language?
What was the first real program you wrote?
This depends on your definition of "real." The first thing I ever wrote that did something, looked a little bit like this:
|10 print "Denny is awesome";
20 goto 10
This, of course, had the expected output of printing "Denny is awesome" an infinite number of times, or at least until I hit the Run Stop key.
If that's not real enough, then I guess it would be a text-based adventure game I wrote called Despair Mountain. Inspired by Zork, I set about writing my own game in that same particular genre. I know this will be hard to believe, but I was a big Dungeons & Dragons nut when I was that age, so my game was set in fantasy-adventure universe. I had two major achievements from that particular development project:
- I managed to develop a calligraphy font for the UI before there were such things as fonts
- I wrote a very basic "fuzzy logic" algorithm for interpreting directions typed in by the user
I would hate to go back and run a cyclomatic complexity text on that app, but for that time in history and my level of inexperience, it wasn't bad.
What languages have you used since you started programming?
I cut my teeth on BASIC, both at home and what passed for a computer education course at my high school (we learned on the Apple IIe in class). When I started my professional career, I was writing in C and moved quickly into Perl, as I was doing a lot of web development work in the mid-nineties and Perl was preferred language at the time for CGI.
Around that same timeframe, I learned and developed in Java for awhile. I was really drawn by the promise of "write once, run anywhere" that Sun was making. Unfortunately, it didn't take long for me to recognize that it was all a pipe dream.
Disillusioned with Java, I picked up a copy of Visual Basic 5.0 and started writing software for Windows. While I was never crazy about the VB syntax, I soon discovered a new web technology Microsoft was touting called Active Server Pages that used VBScript as the primary language and that alone made it worthwhile. ASP changed the way I looked at software development in general. Sure, we look back and laugh at the simplistic model "classic" ASP provided, but in a world where CGI was the only option, ASP was an enormous evolutionary step forward in web development.
When .NET was released in 2001, I stuck with VB in the form of VB.NET for a month until I started playing with C# and just fell in love. To this day, I'm still a C# developer through-and-though and only go back to VB.NET when I have to.
What was your first professional programming gig?
I actually sold my first piece of software before I ever had a full-time job as a developer. A friend of mine at the time contacted me in February of 1996 with an opportunity to write an application that would produce web pages and associated CGI scripts that could tie users into a proprietary document management system. I developed a VB5 app, which I named Voyeur with tongue firmly planted in cheek, that let users start a new web project, customize the look and feel of the document and add custom search fields, content and logos. When the user published the project, it produced a web page reflecting their chosen layout and a corresponding Perl/CGI script that connected through a COM component to the back-end of the DMS.
For its day, it was pretty slick little application and I sold it to the document management company for a tidy sum.
If you knew then what you know now, would you have started programming?
Absolutely. In fact, I would have started earlier.
If there is one thing you learned along the way that you would tell new developers, what would it be?
Wow, nailing down one thing is going to be hard -- there's a lot of advise I would dispense to those just getting started.
I guess my advise would read like this: "Trust in God, but lock your car."
You'll be presented with many technological panaceas over the course of your career. It seems every year has another "If-You-Just-Use-This-Technology-Nothing-Will-Ever-Go-Wrong-Again" product line. The sad fact is that nothing of the sort really exists or will likely ever exist. Development tools, frameworks and platforms are like tools you keep in your work shop: Each one is very good at certain things and not so good at others. So be optimistic and open-minded, but also learn to develop a healthy sense of skepticism. Look at each technological advance you come into contact with and give it a thorough, objective examination before deciding whether or not you're going to use it.
And one more thing (yeah, I'm breaking the "one thing" mandate -- sue me): Don't get emotionally attached to one specific technology or platform. The only thing that you can count on in this business is that things are going to change constantly, and if you're married to the wrong technology, you'll likely find yourself on the outside of things very quickly.
What's the most fun you've ever had ... programming?
Back in 1997, my wife and I owned and ISP in suburban Chicago. Our company web site was my first ASP project and was a wonderful learning experience. I was pretty new to the Windows platform and had a blast writing an application that would allow customers to sign-up for service and provision their personal web site and database account online. I can't ever remember a time when I had so much fun making so many mistakes -- I learned so much. Even when I first started working in .NET, I already knew a lot about the platform, so it was fun, but not as much as that first ASP project.
Who am I calling out?
This was a lot of fun. These are the kinds of questions I don't get very often and it was very enjoyable walking down memory lane. That being said, I'm going to tag the following friends and colleagues to continue the thread: