I've finally gotten around to answering Michael Eaton's question: How did you get started in software development?
How old were you when you started programming? How did you get started in programming?
I think that the first time that I got the concept of writing instructions for computers to execute was probably somewhere around 7th or 8th grade - 12 years old I guess. A couple of classmates were playing around on the one Apple IIc (?) in our math classroom and wrote one of the all time classic computer programs, something similar to:
10 print "Danny Hounshell shops at goodwill"
20 goto 10
A couple of years later I was finally able to get a Commodore64 and typed in every program from every magazine I could get my hands and tweaked them as much as I could. Later in high school I took Computer Programming I and Computer Programming II, both BASIC on an old Apple II - we had one Macintosh, that had just come out, but we didn't get to work with it much.
What was your first language?
BASIC was my first language. I was exposed to several different flavors: the Commodore BASIC that I had at home, whatever the BASIC was for the Apple II's that I used at school, and then I had a friend who had an Atari and another who later had an Amiga.
What was the first real program you wrote?
The first real program that I wrote was the culmination of Computer Programming II class in high school. At the time text based games like Zork were at their peak in popularity. I wrote a text-based baseball simulation that was based on the current (at the time) lineup of the Cincinnati Reds. If you threw heat at Dave Parker low and inside he would knock it out of the park! And when you batted you faced Jose Rijo on the mound, the Red's once-upon-a-time unhitable ace.
The next real program that I wrote was probably 10 years later using VB3. It was a Roulette game and was my final project for the Intro to Programming (Visual Basic) class at Miami University.
In the time in between I spent 6 years in the Army and had a couple of short stints working with training software and building ammunition and meal forecasting spreadsheets, which I found I was pretty good at, but never any "real" programming. They usually don't let grunts touch computers.
Later, while working at a paper company as an intern just before starting my programming classes, I found something wrong with some queries (a couple of years later I realized in was SQL) in some reports for our inventory system that were causing duplicate counts to be reported for some parts. By fixing the query I "reduced" our inventory by about a million dollars (about 15%) in about 30 minutes of work.
What languages have you used since you started programming?
After my first experience with ASP I knew I was hooked on web development. I took the ball and ran and I haven't looked back since.
What was your first professional programming gig?
Before leaving the previously mentioned paper company I wrote some intranet type applications in ASP (pages for departments and a conference room reservation system) but since I was actually paid to be an intern for the maintenance department so those really don't count.
My first real job in the biz was for a web agency in Cincinnati that was quickly getting a good reputation in the region, SharkBytes. Sadly the company is no longer around - it couldn't handle the slow period after the dotcom crash in 2000/2001. I really have to thank Ryan and Clark for giving me a shot because looking back I had no experience and no skills at all the day I walked in their door for the interview. They must have seen passion and a willingness to learn and hoped it would be worth something. I spent about 6 years with SharkBytes and sibling/parent companies - at the peak I was the Technical Director for the company with about a 10-12 person team.
If you knew then what you know now, would you have started programming?
Shortest answer of the bunch: Definitely.
If there is one thing that you learned along the way that you would tell new developers, what would it be?
I like the comment Mike made, "Don't get stuck in a cube farm." I do see some benefit from doing it for a while, but mostly from experiencing and observing how larger organizations work. I also like Steve Smith's advice, "I would suggest that new grads strongly consider doing some consulting work... to be able to see how things worked at a variety of companies and work on a variety of technologies". I think that both say the same thing in different ways. I've always believed that no experience is a bad experience because at worst you've learned about something that you don't like or like to do. Having your eyes opened to as many things as possible will help you decide what it is that you like to do. The same can be said for classes in college. I tried a little bit of everything: accounting, political science, statistics, lots of history and I took a programming class on a whim. I re-discovered that I loved it. My plans to be an accountant were foiled.
My best advice is to not let yourself get stuck in a rut. If you've worked at a place too long that you've learned everything you can from the people that you work with, you're not doing anything new, and you've become the "go to" person then it's time to move on to a more difficult challenge. That doesn't necessarily mean that you need to look for another job, though it may. Finding an open source project to get involved in might be a good alternative. Seeking out experts or others with differing techniques at local or regional user groups and events can be another alternative. Just looking and and experimenting with new(er) or different technologies might fill that need for you, too. Just make sure that you continually keep expanding your horizons.
What's the most fun you've ever had... programming?
I can define "fun" in a lot of different ways - even learning something new or the occasions when something just clicks and the light bulb comes on I consider fun. Digging through some difficult code and finally figuring out how it works is fun. Figuring out how to write a unit test for something I thought untesable is fun. I even find something to laugh about every day in our daily stand ups. Nearly everything about being a software developer is fun for me. It's all about solving puzzles and there's nothing more fun than that.
That being said the most day-to-day enjoyable job I've ever had was working with two of my best friends in a small office each and every day. We were always playing practical jokes on each other, bouncing ideas off each other, complaining about something or another, and we always went out to lunch together. Best of all we'd laugh about 100 times or more a day.