This post is currently only a draft. Input on how to improve the structure is very welcome
“A journey of a thousand miles begins with a single step.” – Lao-Tzu
When doing architecture, we always have to content with the present state of the system. It is extremely tempting to ignore this picture of the ugly system and create your vision of how things should be in the future. It is also very easy to get people to agree on such a vision. But somehow, we never get there. Have you ever wondered why that is?
Most people are pretty good at making a plan for how things should be in the far future. But we’re not sufficiently prepared to make a plan about how things should be right now. This is what I mean when I say we suffer from too little myopia.
As a tool to get there, I have found the Twelve-Three-One paradigm useful: We have a goal for what we should achieve in twelve months, three months and one month. The twelve month perspective is our goal – for example to change from EJBs to POJOs, to consolidate four applications on one server, or to deliver our big project. When you’re planning, this can be extremely fuzzy without putting you at risk. The three month perspective shows the direction we’re going to get there, for example, exchanging your entity beans with Hibernate, or duplicating all applications to the target server and slowly moving all dependencies to it, or to put a limited part of our system into production. This can be vague, but should represent our current working hypothesis on how to get there. The one month perspective shows the next step. It should be as finely planned as you require to get anything done in our organization (for example: copy the foo.cfg file to server-1 and modify these settings).
Read the rest of this entry »