avatarharuki zaemon

The day I got the metaphor

By

When I started on this project (as is usually the case when starting on any project) there was much to learn and many of the design decisions were unclear at best. Some seemed downright ludicrous.

Unfortunately for my team members, I’m not one to just start copying what everyone else has done - I need to understand why. After 6 weeks or so I started to feel that some of the stuff I was seeing was deliberate and some was just plain wrong. But that still didn’t explain to me why the deliberate stuff was the way it was.

This week James Ross returned to the project (YAY!) after being seconded by another team (BOO!) on the same floor. James is the technical architect for the project and therefore, IMHO, the one charged with having the overall “vision” for the design.

So, all week the focus of my constant ranting and questioning was turned fairly and squarely on him (poor bastard!). Still, no matter how many questions I asked or how much I ranted, every answer seemed only to address a single question which feelt uncomfortable to me - James is one of the best technical architects I’ve ever come across.

And then as we (James and I) walked out the office door on friday night still in the thick of an argy bargy, he made a seemingly off the cuff and devastatingly simple remark: “it’s an insurance application form. I’ve tried to get that across to everyone on this project so many times now” he exclaimed with a sense of exsasperation “except for you I guess?” Things immediately began to make sense! In one fell swoop, he had addressed almost all of all my issues.

XP has as one of its core practices The Metaphor. It had never been so clear to me how important the metaphor really is and the reason nothing seemed to gel was that I didn’t have it.

It’s been a while since I was on a project where I didn’t have the metaphor in my head. What also became blatently obvious was that when I have been the lead on a project, that’s pretty much where it’s stayed (in my head) and I haven’t communicated the metaphor effectively to every team member. It’s something I’ve usually written down as a series of “principles” that, whenever we have a design question, we can refer back to for guidance.

The metaphor is the highest level of abstraction in the application design fractal and therefore it’s paramount that every member of the team, either existing or new, fully understand what the metaphor is. Of course this is predicated on there actually being a metaphor in the first place! ;-)