Gerard Chiva, Agile and business coach, made a very interesting speech about obsession with attention to detail, quality and pace on product delivery using a very interesting metaphor.
Antonio Lopez is a very famous Spanish painter who worked from 1994 until 2014 to complete a canvas called Juan Carlos I’s family for the Spanish royal family. You can see, also, details in the portrait that indicates the portrait had several modifications or corrections.
Niggle’s syndrome concept is based on a fairy tale called Niggle’s leaf about a painter who was obsessed with painting leaves with humongous detail. Then he wanted to create a tree with every single leaf using the same amount of detail, and so with the branches, the birds… he started with a simple leaf and ended with a monstrous landscape in a huge canvas. He was obsessed with the attention to detail. And this tale from JRR Tolkien reflects the fear of not being able to complete one’s work due to the big amount of details he wanted to include (like indeed happened with his Middle Earth mythology, The Silmarillion).
Niggle’s syndrome is, therefore, the professional bias towards getting deeply lost into details and the obsessive quest for accuracy in our real world’s representation, far beyond the point where that level of detail proves itself worthy. This is what happened to Antonio Lopez with the royal family’s portrait.
Everything we build through coding is an abstraction of the real world and the way we want to represent it. We recognize Niggle at product stories level, at technical level, when we observe too many details in the wrong areas, unbalanced granularity between the parts. When we see miniaturization in the implementation, when we treat non-core parts as first-class citizens, or when we somehow differentiate granularity between the parts.
A question we need to ask ourselves is: Does TDD really lead to good designs? Should we not learn to recognize good designs first, instead of relying on tools? Do we need to pay attention to macro design attention? Have we actually evolved in the abstract design side of things in the last 20 years?
Design is, plainly, finding the right amount of abstraction for each part, something not easy to achieve. Design in its greatest simplicity is minimizing any system down to its elements so as to have the greatest impact (the contraposition to Niggle’s syndrome).
So here’s the question: how do we approach big scope with this definition of simple design? Like a real life canvas, software design isn’t that different. We need to understand the big scale, start deconstructing it, and expand it if necessary until we find the balance. Is this too subjective? Where is the method? And most importantly: how do we deal with change?
Sometimes, the vision will grow but the original concerns will remain centered. In long, big scoped projects, there will be a lot of things surrounding the product that will change. The vision doesn’t need to change; the vision was always there.
Projects with time have incredible details, but also regrets and changes (like Antonio Lopez’s canvas). this means there was no plan. Or was there?
We need to learn from this that space is a driving factor when designing our product; that we need to evenly distribute the product features; that we need to fight to find the right scale; and especially, learn continuously so we can be able to integrate changes and even failures.
In order to capture reality (essentially, what we do when we develop products), we have to use painter tools. And apart from the tools, sight needs to be educated if you want to be a good painter.
But we got tools too! We know rules and patterns to, mainly, identify BAD designs, but these do not suffice to warrant a GOOD one. On the other side, we have Agile, incremental approaches, stories, personas, customer journeys… still, these won’t tell us what a good design is. So how do we approach product design and escape Niggle’s syndrome?
We just have to accept that, by the end, our work will not resemble what we thought it would be at first. Our job is, simply, walk and help others walk the path to that place.
A work is never really completed; it just takes you to the limits of your own possibilities.
You can watch the conference here, but again, although the slides are in english, Gerard speaks in a perfectly inspired Spanish.