Guidewire

Post On Sorting

Up on the guidewire devblog.

Man I love GScript.
|

New Post on DevBlog

I've got a new post up over on the devblog about how closures and type inference make generics easier to deal with:

http://guidewiredevelopment.wordpress.com/2008/04/20/gscript-java-4/

Good stuff.
|

New Post at the DevBlog

I've got a new post up at the DevBlog, discussing Enhancements:

  
http://guidewiredevelopment.wordpress.com/2008/03/18/enhancements-in-gscript/

Pretty cool feature of GScript.
|

Dynamic Languages

I gave a Ruby talk here at Guidewire a few weeks ago, and it has been fun to see all the discussion that it has generated. I don't think there is much chance of us using Ruby in any serious way in our core applications, but it could make inroads in the periphery (support code, example integration applications, etc.)

Despite how much I love Ruby, I'm still skeptical of how well it will perform in a large system. I just don't have experience with large, dynamically typed systems, and a lot of older engineers I respect shudder at the idea. Maybe the prevalence of unit-testing will change this (Martin Fowler seems to think so.) I guess we will have to wait and see how the Rails projects turn out to provide evidence one way or the other.
|

Testing and Change

Guidewire is an XP-ish shop, and one of the delights of working there is the incredible test infrastructure that they have set up. It has been immensely educational to work with people who take testing so seriously. Now that I have some first-hand experience with this sort of an environment, I have a few tentative observations:

* Test-first development is hard when a GUI layer is involved
* End-to-end tests are not worth the effort until you have a 1.0 product. And perhaps they aren't even worth the effort until you have a 2.0 product, where certain application paths have been established and need to be maintained.
* Unit testing can get really nasty when there are elaborate dependencies between classes
o It is very hard to keep dependencies low. It requires effort at every step. If you aren't constantly watching it, you will introduce them.
* A flexible sample data and configuration generation platform is crucial for a good test environment
* If tests aren't easy to write, they won't get written or they will be written poorly
|