Category Archives: Agile & Architecture

Agile Development & Software Architecture

Review: Software Design Decoded

66 Ways Experts Think, By Marian Petre, André Van Der Hoek, Yen Quach

A powerful reminder on the behaviours required to succeed in software architecture

This is a delightful little book on the perennial topic of how a software architect should think and behave. While that subject seems to attract shorter books, this one is very concise – the main content is just 66 two-page spreads, with a well-chosen and often thought-provoking illustration on the left, and a couple of paragraphs on the right.  However just as with The Elements of Style, brevity indicates high value: this book provides the prompt, the detail can be elsewhere.

The book should be valuable to many: If you want to be an expert software designer, this book provides an overview of the skills and knowledge you need to develop. If you want to recruit such a person, this provides a set of key indicators and interview prompts. If you are in one of those software development organisations which believes that quality architecture can somehow emerge by magic from the unguided work of undifferentiated coders, this might make you think again.

If you are, or think you are, a software architect, this book should act in the same way as a good sermon: it will remind you of what already know you should be doing, and act as a prompt against which you can measure your own performance and identify areas for improvement. It reminded me that I can sometimes be slow to listen to the views of others, or evidence which may change a design, and slow to engage with new technologies, and I will try to act on those prompts.

This book resolutely promotes the value of modelling in software design. Formal models and analysis have their place, but so do informal models, sketches, and ad-hoc notation. The key point is to externalise ideas so that they can be shared, refined and “tested” in the cheapest and most effective of ways, on paper or a whiteboard. We are reminded that all these are hallmarks of true expert software designers. Code has its place, to prove the solution or explore technicalities, but it is not the design.

The book also promotes the value of richness in these representations. Experts should explore and constantly be aware of alternatives, and model the solution at different levels of abstraction, in terms of both static and dynamic behaviours. Continuous assessment means not only testing, but simulation. If required, the expert should build his or her own tools. While solving simple problems first is a good way to get started, deep, early understanding of the problem space is essential, and experts must understand the whole context and landscape well enough to make and articulate design prioritisations and trade-offs.

I thoroughly recommend this book. It may seem slight, but it delivers a powerful reminder on the process of design, and the necessary, different thought processes to succeed with it.

Categories: Agile & Architecture and Reviews. Content Types: Book, Computing, and Software Architecture.
Posted in Agile & Architecture, Reviews | Leave a comment

Form vs Function – a Tail :) of Three Mice

Just in case you think some of my recent posts have been a bit anti-Microsoft, here’s one in which (spoiler alert!) they win! Call me old-fashioned, but I very much prefer using a mouse to a trackpad or its relatives, Continue reading

Friday, September 30, 2016 in Agile & Architecture, PCs/Laptops

The Colour Nazis

Once upon a time, not so long ago, there was a movement obsessed with removing colour, especially those whose skin colour or religious preference was different to their own. This went to great extremes, caused the greatest of all wars, Continue reading

Wednesday, September 21, 2016 in Agile & Architecture, PCs/Laptops, Thoughts on the World

Microsoft : Busy Fixing What Ain’t Broke

There’s an interesting, but intensely annoying, behaviour by the big software companies, which as far as I’m aware has no parallel in other areas of production for consumer consumption. We’ve all been used, since the mid-20th century, to the concept Continue reading

Monday, August 29, 2016 in Agile & Architecture, PCs/Laptops, Thoughts on the World

Fashion Makes Doing IT Harder

I’m about to start building an expert system. Or maybe I might call it a "knowledge base", or a "rule based system". It’s not an "AI", as at least in its early life it won’t have any self-learning capability, but Continue reading

Wednesday, July 6, 2016 in Agile & Architecture, Thoughts on the World

Does Your Broadband Beat a Carrier Pigeon?

There’s a famous quote "never underestimate the bandwidth of a station wagon full of tapes bowling down a highway". Musing on this I decided to try and estimate the bandwidth of a carrier pigeon, given modern storage technology. According to Continue reading

Friday, May 6, 2016 in Agile & Architecture, Thoughts on the World

Platform Flexibility – It’s Alive!

The last post, written largely back in November and published just before Christmas suggested that camera manufacturers should focus on opening up their products as development platforms, much as has happened with mobile phones. While I can’t yet report on Continue reading

Monday, January 4, 2016 in Agile & Architecture, Android, Code & Development, Photography, Thoughts on the World

Do We Want Product Development, or Platform Flexibility?

There’s been a bit of noise recently in the photography blogosphere relating to how easy it is to make changes to camera software, and why, as a result, it feels like camera manufacturers are flat out not interested in the Continue reading

Tuesday, December 22, 2015 in Agile & Architecture, Code & Development, Photography, Thoughts on the World

SharePoint: Simply C%@p, or Really Complicated C%@p?

There’s a common requirement for professional users of online document management systems. Sometimes you want to have access to a subset of files offline, with the ability to upload changes when you have finished work and are connected again. Genuine Continue reading

Wednesday, November 4, 2015 in Agile & Architecture, Code & Development, Thoughts on the World

The Software Utility Cycle

There’s a well-known model called the “Hype Cycle”, which plots how technology evolves to the point of general adoption and usefulness. While there are a lot of detail variants, they all boil down to something like the following (courtesy Wikipedia Continue reading

Wednesday, September 30, 2015 in Agile & Architecture, Thoughts on the World

Can No-One Write A Good Book About Oracle SOA?

I’m frustrated. I’ve just read a couple of good, if somewhat repetitive, design pattern books: one on SOA design with a resolutely platform-neutral stance, and another on architecting for the cloud, with a Microsoft Azure bent but which struck an Continue reading

Saturday, June 13, 2015 in Agile & Architecture, Reviews, Thoughts on the World

Cloud Design Patterns

This is a very useful introduction to key cloud concepts and how common challenges can be met. It’s also a good overview of how Microsoft technologies may fit into these solutions, but avoids becoming so Microsoft-centric that it becomes useless Continue reading