Books arrived!

My copies of Beginning JavaServer Pages arrived in the mail today.
It was fun, but very difficult to write a beginners book. It’s hard to remember that you need to explain things in detail to reinforce principles and to take things slowly when doing examples.
It’s a bit of a tree-killer. Weighs in at 1200 pages, so if you don’t like it, you can use it to prop up your monitor.

One year on

Exactly one year ago today I badly broke my elbow falling off my Mountain Bike. I blogged about it when it happened (well, after I got out of hospital).
It’s not healed fully yet, and I thought I’d share about this experience.
The first is that I’m really, really lucky. If I’d fallen slightly differently I could have broken my back, my neck or my skull. At the moment I’ve got a slightly painful right arm, that I can’t straighten all the way that doesn’t have full strength. My work is not affected, but my FPS skills have dropped somewhat because I don’t have as good motor control because of the damage I did to the nerves. So, I suck more.
I’m somewhat driven in all aspects of my life, and I saw my injury as an opportunity to show how quickly I could get over something like this. (We all need little challenges). I wasn’t prepared for the swings and roundabouts of injury management, and I learnt the hard way.
The first 2 months was pretty hard. I had metal framwork sticking out of my arm and I relied on others to help me get dressed, shower and just do normal life things. I got pretty good at putting on a T-shirt and wrapping my arm in plastic each morning for a shower. A challenge. Best thing was that I could actually work, and I could type with little trouble. Thanks to ThoughtWorks for letting me do cool stuff around the office while I got better, and it was quite an entertaining ice breaker with those customers that I met.
I didn’t get any real pain at this time, and I was just working on flexibility. After a surgery like this, lots of scar tissue and rebuilding means that I could only move my arm about 15-20 degrees. (You can’t brush your teeth with that hand, or touch your nose)
After the framework was removed, I was working on flexibility and strength. I went swimming. For the next couple of months I was convinced that I was going to be 100% after 6 months. It was great. I was getting stronger, in no pain, and flexibility was getting really good. Then, much badness happened. Not sure exactly, but the only explanation is around my nerves starting to re-attach and rewire. I had damaged the ulnal-nerve in my accident and clearly my understanding of what this meant wasn’t apparent until now.
Sadly, this meant that all my good progress so far was suspended. I couldn’t use my arm, and I was in constant pain. I was getting really, really depressed about it and started to wonder if I was going to have to put up with this for the rest of my life. I was constantly grumpy, and some of my near and dear friends must think I’m an absolute prick. Sorry Peter and Sonja. Love you guys so much. I hope you forgive me.
Then, just as quickly as it came on, it started to go away. Just after Christmas, in early January, my arm started to feel better again. I’m on a modified swimming regime (since the start of Feb) which includes using training fins and kickboard as well as breaststroke and freestyle. So far it’s working well. I did 2k on the weekend, and as of today (which is normally the worst) it’s feeling good. So, here’s hoping that everything is heading in the right direction. 2 years seems like a reasonable outcome. It seems like a long time
A word of warning to other stubborn old bastards. Be careful. As you get older, you don’t realise how much the body can’t take how hard your brain will push it. I’m still a big kid at heart and since I’ve been back swimming, I’ve managed to injure my back and shoulder because I don’t take it easy enough and these parts are compensating for the injury.
Overall, I think I’m pretty damn lucky. My wife has been amazing during this time. She’s looked after me, and never complained once. (Except when I play WoW for too long, but tough, it’s fun) My friends, I love you all so much. You’ve never complained when I’ve asked for rides (because I wasn’t allowed to drive) and taking equipment to and from LAN parties you’ve carted stuff and made it seem like you enjoyed yourselves. You’ve also looked the other way or cheered me up when I’ve been especially grumpy and unreasonable. I can’t explain how important you all are to me.
And the cats. Boo! and Maddy. You rock. Every sick person should have a cat.

Using computers automatically makes you an unfit slob ? I don’t think so….

I’m reasonably fit. Not super fit, but reasonably fit, and I really hate the media portrayal of computer users and game players (of which I am also a big devotee). The media like to blame all the worlds ill on “something else” rather than “the kid is fat because they eat crap and never move”. It’s always “computers and the TV are to blame”. No, the kid is, or the parents are. Stop feeding the little bastards so much crap. Take them outside for a walk, go play in the park. Life is about balance.
To the real point. I was looking at a blog comment from yesterday from Peter and went to his website.
So, the next time somebody would like to point out how lazy, unfit and averse to physical exercise that nerds are, check out the Epic Camp blog entries. Have a good read of the distances that are covered each day. Bloody hell. I was tired just reading it.
Go team nerd !!!

The Failure of Success

I’m getting old. Not quite Grandpa old, but heading in that direction, so I’m going to start with a little story;
Once upon a time there was a weekend carpenter called Cecil, he built doghouses and cupboards for his friends and neighbors. They were good doghouses, they were solid cupboards. His friends told him how good he was, and they were very happy with the things he built. Occasionally there were minor changes required to the standard plans. Like an extra wide opening for Bob’s fat puppy, and book width shelves for Sarah. Cecil was always happy to accomodate the changes as his friends asked, and the results were good. His friends were so happy they started telling other friends how good a carpenter Cecil is. Cecil got more and more work until one day a friend of a friend called Peter who didn’t really understand carpentry came to Cecil and said ; “Cecil, your doghouses and cupboards are wonderful, you friends all rave about your skills. I have a proposal, I need a 2 story house built for the nuns and orphans in my neighborhood, will you do it ?”. Now Peter didn’t think this was a strange question, as a 2 story house is just a bigger doghouse with some cupboards, and Cecil was kinda impressed that somebody would ask him to do such an important project, so he agreed.
Anyway, the house fell down, killed all the nuns and the orphans, Peter and Cecil were tarred and feathered and run out of town.
While this story is fiction (and not all that great, but I promise I’ll work on it) it pretty much describes the reasons behind why I think that enterprise development within organisations is so shoddy. Organisations hire people like Cecil, and they cut their teeth on building simple, single purpose applications for reporting from databases, for producing simple web applications. The organisations are happy, then one day, these developers are noticed by Peter who wants them to build an enterprise spanning distributed fault tolerant application.
Is it any wonder that what comes out is an unmitigated failure ? It’s not completely Cecil’s fault. He thinks he can do the job, and after all, he doesn’t have the experience of failure to caution him. It’s not completely Peters fault. He doesn’t understand software development. Most developers are still treated like social lepers and they do this stuff that “just works”. This is just a disaster waiting to happen, and one that occurs day-in, day-out throughout companies around the world.
So, what can we do about it ? I dunno. (Sorry if you were looking for an easy fix). The Cecils of the world need to expand their horizons and learn more, and in the words of Clint Eastwood “A man’s gotta know his limitations”. The Peters of the world need to treat software development in the same way they treat other projects. Make sure they have the right people for the job, and also make sure that success and failure criteria are understood by everybody up front and that people will be held accountable for things they are responsible for.
I like Cecil, but I’d like to help him to not kill any more orphans and nuns. I just don’t know how to get Cecil to ask for my help, or even understand that he needs it.

Did the world just take a weird shift …

With one of the most dodgy places in the world to play cricket in the 70’s, 80’s and 90’s just complaining about the umpiring in the Australian summer.
Now, this could be attributed to a bunch of things (like dumb bad luck), but the coach is complaining that excessive crowd pressure made the umpires make mistakes in favour of Australia. Of course, Bob (Woolmer, Pakistan coach) isn’t saying that the umpires are cheating, but the Pakistan Cricket Board is calling for neutral umpires for all ODI’s.
Well, this might make sense if the Australian umpires were making all the mistakes, but according to the report, the international umpires “had been as much at fault”. So, neutral umpiring will not help.
I’ve got another explanation. The Pakistan team was rolled by the best team going around at present in both the one day and test arena, and they generate far more “half chances” than other teams so having a raw number like 25-3 (quoted in the article) is meaningless. How about comparing the percentage of appeals and “possible outs” rather than just the “number of incorrect decisions”.
I watched a lot of the tests and ODI’s and I found the umpiring pretty good. There were some unlucky decisions both ways, but I’m guessing that most of these errors are related to LBW (as always; apart from the shocker against Brian Lara, that was awful) in which the umpire has less than 0.5sec to work out if it’s OK or not.
I can’t see how neutral umpires will help. It will only make the game more expensive, and reduce the ability for a “soft” introduction of local umpires into international matches. The ODI route has been a tried a true path for umpiring to the demands of the test arena (as with players) and I see it as an important link between state/county/regional umpiring and international umpiring.

ThoughtWorks – A 2 year retrospective

Yesterday marks the 2 year anniversary of my joining ThoughtWorks. I thought it would be worthwhile sharing my experiences of the company with people, especially those who haven’t been involved in consulting as it might give some good insights into the sorts of challenges that exist.
A brief bit of background. I’m a software developer. I build stuff. I have been building stuff for a lot of years, and I’m officially “old and grumpy”. I’ve seen many different methodologies for both development, project management and the number of failed CASE tools that litter the highway of my travels make the recent storm damage in Melbourne look neat and tidy. I was involved very heavily in the CMM when it was started, have implemented ISO9000 (and the Australian equivalent AS3563) in a couple of companies, and I’m a certified ISO9000 auditor. So, as you can imagine, I’ve got a pretty good handle on process.
So, it was with great interest I joined ThoughtWorks to learn about this “Agile” thing. The philosophy that was proposed was very similar to how successful projects I’d been involved with in the past. Talk to customers, they make business decisions, I make technical decisions, build your code so it can be changed easily, and get the customers to prioritise what they want. Not so different really. Nicer packaging 😉
I’ve met a bunch of wildly enthusiastic people. Lots of very smart people. Lots of very passionate people. My understanding of lightweight, but highly disciplined processes has increased dramatically over this time. This is good.
Consulting. This has been almost a dirty word for me in the past. A consultant was somebody who came in, waved their hands, made a huge mess and walked away. As they say in the classics, “now I is one”. What does it really mean to be a consultant ? In ThoughtWorks we have a wide variety of projects, which take on very different forms, and each requires different skills. To the most part, my roles have been either “traditional consulting” where I’ve worked with a team to determine some direction or activities, provided guidance, and then let them implement that. The next part has been “implementation” where I’ve worked with teams of customer developers building applications.
As somebody who’s spent most of their life off-site, being on-site all the time really sucks. Yup, I’ve said it. It sucks. Not only is there the normal 9-6 work to be done on the project, there is sometimes interstate travel (did that for 8 months, fly up Monday, fly back Friday) but you also have a whole bunch of ThoughtWorks activities to be part of. So, it’s like having 1.5 jobs. That gets very hard over time. It’s certainly easier once you get the hang of it, but it takes a lot (or it took me a lot) of getting used to. I also miss the flexibility that being “on the clock” requires. Some days I just don’t feel like getting out of bed. I’d much prefer to stay at home, potter around, do some learning, and then work extra time later on, or on the weekend. The on-site consulting gig makes that very hard. “Billable hours” is a really dumb idea, but I don’t have a better one.
The other thing I dislike about being on-site is that there is so much compromise that needs to be made. Some days I just don’t feel like that (see above for “old and grumpy”). Some days I just want to do what is right, without having to do the politically correct thing and “get everybody on board”. I certainly miss just having stand-up arguments with my co-workers. It’s a hard thing to manage, being passionate about getting things done, and having a perceived air of “being professional”.
I’m yet to work on a large scale, ThoughtWorks developer only project. This would be a great experience, and one that I’m looking forward to (are you reading this Roy). Hopefully off-site. (So, if you’re a company in Melbourne who want’s a wildly successful project built in Java or .NET, drop me a line and I’ll make it happen).
So, the good ; meeting cool people, learning new things about writing code. The bad ; working on-site, having people think I’m a consultant when I actually do real work.

NetBeans 4.0 – Picoreview

As the result of a challenge last night, I’ve just installed the version of NetBeans 4.0 that is on the Sun Developer DVD given out to attendees of James’ talk in Melbourne today.
Well, it installs nicely, and looks slick. Integration with Tomcat was great, I imported a servlet that uses BouncyCastle crypto, and it did this without a hitch. I had hassles finding the key binding setup (I was looking for an ’emacs’ mode) and the only thing I could find was a big long list of keybindings.
Still, I could live with that. So, in search of refactoring commands…. Uh….. Oh….
Sun, what are you doing ? A pathetic number of refactoring commands that makes the refactoring in WSAD look powerful.
So, deleted this off my system for now. When NetBeans actually gets support for the reasons that I use an IDE, then maybe I’ll consider it. Looked pretty slick otherwise, and appears to startup faster than Eclipse 😉

Cocktail party with James Gosling

I was fortunate enough to be invited to a party with James Gosling, hosted by Sun and Majitek, and was further fortunate enough to ask James some questions.
On top of my list (and I’m sure was the top of most Java developers list) was;
Have you punished the person responsible for the Calendar classes ?
To James’ credit, he handled it diplomatically, and replied “We can’t, it was IBM”.
So, not only WSAD, but the Calendar classes. Is there no end to the evil that IBM can perpetrate upon the Java community ?

Are Agile development practices the Kryptonite of poor developers ?

One of the key factors in all of the Agile development practices is constant monitoring of the situation via feedback on the status of the project. This is highlighted by small units of work that are completed or not so it’s very difficult to be in the “almost finished” state. Coupled with this are practices that look at the overall progress of the project, such as looking at units of work remaining, and the current “velocity” or rate of completion of tasks.
All of this is designed to be done in a non-confrontational manner, with an aura of openness and honesty prevailing, with everybody working to the best outcomes of the project.
However, this might be the case in the “fairies at the bottom of the garden” development land, but it’s nowhere I’ve ever worked. What’s more likely is that there are entrenched developers who have been working for years without responsibility or accountability, always capable of blaming somebody else, while giving wildly padded estimates and seemingly continuously at “80%” complete.
Introducing an Agile process (or in fact any process that highlights accountability) immediately highlights the incompetence, inability or downright unhelpful members within a project team. Given the rate of project failure (some say 70%) there must be a lot of rubbish developers about the place. With that much around, it’s no wonder there is significant resistance to Agile processes.
Imagine if I walked onto a project, telling everybody how the processes will highlight your deficiencies, make it obvious your lack of teamwork and slackness from the past. What sort of reaction is that likely to get ? I’m guessing that it’s not going to be good. However, that’s what the reaction of a certain section of the development community is leading me to believe they are hearing.
So, project managers, team leaders and more importantly customers, if your project team is resisting processes that highlight accountability and visibility, then start asking questions about whether they should be working on your project or in your company, at all.
Who knows, with enough introduction of these sorts of processes, it might even force a few of the pretenders to resign. Now, that would be a great achievement.