Tuesday 30 October 2012

First steps in Java


I’m currently writing a video based training course for VirtualPairProgrammers.com. At the moment their courses are aimed at existing Java developers, covering topics such as the Spring Framework, Java Messaging, Enterprise Java and Web Development. As Richard Chesterwood, their existing trainer, continues to develop more courses, they wanted a new course to complement the existing library, that would work for people new to Java.  

The course, which should be available to buy early next year, will be aimed at anyone who has programmed before in any major programming language (including C, Visual Basic, Pascal, PHP, Javascript or any of the .net languages). It will be a conversion course into Java, teaching both how to do in Java those things you know about in another language, and how to do things that you may not have come across before. For some people this will be all they need to get started writing Java programs, but for most it will be a stepping stone on the journey to advanced Java development – and the other VPP courses will provide those next steps.

It’s quite a daunting prospect as VPP have a reputation for really high quality products that genuinely help developers get their next job / promotion or project. 

But VPP also had another requirement – there are plenty of introductory Java programming courses available, but none of them really seem to focus on building “real world” software, and this is something that people new to Java really want to get to grips with. Many courses use abstract examples – I’ve seen one that talked about varieties of apples in one chapter, and then went on to talk about seeds, trees, blooms and fruit in another… something that you just don’t actually program. It reminded me of when I first learned about inheritance – I’m sure the example was insects, where there were different species and each insect might have a different number of legs, wings, etc. Again it might help explain the concept but it doesn’t help the programmer use it in a real life example.

So as writing the course progresses, I’m working out how to cover key topics such as syntax, application structure, exceptions, collections, JUnit, and of course object orientation, but at the same time using a sensible real-world example application that we’ll build from scratch. A lot of thought goes into this – it’s not like any kind of teaching I’ve done before, but I’m really pleased with the results so far!