When I'm working I feel like most of the time I'm not doing actual work. For example after making a change to the code in order to test it, I have to first build the project, and start the server(say JBoss). Upon testing, I find that there is another small issue. So I bring down the server, make the changes, build again and start up the server again.The building and bringing the server up/down is not very useful work.

Also, the IDE (let's say Eclipse) does things such as updating Maven indexes and building the workspace which take some more time to get things done.

Have you come across this kind of situation? Do you have tips on how to overcome/bypass this? Any features on the IDE/build tools that can be helpful? Any architecture/application design/technology that attempts to overcome this?

  • JRebel is a great tool, where you do not have to restart your server for every small change. Commented Mar 18, 2012 at 14:57
  • You might want to set up a CI server if the build overhead is slowing you down.
    – Daenyth
    Commented Mar 18, 2012 at 16:36

4 Answers 4


If you look at it from a business perspective, you'd have to make a distinction between value-adding activities and non-value adding activities. What is a value-adding activity? One that the customer is willing to pay for.

Does the customer want to pay you to start up the server? No! Does the customer want to pay you for a relevant change in the code? Yes!

If you'd want to work as productive as possible, you have to eliminate all these non value-adding activities or at least cut them to the absolute minimum. This is a crucial step towards lean manufacturing. This is becoming more and more important in service companies too.

Now suppose you have a machine that has a setup and shutdown time before you can start to produce another part. What you will do to maximize productivity is you will cluster the same products together, in order to minimize the setup and shutdown time. In that way maybe you could do more changes at the same time before restarting the system.

The are many books written about the subject which will give you general advice of how to recognize all the "waste" in your company or specifically what you do but also how to get rid of it. The advice is general, so you should think of yourself how you could apply this to your specific programming situation.

Maybe this book is something for you. It specifically handles services. Also the wikipedia page about lean service management is relevant.

  • 1
    If the server is down and the customer are complaining about it, I'm thinking they might pay well to start the server. My point (below) is that someone has to do it and all tasks are ultimately billable. Commented Mar 19, 2012 at 11:40
  • I was trying to use the example of the question, where I think he means a test server. Off course, if something has to happen, it must happen. If it's non-value adding, it still has to be done but people should think how it could be prevented in the future instead of doing it over and over again. At least that's my opinion.
    – J. Maes
    Commented Mar 19, 2012 at 16:31
  • +1 for value adding or not. Value is different in each scenario. Commented Jun 12, 2012 at 4:37

Development always involve overhead like this, even without an IDE. At the the end of the day "someone has to do it" and "whatever time it takes, it counts as development time".

In either case, what you describe is just the development cycle with an IDE (I use a variety of IDE's and editors).

Since you asked for tips, one thing I do find easy with an IDE is the visual ability to select and run one or a selected number of tests easily to avoid the time delay of running the whole suite.

Another thing that can help a lot is caching. For example I develop in rails and it caches stuff in production more than development to make development changes easier. However that be be changed as needs to help speed things up more for development (e.g. css/js assets don't change).

Sometimes it's better to use command line tools and a lighter-weight editor depending on the circumstance at hand.

  • Downvoted because his question has nothing to do with whether or not he's using an IDE or editor, it's about how he can shorten each iteration in his development workflow on the whole.
    – Ben Burns
    Commented May 22, 2012 at 13:54
  • He sure mentions a IDE a lot though and asked for tips! Commented May 22, 2012 at 18:31
  • You're right, and I apologize. I should probably not downvote late at night...
    – Ben Burns
    Commented May 23, 2012 at 14:03

You should begin by keeping track of how much time is spent by each of your developers are doing their different tasks.

  1. Take note of the tasks that are repetitive and easily scriptable (ie- run build on code & reboot server with updated code)
  2. Prioritize impact of each class of task (ie- launch new build, startup/shutdown, source control)
  3. Investigate the most time/cost effective solution to each individual task, whether the solution should be a script, more hardware or a new software package.
  4. Work each solution into your processes individually.
  5. Evaluate at preset time periods to ensure you are seeing the productivity gains expected and tweak as needed.
  6. Bill out all possible parts of this list to clients. :-)
  7. Profit!

At my company when a new build is created, we update a dropdown box on an internal server and whenever any of our dev servers restarts apache it automatically pulls and deploys the new build.

While free/open-source solutions can seem to be great to start with, sometimes you'll see greater productivity savings by paying for a service to manage your processes.

For instance, my company uses JIRA for our issue tracking which integrates with source control and allows anyone to view the specific source changes that apply to a particular ticket.

  • +1 for automate repetitive tasks & track where the time goes. Commented Jun 12, 2012 at 4:38

It may look capricious, but having powerful hardware can easily improve your productivity. A lot of the tasks you mention (building, starting the server, updating Eclipse indexes…) are highly hardware-intensive (CPU, HDD, RAM…). Improving hardware performance has a very quick ROI.

A few month ago we switched our environment to 8Gb RAM in x64 (previously 4Gb RAM in x86, which thus meant ~3.2Gb usable) and I can say this has been a huge productivity improvement. Now I don't have to worry any more about memory usage or closing some software because it is too heavy. I can even start Eclipse on 2 or 3 different workspaces, start 2 different servers and run a database server simultaneously!

We are also using JRebel as proposed by Jarle Hansen.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.