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”.