Trust me, I’m an Architect, Part 2

27 May

In my previous post, I proposed a world view for IT architects – an architecture manifesto.  I started by laying out five values that should drive our thinking and behaviour. Those values are the people whose lives are impacted by the architectures we produce; the big picture; humility; teamwork; and integrity.

However, such values are somewhat abstract, making it a challenge to apply to real-world scenarios. We can identify principles that build on the values and provide practical guidelines for applying them.  Here are eight principles to help us apply the five values to our work.

 

Communicate. 

Communicate first to understand: understand the needs of the users and stakeholders in order to create an architecture to meet those needs; understand what the IT development teams need from us and the architecture to help them deliver quality solutions.

Once we understand what the customers of architecture want from us, we then need to communicate in order to persuade them to adopt and maintain the desired architecture.  Buy-in and motivation don’t come by imposing an architecture on a team, but by persuasion and involvement.  We need to show the value of the architecture and the benefit to them in following it.

We can all learn to communicate better, and if we really do value people, that should be sufficient motivation to improve our communication skills.

 

Involve everyone. 

Seek active participation from all the stakeholders – without them we might not identify all the needs and requirements, leaving the project prone to failure.  Seek active participation from the IT development teams.  Being handed an architecture as a fait accompli doesn’t generate buy-in and motivation, but being involved in the evolution of the architecture does.

If teamwork is important we should be actively soliciting input, comments and suggestions from others, as everyone has something to contribute. Getting help from others is not a sign of weakness but a key differentiator of those who succeed.

 

Seek simplicity. 

For every model we create, we should know who the model is for and why we are doing it.  Then put into the model only what is necessary for that audience and that purpose.  Anything more adds clutter and makes the model harder to read and understand.  Avoid anything that adds unnecessary complexity.  For example, patterns are powerful but should be applied only when there is a justified need.

If the big picture is important, a simple big picture is easier and faster to understand, implement, maintain, and update.

 

Practise just-in-time design. 

Defer making decisions until they are needed.  A decision that is made sooner than it needs to be will use incomplete information compared to a decision that is made later with more information and hindsight.  Those things that are harder and more costly to change require more up-front work than those things that are easier and cheaper to change.  Decisions about those things that are easier and cheaper to change can be deferred until later.  Be a pragmatic procrastinator.

Focussing on the big picture helps us understand what decisions can be deferred and what can’t.

 

Deliver working solutions. 

Know your stakeholders and what their goals and needs are, as well as any constraints they may place on us.  Take advantage of existing resources and capabilities where appropriate.  Don’t reinvent the wheel when there is no need or justification.

Valuing integrity means choosing the right solution for the organisation, not for ourselves.  After all, it is their money that we are spending.

 

Keep learning. 

Attend those post-implementation reviews, retrospectives, etc.  Take the opportunity to learn from what we have done – what has worked and what hasn’t.  This knowledge helps us improve our architectures in the future.

Humility and teamwork involve recognising that we still have more to learn and that we can learn from others on the team.

 

Ensure quality. 

The highest quality architectures tend to be those that were designed to be testable (especially in an automated fashion).  Don’t ignore testing as not relevant to the role of architecture, but plan for it.  Trust your instincts (and those of others).  If it feels wrong, there may be a good reason for that feeling: instincts come from past experience.  Avoid gold plating your work – it doesn’t need to be perfect, just good enough to meet its purpose.

Valuing people (the business users, stakeholders and development teams) means providing architectures that meet their needs with an appropriate level of quality, but without unnecessary work and cost.

 

Manage change and complexity. 

Understand the drivers for change and plan for it.  Don’t add complexity to enable change when there is no justification for it, only where there is a business driver.  Avoid anything that gives the impression of permanence and resistance to change in the architecture.  This includes using pre-drawn diagrams when communicating the architecture, the use of the term “draft” (what happens when the architecture is no longer in “draft”?), and the use of version numbers with decimal places (what happens when the version is 1.0?).

Provide just enough documentation to give direction and clarity.  Because the amount of documentation is minimised, it is easier to keep updated, minimising the cost of maintenance and change.  What works for today may not be able to cope with the demands of tomorrow.  Be prepared to throw away what you have and start again where appropriate – what Martin Fowler calls “sacrificial architecture”.

Change and complexity are key components of the big picture.

In my earlier post, I described five values that should drive our behaviour.  The eight principles I have described here provide guidelines to help us apply those values to our work.  There are many practices in the field of architecture, and much is written about them elsewhere.  In the next post, I will instead look at practices that are counter-productive – anti-patterns of architecture.



Post by Colin Garlick

Thank you!

Your details have been submitted and we will be in touch.

CHAT
CALL