• Experts Sharing Their Insights With Other Disciplines Needs To Be The New Norm

    "Experts sharing their insights with other disciplines needs to be the new norm" - Kathryn Myronuk, Singularity University. When you get a group of people together from a diverse background, whether that’s cultural or educational, you can spark ideas that would not otherwise have occurred to them. This is the idea behind some of the work being done by Singularity University.

  • Agile Estimation

    Estimating is difficult and if done badly it will only lead to disappointment. This is because usually when someone estimates how long a project is going to take they are optimistic, and that means that at some point there will be a realisation that a team is not going to deliver the project when they said they would. Agile estimation is about using information about what that the team has delivered in the past in order get an idea of what that team can deliver in the future. In order to do this we need a way of measuring what has been delivered.

  • Test Driven Development

    Test driven development (TDD) is a programming technique that advocates the development of unit tests before writing the production code. This does not mean that developers forge ahead and write a load of failing tests and then spend ages trying to work out how to get the tests to run. In fact it is a very controlled way of working, that ensures that you are never too far away from 100% test pass rate and your code does exactly what you expect it to do. This is achieved through a rapid cycle of writing a test, develop the production code and refactor/tidy up.

  • Releasing Software at the Push of a Button

    Rob Terpilowski has published an interesting blog post about automating the release process using the Maven Release Plugin and the Jenkins release plugin. This allows the a project to be released and published to a Nexus Repository at the push of the button.

  • Multi-Module Project with Maven

    In my last article I looked at how we can manage external dependencies in the Java build process with examples using both Apache Ivy and Apache Maven. This article is going to take it one step further and look at how we can manage several java modules that depend on each other and share dependencies and configuration using Apache Maven.

  • Introducing Dependency Management (or Ivy vs Maven)

    Following on from my previous article, I having been working on a project where the dependencies between modules is becoming unmanageable. The solution to this problem is to use a dependency management system like Apache Ivy or Apache Maven.

  • Test Coverage

    Martin Fowler posted an interesting article about the use of Test Coverage as a development tool and how it can be misused. Like any code analysis tools, the information provided is a guide for developers to help them identify areas of their applications that might be weak, not as a statement of the quality of the application, because "the trouble is that high coverage numbers are too easy to reach with low quality testing." I start to get very nervous when sales or management start talking about these quality numbers.

  • Software Building Hell

    I have always used Apache Ant for building Java projects. It has served me well, allowing me to do pretty much everything I've needed to do so far. However, as the projects I work on start get larger and more complicated, so do the scripts that build them.

  • Is Automated Testing Worth The Effort

    I recently came across a question asking whether the work involved in maintaining a suite of automated tests was worth the effort involved, this is my response.

  • Characteristics of Enterprise Application Security

    Enterprise application security has a number of characteristics that should be considered as part of application design. These have been defined in the security sections of the Java EE Tutorial and have been reproduced and expanded on below to try and explain what it all means.