Sunday, October 14, 2007

A Ripping Yarn

Shackleton

The other day we watched Shackleton, a dramatized version of Ernest Shackleton's expedition to cross the Antarctic. Although a dramatized version, the script was based on the diaries and first-person accounts of the explorers and so it's very close to what actually happened.

The story didn't need any dressing up to make it more exciting - it's incredible enough as it is. I knew something about the expedition - that the ship, the Endurance, became trapped in the ice for several months before finally being crushed - but that was about all. I didn't really appreciate the true story of what happened.

The Endurance was stuck for nine months before being destroyed. Shackleton and his men, twenty-eight in all, pulled three large boats for weeks across very rough ice. The ice was drifting north and when it finally broke up around them they took to the boats, spending a week in freezing conditions before landing at Elephant Island.

Shackleton knew that the chances of rescue from Elephant Island were very slim, so he and five other men took one of the boats, improved it by raising the sides and putting a deck across it, and sailed it over 800 miles to South Georgia - a two-week journey and an incredible feat of navigation given that the seas they crossed are known to be among the worst in the world and that Frank Worsley, the navigator, was only able to get four navigation readings.

If that wasn't bad enough, the six men survived a storm at sea that sank a 500-ton steamer then landed on the "wrong" side of South Georgia - so Shackleton and two others had to climb over an uncharted mountain range to reach a Whaling station on the other side of the island.

It took Shackleton four attempts and four more months to return to Elephant Island to rescue the rest of his men, and at the end of that not one of the original twenty-eight had died.

Real boys-own-paper stuff.

Labels: ,

Saturday, October 13, 2007

Badly Run Projects

Only the government would let all work stop on a project before it was completed because the contract end date came up and nobody bothered to extend it. That's exactly what happened to the project I was working on, and I had an entire week to bum around the house doing nothing in particular.

That ended a few days ago when I was assigned to help with some finishing up work on another project. Luckily, all I was expected to do was write some missing HTML help pages - the actual code work is mostly done.

I say "luckily" because I'd normally be slightly annoyed at doing web pages instead of Java coding, which is really what I do. Not in this case, though, because the way the project is being run I'm actually glad I'm not part of the core development effort.

Allow me to explain that.

The way we worked on the previous project was like this: I'd make my code changes or write new code, then I could test it in isolation by running it on a Tomcat server installed on my own machine - that way if my code broke something it didn't affect anyone else. Once I was happy with the way my code was working I would commit my changes to the Subversion repository, and the Cruise Control software running there would build the complete system and deploy it to the development server once an hour. That way the development system had an up-to-date version of the system containing the most recent code from all the developers, never more than an hour old.

The project I'm working on now isn't set up that way. We don't have local Tomcat servers, so we can't test code locally. When code changes are committed to the repository, someone has to kick off the build and deployment process manually. In fact I have no idea how the developers do their testing - they must either upload their changes manually to the development system, in which case they risk conflicts (what happens if two developers make different changes to the same code, then one uploads his changes overwriting the changes made by the other?) or they must be committing untested code changes to the repository. Either way is very, very bad.

That's the main thing that's a problem for me. There are some other niggling points, such as that they're using Java 1.4 when they could (and should, in my opinion) be using at least version 5, and that they use CVS instead of Subversion for source control. These are minor, insignificant points compared to the major problems I've already mentioned.

As I already said, I'm just adding new HTML help pages so I'm not directly affected. But there have been hints that I may be expected to make code changes too, sometime in the near future. If that happens I'll have to talk to the developers to find out how they get round the limitations and work without wrecking each others' code. I may need to have a long, hard talk with the Project Manager. Apparently there was some disagreement about the above-mentioned work process when the project was started; in my view the PM shouldn't have been given the option to do it his own way, because it adds unnecessary risks.

At least for now, my work is complete - there were nine missing pages to be created and I did five while another developer took care of the rest. I'll probably have to do some tidy-up once they've been reviewed, but this coming week could be another slow one.

Labels: