What I Do
Technology
I currently develop mainly with Java and make extensive use of Google Web Toolkit Spring and Hibernate. Having said that I am pretty technology agnostic especially when it comes to things such as operating systems, application servers and databases having worked with many of them. I also spend a surprising amount of time working with XML related technologies, relational databases and networks.
I have worked in commercial software development for over ten years and most of that has been Java related in some way and often featured J2EE. I also have experience with Lotus Notes/Domino with even have some Visual Basic in my distant past.
I nearly always get involved in the whole development lifecycle of projects and particularly enjoy requirements gathering, design and architecture.
I find object orientated analysis and design particularly enjoyable as with multiple objectives, tools and principles knowing how and when to apply everything is more of an art than a science. However, over the years I seem to have developed a sixth sense that knows when a design works.
In my free time I also do some experimental development but this mainly is with emerging technologies such as Groovy, Google App Engine and Android. I do this both for fun and to keep me up to date with the way technology is developing.
Way of Working
I have worked in large and small companies but nearly always have ended up working in project teams of around five, usually as lead developer.
Although I have worked successfully in SSADM and PRINCE2 environments I am a complete convert to the agile way of working. This is because most projects I have tended to work on have been new developments with a lot of customer involvement.
I have found that frequent release cycles gives a great ability to deal with changes in requirements and stops expectation gaps from opening. When appropriate I have found using extreme programming (XP) techniques especially test driven development (TDD) also help to produce high quality results and I enjoy that way of working.
I have also found the SCRUM methodology to be a very productive way of organising projects, prioritising work and keeping a very up to date picture of both current progress and work remaining.
Personal Development
Personal development is very important to me as I don't like to stand still. I have found that many technical skills can be completely out of date in as little as two years so standing still can just as easily mean going backwards. I like to always keep up with the latest technology both inside and outside of my particular skill set. My objective in this is both to be aware of the latest tools and frameworks related to the technologies I work with but also to have at least an understanding of the abilities, strengths and weaknesses of alternative technologies. This is because I am always looking for the best solutions to problems not just solutions using technologies I am most familiar with. Examples of thing I keep an eye on are Adobe, Microsoft and Apple languages, products and technologies.
I also like to read extensively on development, coding and team management best practice as there is always something new to learn. That said I do't believe in following advice blindly or jumping on the latest fad. I have learnt to take advice with a pinch of salt and like to discuss the new ideas with others. I then think carefully about how the could be applied to either my or my organisations situation.
Another area I get particularly excited about is personal performance and how I live my life affects my performance as a developer. This includes things like exercise, eating the right food, knowing what times of the day I work best. It also includes know how to best motivate myself, maintain focus and encourage creativity. I have read a lot on this subject and am usually carrying out one experiment or another in this area.
Community Links
Increasingly I am realising the importance of keeping up with what is going on in the development community and the IT industry and as a whole. Over the last few years there seems to have been an increasing appetite amongst developers not only to share their knowledge, experiences and enthusiasm both online though social media but increasingly through real world activities such as bar camps and other unconferences. I find this a very exciting trend as it boosts people up and gets them excited about their work independent of the organisation they may be working for.
I believe that increasing a gulf will soon open up between the people who do make the time to be part of the community in their free time and the people who sit at a desk from 9 to 5 each day and do nothing more. So much knowledge is imparted at these events, so much enthusiasm build and so many useful skills such as presentation and networking skills practiced there is a real danger of a have and have-not culture emerging with developers. I want to make sure I am firmly in the have group and try to get involved in developer community events whenever I can.


