I am sure many of you have read Jeff Atwoods’ last two blog posts regarding WYSIWIG and visualizing failing faster. If you haven’t, I definitely recommend reading both, playing with Glimpse, and watching Bret Victor‘s video on Inventing on Principle.
Both of Jeff’s posts focus on how you can and should be striving for a faster feedback loop for code/markup. Glimpse provides a nice animation for rendering markup results with just a key press. Glimpse still requires you to switch back and forth between the two views. Bret Victor takes this a step further by allowing you to showing the results of your changes immediately and contiguously. His tools also added features like slides to change values and get feedback on those you wouldn’t be able to achieve otherwise. Amazingly powerful and the further of IDE’s in my opinion.
As I reflected on this more, I realized that Bret’s vision fits in perfectly, so long as you could add another feature to his IDE. The feedback Bret’s IDE provides allows his to essentially define and run tests very quickly. What is missing from this is capturing of the inputs and expected output into a repeatable test. If the IDE was extended to capture various “tests” as unit tests, then you have the best of both worlds. Now I can write code (and tests) rapidly, get my feedback and move on.
I am inspired by both of these posts and tools to find ways of improving my personal feedback loop and productivity. There are slight improvements to my personal productivity that I can apply today. InifiniTest is a great Eclipse plugin for automatically running unit tests as you change code. Grails (a Groovy web framework) is an example of a framework that dynamically recompile code that is deployed. This allows developers to edit, save, refresh to see changes, as opposed to the edit, save, compile, package, deploy, refresh feedback loop of traditional Java web frameworks. I look at my current project’s Ant/Ivy build script that takes 10+ minutes to compile and run unit tests and I lament that it fails the cup of coffee test, but should I look further. The faster the feedback, the faster you find bugs, the faster you develop. How fast do you fail?