Compiling Try/Catch/Finally on the JVM

One thing we’re currently working on, for a variety of reasons, is compiling down our in-house programming language into Java bytecode (and just for the record, I can’t make any promises about when we’ll be done or around when or even if this stuff will make it into future product releases).  Part of the fun [...]

Concerning The Relative Stickiness Of Success And Failure

It’s often the case that the hardest things to get motivated to do are those with a very speculative chance of success.  If you put in a lot of time at the gym, you’re going to get in better shape.  If you spend time cooking, you’ll probably have some reasonable to eat at the end.  [...]

How Much Do You Sweat The Details?

I tend to try to make parallels between my work and whatever else is going on in my life, even when they’re inappropriate.  Case in point:  I got married at the end of July (yay!) which meant that my wife and I spent a large percentage of our free time for the prior year or [...]

I Am Hate Method Overloading (And So Can You!)

My hatred of method overloading has become a running joke at Guidewire. My hatred is genuine, icy hot, and unquenchable. Let me explain why.
First Principals
First of all, just think about naming in the abstract. Things should have good names. A good name is unique and easy to understand. If you [...]

It can always be better

George Bernard Shaw put it best when he remarked that all progress depends on the unreasonable man.  Progress in just about any area requires that you not be content with the status quo, since otherwise you wouldn’t bother trying to make it better.  But at the same time, constant discontent with the world is a [...]

Swoopers and Bashers and Writers and Programmers

It’s funny that Bruce Eckel posted on Artima yesterday about how programming is analogous to writing.  I’ve thought that for a long time, and Eric Roberts, who developed the introductory CS curriculum at Stanford (and is just an amazing teacher in general) liked to point out to incoming freshmen that success in those classes was [...]

Finishing Refactorings

Technical debt, we all know, is hard to manage.  To fight against it, you have to (among other things) refactor and improve your code mercilessly.  But along the way, your attempts to make the code base a safer place can actually make them worse:  if you add in a new way to do something without [...]

Thoughts On Tech Debt

Martin Fowler recently updated his article on technical debt, and we’ve been discussing it in-house lately as well (though isn’t that always a conversation at any company with long-lived products?), so I’ve been thinking about it a lot lately.  
Personally, I think it’s perhaps the most difficult engineering concept for non-engineers to internalize, because most [...]

Phoenix First Two XP Sprints

Phoenix has finished its Sprint 5 and 6, which are the first two XP Sprints.
An XP team always goes through four stages, “forming, storming, norming, performing”. The first Sprint felt like a storming stage, where we are trying to figure out the best way to get the code in without spending too much time on [...]

Checking in on Process Changes

As I blogged about a while back, for this release cycle of the PolicyCenter product we’ve made a number of changes to our development process to try make things work more smoothly and predictably.  We re-organized the team into cross-functional sub-teams (which we call “pods”), moved from four-week sprints to two-week sprints, started scheduling and [...]