My last post on refactoring and internationalisation apparently managed to draw Richard Ishida’s attention. I thought I’d reply in a post rather than a long rambling comment (though making it a post will probably only increase the length and rambling-ness).

Richard’s point, which I’d agree with, is that internationalisation needs to be part of the architecture, not a feature you add to your software at some point.

It’s an interesting argument, but my understanding was always that in extreme programming the architecture was supposed to be emergent. The focus on refactoring seems designed to avoid allowing the programmers to take decisions about what might be needed in the future and to do ‘the simplest thing which might possibly work’.

Chapter 5 of Extreme Programming Explored (Where’s the architecture) seems relevant, but doesn’t touch at all on internationalisation, but then, none of the extreme programming documentation I’ve seen does. XP Explored does cover a few cases where they see the evolved architecture as potentially inadequate (threading and data modelling), some perhaps internationalisation was just something overlooked for that list.

Extreme Programming Installed also has some interesting content in chapter 26 (Infrastructure), but again the focus is on avoiding doing anything which isn’t justified by a customer user story scheduled for the current iteration.

Martin Fowler also seems to suggest that, from an extreme programming point of view, that internationalisation is better left as a problem to solve when it is required, but admits he has no supporting data one way or another. Jim Shore does, however, provide a least a little anecdotal evidence (pdf) that internationalisation might coincide with certain refactorings.

So, what’s the conclusion? I don’t really feel like I’m any closer to a real answer. The really odd thing is that digging around on the web, the main opinion seems to be that refactoring’s ruthless elimination of duplication will be at least a step towards internationalisation, where as given the example I presented last time, I would have expected the exact opposite.

Technorati Tags: , , , , , , , ,