How I Got Started In Software Development

Michael Eaton started it, and others took off and ran with it.  Now it’s a certified meme. So I guess I might as well join in the fray and relate the beginnings of my geekdom.

A Long, Long Time Ago…

How old were you when you started programming?

I was about 7ish when I first started. Read on for more details…

How did you you get started in programming?

When I was around 7, my uncle had an Atari 400.  I initially just played games on it, but one day I noticed a stack of Byte magazines in the corner.  Inside this magazine was source code, it said it was “BASIC” and needed to be typed in… hmm.. there’s this Atari-BASIC cartridge, and there’s a keyboard.  A light went off, I can make this machine /do/ something?  So I typed in the program, saved it to the cassette drive, and then tweaked it.

Next thing I know I’m begging my parent’s for a computer.  For my 8th birthday I got an Atari 65XE and a couple of BASIC games books, and I’ve been totally hooked ever since.  Time passed, and eventually I got into things like QBASIC, DOS Batch, and C/C++ (via an old copy of TurboC a friend loaned me).  Then in high school someone gave me a Linux CD and having a whole slew of development tools really helped.

I just kept hacking away…

What’s the most fun you’ve ever had … programming?

Staying awake for 48 hours straight and hacking an ANSI art viewer in C with Jim Balcomb.  We were probably 15 and 16 at the time and just didn’t need to rest when programming was to be had.  I think it’d kill me today.  Oh yeah, and then I delivered papers in the morning after being jacked up on coffee and Jolt and my father was convinced I was on speed…

Googoo gah gah?

What was your first language?

Well it was BASIC obviously, from Atari-BASIC, to BASICA, to QBasic, eventually to QuickBasic…

What was the first real program you wrote?

One that really stands out was a grading program I wrote in high school for the Learning department at the school.  It was all done in QBasic and had menus that were keyboard driven, grid data entry, and a printing subsystem.  I wish I still had that code…

What languages have you used since you started programming?

Define use? Here are all the languages I have written something of some complexity in:

  • AutoIT (don’t ask…)
  • Bash Shell
  • BASIC (variations there of)
  • C/C++
  • C#
  • DOS Batch
  • JavaScript
  • PHP
  • Ruby
  • TSQL (don’t ask)

..and [Insert Deity Here] knows what else…

Get a good job with more pay and you’re okay.

What was your first programming gig?

I’ve always loved programming, and have been doing it has a hobbyist since as far back as I can remember.  However, without experience (and never having finished college) I was never able to really get a foot in the door.  I worked in support at Harley-Davidson Dealer Systems for 6 years and had a chance to do some development work (I had written a number of utilities for support including SetPrinter) I jumped at the opportunity.  I actually took a “demotion” from Team Lead to Developer for the chance.

After a couple years of doing development work there I had pretty much tapped out all I could do and was stuck, that’s when I was introduced to PreEmptive Solutions and am currently doing development there.  My work at PreEmptive is much more like a “real” development job then HDDS.  At HDDS I was pretty much a cowboy left on my own.  Here I’m working with a true development team.

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

Oh hell yes, I truly believe I was born to be a computer programmer, I can imagine doing nothing else.

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

RTFM.

Thanks Mike!

A big thank you to Mike Eaton for getting the ball rolling on this, it’s fascinating to see how my fellow tweeps and hackers got started.  I’m not going to “tag” anyone, because that’s silly, but I do encourage anyone who reads this post to do the same and link back to mike’s blog, he’s keeping a list of people responding!

Top 10 Commands In Your Shell History

Saw this post on objo’s blog, apparently it’s a meme of some kind, though his was the first I’ve seen.  But I thought it was pretty cool none the less.  Here’s mine:

$  history 1000 | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn
| head
114 cd
84 ls
79 irb
39 git
31 pedump
10 ps
10 objdump
10 e
8 ssh
8 dd

You can see a bit of my dual developerness there, irb and git for ruby, and pedump and e for the windows side (this is in cygwin).  What does your shell history have to say?

Flies in the Pipes.

Microsoft has announced the private alpha of PopFly (love the .ms domain BTW!), their Yahoo Pipes! competitor. Looks like there’s a bit of social networking involved as well with the ability to vote on user’s projects and track their progress. One of the big things going in Microsoft’s favor is the Visual Studio integration. See some details here. I asked for an invite so we’ll see….

WTH is a GWHHM?

The latest issue of Redmond Developer News has a column by William F. Zachmann (got to have the middle initial), BTW he doesn’t appear to have a blog…I’m not quite sure how I feel about that. Somehow blogless commentators feel less “authorative” to me…or something. Anyway, he talks about a phenomenon that he terms GWHHMs or Gwhyms, otherwise known as “Geeks WHo Hate Microsoft”. His main point is a good one: “Remain open to alternatives that make sense when they do in fact make sense.” However, I think he comes down a bit to harshly on the “alternatives” in my opinion.

He does a good job of condemning some of the zealotry that’s out there, but unfortunately he really only talks about half the problem. There is another side. GWOLMs (pronounced Qualms) or Geeks Who Only Like Microsoft. Much like Gwhyms, Gwolms are found in every IT department across the Industry. They will turn a blind eye to any and all solutions that are not stamped with the Redmond Seal of Approval. They can cost your company thousands of dollars in licensing fees for potentially inferior products. They are the ones who dismiss AJAX until Microsoft releases their AJAX Library or dismiss Ruby until Microsoft releases IronRuby and then fawn over how wonderful it all is.

Don’t get me wrong, I love Microsoft in a number of ways, I make a living coding in C# using the .NET framework. However I also run Firefox as my main browser and use a GTK based IM Client (Pidgin). I use these not because they are open source or because they are not Microsoft. I use them because they are (in my opinion) the best solutions out there. I recently utilized PDFBox in a solution for the same reasons.

Also, I can not agree with his recommendation to make Microsoft solutions your “default choice”, my advice is to look at all possibilities in a problem area and choose the best one that fits in with your style, budget, and resources. One shouldn’t have a “default choice” in my opinion.

Personally, that’s why I can’t wait for the next CodeMash, a conference like that epitomizes how software development should work (incidentally Microsoft was a sponsor of CodeMash, so even they realize the importance of learning from one another).

Programming Promises

A few days after reading Ted Neward’s post about checking your politics at the door and using the right tool for the job, I read this post from “Reed Me” over at Microsoft. Granted, Reed has a point. There’s no one you’ve paid money to (unless, as he points out in his comment, you paid for support) that will update your Time Zone tables for you in order to accommodate the 2007 changes. However, the tone of his post irked me and I had to reply. I won’t go into the details of our back and forth here (you can read our thread at his blog here), but it did make me think of what I think a good programmer should be. So here are my Programming Promises:

  • I promise to get the job done.
  • I promise to use whatever tools I need to, regardless of politics.
  • I promise to listen to the Closed Source and Open Source zealots equally, and then dismiss them.
  • I promise to support, as long as I am able, any closed source applications I may release.
  • I promise to release open source any applications I can not, or will not, support.
  • I promise to learn as many languages and libraries as possible, regardless of politics.
  • I promise to engage with as many other programmers as possible, both in person and online, in order to learn from them; regardless of politics.
  • I promise to not bash Microsoft nor GNU, nor others like them, everyone has a place in our industry.
  • I promise to use both Windows and Linux, both have their uses.
  • I promise to ask questions when I don’t know the answer, and answer questions when I do.
  • I promise to learn from my mistakes, and to try to the first time.
  • I promise to listen to any idea, however crazy it may sound.

That’s all I have for now, I’ll share more as I think of them. What other Programming Promises are you willing to make?