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?

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.

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.
–
Michael DurrantMar 19 '12 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. MaesMar 19 '12 at 16:31

+1 for value adding or not. Value is different in each scenario.
–
Adrian SchneiderJun 12 '12 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 BurnsMay 22 '12 at 13:54

He sure mentions a IDE a lot though and asked for tips!
–
Michael DurrantMay 22 '12 at 18:31

You're right, and I apologize. I should probably not downvote late at night...
–
Ben BurnsMay 23 '12 at 14:03

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!