Sunday, 22 August 2010

The Java Programming Language

By Ken Arnold, James Gosling, David Holmes
ISBN: 978-0321349804

I decided to read this book about 18 months after having to learn Java in a hurry after discovering what I had been lead to believe was a C# role turned out to be a Java role. Despite several years of programming in C++ and C# I figured there must be lots of stuff that was different in Java and that this book would be a good way to find out. The first chapter is a 40 page general introduction to Java and I found it such a dry read that I gave up. Then, twelve months later, I decided I really should read it cover to cover to find out what I was missing and it took me five months to do it!

Although solid and reasonable well written the book is a dry read most of the way through. The chapter on streams is especially hard going. Although in many cases each method of a class being discussed is described in detail, this book represents a medium level (as opposed to high or low level) introduction to the language. As you would expect it covers classes, interfaces, inheritance, polymorphism, enums, control flow, generics, threading, reflection, etc. so you do get a good overview of the language. However it does not go into any detail about how to compile or run Java programs, neither does it mention ANT or describe how to create JARs. If you want a practical tutorial, this is not the book for you.

I didn't agree with a lot of the “good coding style” suggestions such as using a fall through comment in switch blocks to tell the reader of the code what he should already know the language does or using continue in a bodiless for loop as a semi-colon may get deleted or forgotten. Many people, including myself and the creators of the spring library, believe that checked exceptions are a bad thing in most cases and should not have been added to the lanuguage, so I find bad advice like “Nearly all exceptions you create should extend Exception, making them checked exceptions” appalling. There are a number of examples of poor practice throughout the exceptions chapter.

Overall I think most Java developers would benefit from reading this book just to plug a few of the inevitable gaps in their knowledge. It is hard going, but worth it. As it covers Java 1.5 and Java 1.7 is nearly upon is, it would certain benefit from an update and a review of good programming practice.

Thursday, 5 August 2010

Agile Cambridge 2010: Agile is a journey not a destination.

I have just had confirmation that I will be speaking at Agile Cambridge at 2.15pm on Thursday 14th October 2010. Please come and see me!

Session title: Agile is a journey not a destination.

Session type: Case Study / Experience Report

Session duration: 45

Session abstract: Agile is a journey not a destination describes a software team's two and a half year journey from inception to really becoming agile, the evolving process that was adopted and the lessons learnt in the first iterations.

Session description: This is a success story. A young company that has made a big impact in its market and has quickly established a strong foothold and a growing reputation for product innovation and time-to-market delivery. A stretching but credible business strategy will see the company broaden and deepen its market proposition; a future that is critically enabled through a fully distributable software platform.

A company that at times needed to be “more agile than agile”, as was a frequent refrain of the CTO. In the early days, like many start-ups, requirements were changing on a daily basis and the software needed to keep up with it. Right from the beginning, Agile was the intended methodology, but it was impossible to get the requirements to stand still even for a five day iteration (as is often the way with an owner occupied start-up and the race is on to ‘deliver’). Company growth was phenomenal (11 to 100+ people in a little over two years). However, the requirements did eventually start to stabilise enough for Agile to become a real proposition.

‘Agile is a journey not a destination’ describes a software team's two and a half year journey from inception to really becoming agile, the evolving process that was adopted and the key lessons learnt in the first iterations.

In the first part of the presentation I will look at how the software team grew into one of the most technically proficient and successful teams in the area, examining some of the triumphs and pitfalls along the way. I will describe the market opportunity that the company spotted and how the business responded rapidly to meet and exceed the expectations of its new customer base; and how the urgency to deliver a proposition affected the software development team. I will then describe the period from the heady early days to the a time when the requirements finally began to stabilise enough to enable the team to stand back (for a moment) and consider how Agile could be effectively implemented.

I will look briefly at the agile practices, such as unit testing and continuous integration, that should not be taken for granted in any software development, not just Agile software development. I will then go on to describe some of the obstacles that were encountered and how they were overcome, including how buy-in from more traditional project managers was achieved. Also, I’ll provide some key lessons on how you can effectively manage the transition from a waterfall mindset to an agile one; e.g. how to dovetail a business process map with an Agile story and winning the hearts-and-minds of all concerned.

Finally I will describe the development process followed and the lessons learned in the early iterations; like the need for visibility and continuous and free flowing team communication. No agile process is perfect first time and like software, the process must evolve.

This presentation has been written especially for Agile Cambridge, but will probably be given a warm up at ACCU London.

Intended audience: Software developers and project managers.

Session outputs: None

Paul has been programming in one form or another for over 20 years. After several years using C++ and a brief period using C#, Paul is now happy somewhere he hoped he'd never be, programming in Java.

After time in industries such as marking machinery, direct mail, mobile phones, investment banking and Internet TV, Paul is currently working for a company based in Norwich where he heads up an ever growing team of senior and highly skilled people.

When he's not programming and family life allows, Paul thoroughly enjoys science fiction, heavy metal and cycling.

Nathaniel Grenyer

It's been a while since I have had chance to blog and this time it's with good reason! I am very happy to say that Charlotte and I had a baby on Monday (2nd August 2010) at 8.53am. After going to the hospital on Saturday at 4pm and following a long painful labour, Nathaniel was finally born in a speedy 90 seconds. I almost missed it! He was born at the very healthy weight of 7lb2. Mother and baby are continuing to do very well! I need sleep.....