Agile development has taken off in a big way and there are many notable companies that use it. However, there are still many companies that are stuck in waterfall mode and find it hard to make the transition. Here are some of the agile best practices that I’ve found can be incorporated into any team and provide immediate benefits.
Make it easy to commit code
Make it easy for developers to commit code and try and commit regularly so that your code stays code stays in check. I think merging code that has been worked on for long periods of time is one of the most error-prone and time-consuming tasks a developer can be faced. The ideal solution is to have your version control system integrated into your IDE, tools such as Eclipse and Subversion make this quite easy to achieve.
Short build cycle
I’ve come across numerous companies where they are so focused on other issues that they totally miss this one. Long build cycles mean that a surprisingly large amount of time is wasted when the developer has made a small change and is waiting for his code to compile. It can also mean that the developer loses momentum and focus, which in turn means that even more time is lost.
In addition to this, you may want to look at JavaRebel – which provides a Ruby on Rails like functionality to Java and allows you to make changes to Java classes on the fly.
Test Driven Development
Unit testing has become very popular and is probably one of the easiest things to sell to your boss. Adding unit tests to your code provides a number of benefits; it helps find development problems early on and provides developers with more confidence to refactor code, which in turn leads to better, more robust code.
Automated build process,
There are a number of tools that will allow you to automate your build process CruiseControl and Hudson are two of the most popular ones. Build automation gives you immediate feedback on the health of your project and helps ensure that no bugs or compilation errors are introduced into the build.
Avoid creating silo’s of knowledge
Try and ensure that knowledge of all parts of your system is spread evenly between your developers. This stops development grinding to a halt when a particular developer is ill or on holiday, it also helps ensure your code is of a higher quality as more people will have worked on a particular component and hence it should be more standardized.
Have a place to share knowledge (informally)
Having a common place where everyone can share knowledge easily, such as a local Wiki can prove invaluable. There is obviously still a place for more formal documents, but a Wiki enables developers to do a brain dump on a particular problem or piece of functionality and store information that may have otherwise been lost.
Some of these agile best practices may seem obvious but actually implementing and sticking to them is where the challenge lies. In essence, these practices enable your team to work in a more efficient and responsive way, which should not only benefit the customer but also aid the developers in removing some of the distractions related to development and focus on the core task. Do you think there are there any that I have forgotten? Please feel free to leave a comment below.