Invest in Your Tools for More Productivity

[article]
Summary:

There are a wealth of open source and commercial tools available to help us build software.  However, sometimes we get stuck using tools in ways that are not optimal for our project.  In these cases, investing some time to make the tools work for us can make substantial improvements in productivity.

There are a wealth of open source and commercial tools available to help us build software.  However, sometimes we get stuck using tools in ways that are not optimal for our project.  In these cases, investing some time to make the tools work for us can make substantial improvements in productivity.

An example: This week our team was tasked with adding a new feature to our web application that required changing JavaScript code.  We've had the JsUnit tool in our build, which enabled us to write JavaScript unit tests, but running the tests was a bit of a hassle.  You couldn't run the tests with the same ease you could run a Java JUnit test, which only required a quick keystroke to run the currently selected test.  It's not that JsUnit has a bad test runner - it's that JUnit support in our IDEs is so good that we've gotten used to this flexibility.

After much investigation into the JsUnit tool and our editor (IntelliJ IDEA), we built a mechanism to run the JsUnit tests in the currently selected HTML file.  It actually takes two keystrokes, so it's not as robust as the JUnit tool support, but it was much better than anything we'd had before.

This had a profound effect on the team: it was now easy and fast to test JavaScript code.  We could now run specific tests and get results faster, which meant we were able to make many small refactoring steps with frequent feedback.  In the end, our JavaScript code's design was better and the team was happy with the experience.  In fact, the JavaScript was mentioned as a highlight of the week in our retrospective.

This work wasn't easy - it took a lot of investigation into the JsUnit tool, experimentation, and tweaking.  And along the way we had some doubts that it would actually work as nicely as we hoped.  But it paid off - now we have an easy and fluid way to run JavaScript unit tests, which means we'll write more. (Props go to Matt Raibert for his courage and determination to make this happen.)  I'm sure that investment will affect how we write JavaScript on a daily basis - and for the rest of the project.

What tools have you built or adapted to make your development easier and more fun?

 

About the author

AgileConnection is one of the growing communities of the TechWell network.

Featuring fresh, insightful stories, TechWell.com is the place to go for what is happening in software development and delivery.  Join the conversation now!