Saturday, June 28, 2008

How Well Do You Know Your Tool?

Have you ever used a great tool? I've been doing some woodworking lately. So, I've been thinking a bunch about tools. There is nothing like having a good tool when you need it. Among tradesmen, tools (and tool brands) can evoke a great deal of passion. You may have know a "DeWalt guy" or a "Matco" lover.

My grandfather was a very skilled woodworker. He took a great deal of pride in crafting fine pieces of furniture that were beautifully finished. My grandfather was a Craftsman guy. Even when offered more expensive tools, he preferred to work with Craftsman. Perhaps the source of his passion was the good service he got from the local Sears, or perhaps it was because the tools had never let him down. Regardless of why, he was passionate about his tools.

Software development tools are no different. One need look no further than the vi / emacs wars fought at countless water coolers (to this day) to see the passion that one can have in a development tool. In Java-land, you may be an Eclipse or IntelliJ devotee. In .Net, you may insist on running ReSharper or CodeRush. All of this passion is useless without one critical component...

How well do you know your IDE? When was the last time that you looked through the feature shortcuts? When was the last time that you looked through release notes for new versions? What about learning keyboard shortcuts?

I primarily learn new features two ways. I pick up tricks from my teammates when pair programming. Sometimes, I learn things completely by accident. Every once in a while, I fat-finger a keyboard shortcut, and something really cool happens. Typically, it's not a feature that I want at the time, but it's new to me. To help me remember it, I will practice it a few times, and share the new information with the rest of the team.

Take some time and read up on your IDE. Good tools are useless if you swing everything like a hammer.

Wednesday, June 11, 2008

Running Fitnesse Tests

It is possible to execute a FitNesse page as a test, even when it is not marked as a test. This is a good thing. Say that you have a page that resides at:

http://localhost:8181/MySuite.MyTest

You can simply execute that test by appending "?test" to the end of the URL. Likewise, you can execute the page as a suite by placing "?suite" at the end of the URL.

In our project, we have some pages that are common to all tests. In order to prevent those pages being executed as tests, we changed the page property to indicate that they are not tests. However, it is occasionally useful to execute those pages by themselves for debugging purposes. Rather than going through the annoyance of setting the "Test" property and hoping that I remember to clear it, I can just append the magic text to the end of the URL, and I'm off to the races.