John is an experienced consultant specialising in Enterprise Java, Web Development, and Open Source technologies, currently based in Sydney, Australia. Well known in the Java community for his many published articles, and as author of Java Power Tools and Jenkins: The Definitive Guide, and founder of the open source Thucydides Automated Acceptance Test Library project, John helps organisations to optimize their Java development processes and infrastructures and provides training and mentoring in agile development, automated testing practices, continuous integration and delivery, and open source technologies in general. John is the CEO of Wakaleo Consulting, and runs several Training Courses on open source Java development tools and best practices. John is a DZone MVB and is not an employee of DZone and has posted 124 posts at DZone. You can read more from them at their website. View Full User Profile

Software Development in Troubled Times

  • submit to reddit

Nowadays, more than ever, developers need to be productive. Ultra-productive. Organizations need to optimize the added value they get out of their development projects, and should be actively looking for ways to do it.

Of course, you can adopt the traditional approach - work harder. 16H work-days, no weekends, to smooth over unforeseen complications in your project. But wouldn't be better just to work a little smarter instead?

The development process is one area where many organizations stand to gain a lot by investing relatively little effort into introducing some new practices, and improving existing ones. There are generally many areas where things can be improved, but here are a few simple tips to streamline your development process, just to get you started.

Rethink your CI notification strategy

By far the most common CI notification mechanism is ye old mail server. However, are you sure that email is the most suited system for the task at hand? Try using instant messaging rather than (or as well as) email for your CI notifications. Remember, email tends to be a distraction - you will be much more productive if you only consult your emails every couple of hours or so. Email was Or, at least for build failures - people need to know about this fast.

Aggressively optimize your build process.

Build metrics are a great way to monitor the health of your build process. Why has the code coverage been dropping off over the last 3 weeks? Why is the number of unit tests not increasing at a regular rate? And why did that build take so long to fix? How long do your unit tests take to run - and are there any that are taking too long? This sort of information is not a luxury - it should play a key role in the ongoing task of keeping your build process fine tuned. Modern CI tools such as Hudson, Bamboo and TeamCity display ample statistics about your builds. Bamboo in particular does a great job in this respect. Whatever CI tool you are using, learn how to get the most out of its reporting features, and use them to identify and fix trouble spots in your development process. And if your CI tool doesn't give you all the information you require? Then find one that does!

Streamline your release process

During the release process, there are many book-keeping tasks such as preparing release notes, identifying which issues have been resolved in a given release, tagging versions and so forth. These are an important part of the software life cycle, and if you neglect them, the QA guys and the end user may become irate. However, automate these tasks as much as possible. Many CI tools integrate nicely with the principle issue tracking systems such as JIRA and Trac, so that you can view what issues where fixed in a particular build based on the version control logs. If you are using Eclipse, Mylyn can help you group work on issues into logical change sets, and proposes a standard template listing the resolved (or just impacted) issues for a particular piece of work. Or you could simply use Subversion hooks to ensure that each Subversion commit referred to a valid issue number.

These are just a few ideas - there are plenty more. The bottom line is - you don't have to tolerate a sub-optimal development process - rather, get in there and do something about it. Good luck!


Published at DZone with permission of John Ferguson Smart, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Martijn Verburg replied on Wed, 2008/10/22 - 9:25am

Very much agree with this post.  If you add up all of the time it takes to run builds and do releases during one working day (even to say a shared dev or test environment) and multiply that by the number of developers on your team I think many will be surprised at how much time they waste!

Recently we've spent a good amount of time on our project taming the build and release process (moved from ANT to Maven and introduced CI) and we've all gained some significant time back.  Another benefit to this is that the developers are simply less frustrated with their job so more smiles around that coffeee machine in the morning :)

So if you find yourself wasting time then do the math, present it to your PHB and explain how you can get that precious time back!

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.