Archives, eh
-
# I guess the lesson for today is...

Some of Ds commenters said I looked calm; perhaps living in a house of females – even the bird is a chick – had given me practice…
I was going for Che Guevara. Camera angle was all wrong though and it’s not like I stand in front of the mirror trying to get my celebrity impersonations right.
Queen’s Birthday weekend was boring for a variety of reasons, not least because I was unable to go to Canberra to engage in the detonation of low explosives. This may have been a blessing in disguise. I do, after all, have a professional responsibility to retain all my digits…even if I do have an uneven ability to use each of those digits. Still, it would have been a good catchup with my good friend in the nation’s capital, and I am sure if the worst had happened – and I should point out he has all of his fingers – I could have fashioned a prosthetic with nearby kindling.
Been playing with NHibernate a lot recently1 and wish I’d had it at my disposal in 2005. Which is to say I wish I hadn’t succumbed to NIH Syndrome in 2005. In 2004 I and a co-worker set about inventing our own persistence framework and it did blow mightily, but we persisted and so did it2, and it ended up worming it’s way into a few projects, not least of which was the one I am still employed to maintain and develop. Been through a rewrite or two, and there is a complete end-to-end rewrite that has never been used in production code. Which is kind of ironic because it is the version with the most extensive testing framework and the version that requires the least amount of scut work to get setup. Just that it still involves scut work and I no matter how many unit tests I have, I still have a framework that has met the most definite of tests, it has been deployed for years and it does not throw exceptions.
My framework – teh most current one, I mean – is unashamedly based on ActiveRecord, the M in MVC as implemented by Ruby on Rails. NHibernate…ehhh, not so much. It is a port of the Hibernate framework for Java, and the roots are there for all to see because they are a selling point. I’ve learned lessons, such as the wrong way to support transactions, so the Java way as showcased by [N]Hibernate appeals right now.
So now I am furiously, and possibly against the clock, working on reimplementing the entire Models assembly using NHibernate, trying to keep the interface the same3 so that I can seamlessly – other than the persistence calls – replace the existing assembly.
But it reminds me of a question I was asked in an interview some time ago. I was asked what Agile development means to me. I froze up at the time, and staggered through an answer. At the time, it didn’t mean much to me. I wasn’t consciously trying to follow it. But right now, Agile means
twoseveral4 things to me:- Don’t code something if somebody else already has.
- Code ugly if it helps to get the feature out. Gussy it up later.
- Get something, anything, in writing about what you are working on.
- Avoid doing things.
- Remote team members might as well not exist.
If you code something, its something else you have to maintain and test. If you can find someone else to take on that responsibility – and you have faith they can do so – then its so much less for you to do. The more code you write, the more bugs you write, so you are best sticking to just the code you really have to write and not taking on extra stuff just because it sounds like fun.
The next-to-last is just a superset of the first, really. I don’t want to have to run tests, compile, and then copy the compiled code somewhere. I want to click a Go button and then have a coffee while everything is done, because the more steps I do, the more steps I can forget to do, or do badly.
The last is the number one lesson I have learned from my current job. I’m the only developer on my project, but also I am the only one in my project in the Sydney office. There are some users and they are probably the more clued in and motivated users, but they are users who are lowest on the political totem pole. The rest of the project team is in Melbourne and so are most of the rest of the users. Puuting aside how lonely, isolating and demotivating it is, it is very difficult to communicate effectively. When the company flies me down to Melbourne I am usually tired and wiped out from having to get up so early to catch an early flight, but even in that numb state it is remarkable how much better coordinated the project direction is after a few hours of face-to-face planning.
In the future I’ll go all out to avoid being a remote resource, and if I ever lead my own team, I won’t have one if I can avoid it.
1 Yes, that’s right. It is one of those rare posts in which I display an interest in my profession.
2 But that premise won’t.
3 To be clear, there aren’t any formal interfaces for many of the classes since I Wasn’t Going To Need Those and really, I still don’t.
4 I was thinking agilely, so there. Not my fault Constitution is my Prime Requisite.

