Monday, May 13, 2013

Programmer Rehab


For quite some time I have been thinking of writing a blog.  I decided to name this blog Programmer Rehab for a couple of reasons. This rehab is more in the sense of physical rehabilitation, which focuses on recovering motor capabilities after some sort of ailment (see Physical Rehabilitation).  But there is also some of the Winehouse rehab in this. We collect bad habits and limitations that are worthwhile getting out of us in order to become more productive members of ours society.

I have been programming in one form or another since I was eleven. My gateway drug was a Commodore Vic 20. I started programming Basic on that thing. Then I move to an Apple II, which I eventually upgraded to an apple IIe (you could do that).  Once I got to college it was firmly in the realm of Intel based PCs. Most of my programming skill I acquired at university. But this was before Agile and XP. And like all university project, I never maintained my code. Open source was still something that the uber-geeks where doing.

After I left university I started my career as a DBA doing some programming, then moved to systems management software. During this period one of my distinguishing features was that I also wrote programs. Mostly scripts, a couple of ETLs, and some monitoring libraries in Java. All this was closed source. But when I think back this was my first production software. Many of these were in production for quite some time.

In 2005 I wanted to get back to studying. I started a Master in Computer Science. Again I went into the customary programming style of university. Get it done, barely working and move on. However, while working on my final project, a friend commented on Extreme Programming. The part of XP I managed understand and apply was only test driven development, that is, only writing code once I have a test, and fixing bugs by first getting a failing test. This was my first serious glimpse on what the outcome of my rehabilitation would bring. Like someone learning to walk, I had very limited capabilities, only the core of my final project was done in Test Driven way. However this was a liberating experience, and allowed me to get my work done and two articles published.

For as long as I code, even before university, I had been working in trying to get software to help me run my Role Playing Games. As a referee or master there are a lot of moving pieces to track. I had attempted to create a referee assistant dozens of time, and normally failed in the initial planning. In 2008, I spiked a very simple combat assistant in Lisp. This initial work was promising, but I could not see how to get a nice UI for the thing. Another friend mentioned Scala, and I did a headlong plunge into the wonderful world of Scala, TDD and Agile methodologies. I succeeded in creating the software I wanted (project home is here), mainly because I did not over engineer it. I focused on the minimal features and grew from there. This was my Agile epiphany.

Ever since this experience I have become an avid programmer (even though it’s not my primary job). I have been collecting a bunch of experiences from the Web, Conferences and hard work. Hopefully I’ll manage to share some of this journey here. So let’s start: “I’m Thomas and I’m a programmer”.

No comments:

Post a Comment