TL;DR Getting end-users' and sponsors' feedback is crucial if you really want to build (/enhance) a good product, but it doesn't mean that you can let them "think with solutions" and mindlessly introduce suggested changes yourself. Business insights ought to be reforged into highly conscious & thoughtful updates of the model beneath the solution first - otherwise the Frankenstein of a system you'll end up with may not only be hard to understand, maintain or develop further, but also devoid of clear focus & uniqueness that made your end-users love it in the beginning. These are universal truths that apply outside of the IT as well - this blog post about such an example from a completely different industry ...

I'm a "positively lazy" person, not only in terms of automating tedious tasks, but also "outsourcing" duties that someone can do better / faster / cheaper - that's why at some point (6 years ago, before it became popular ;P) I've decided to replace my diet at the time with Food-as-a-Service ;> aka boxed catering (5 meals delivered everyday in the morning, packed in vacuum containers).

Results have surpassed my most optimistic expectations - my health visibly improved (I had regular medical examinations, just in case), I saved a lot of time (grocery shopping, preparation, dish-washing, etc.), quality was decent enough & at last but not least - I've enjoyed the meal variety I wouldn't be able to achieve myself - service provider have made two commitments regarding that:

  • each dish won't repeat within 3 months
  • every consumer can name out 3 ingredients she/he doesn't like & these will be removed from her/his personal diet

It appears that these commitments didn't mix well long-term, but let's not get ahead of ourselves.

During all these years almost nothing got worse, quite the contrary. Price-tag is still the same, quality & freshness didn't drop at all, the packaging quality has actually improved. But there's one major setback that has finally forced me to give up their services - it seems they were listening to their consumer feedback too much ...

Too-common denominator

Slowly (but inevitably), step by step, one by one, all the expressive flavors have started disappearing from the daily menus. Basically, if you want to introduce a little variation, there will be always someone complaining, someone that doesn't like it (as it doesn't fit her/his personal taste). So in larger population, for any particular thing there will be always someone who doesn't like it, period. And the more unusual the combination, the more unique (sometimes even controversial) the flavor, the more intense the dislike (even if disliking group is very small when compared to whole consumer population) will be.

So, as the service provider has given an option of excluding 3 ingredients w/o any other constraints, people have eagerly started using it. The rest of the story isn't hard to predict:

  1. it was more economical (for the provider) to get rid of some (disliked by relatively high percentage of population) ingredients in general, than to customise sets individually ...
  2. ... or rather replace them with something more common & less controversial, ...
  3. ... but after some time consumers were changing their exclusion choices (due to something in today's set they didn't like in particular) which concluded the cycle & got us back to the step no 1 in this list

This spiral of local optimisation madness has led whole "platform" (remember: Food-as-a-Service :>) to much lower overall quality -> even if particular dishes still (in theory) do not repeat within 3 months, everything tastes the same, there are practically no herbs or spices, you can barely tell any difference between yesterday's breakfast & today's one, etc.

In other words - they've went so far in making sure that no-one's unhappy about any tiny bit, that no-one is happy about the general, end-to-end product. I guess they should have read more classics:

“If I had asked people what they wanted, they would have said faster horses.”

Henry Ford

Why the hell am I boring you with the tale about tasteless, boxed forage?

Mindless acknowledgement (& applying) of your users' (& stakeholders' in general) feedback can have similarly disastrous effects in both systems' design & software engineering. Starting with "the chronicler syndrome" (accepting end-users coming with solutions, treating their wishes as ultimate truths) & ending with a burial of application domain model under endless layers of spot, local changes for whom no-one assessed the impact on the concepts system is built upon. What is more, no-one has made an effort to update these concepts, so the model isn't up-to-date with actual system composition anymore.

This of course leads straight to model's entropy with all its consequences:

  • disappearance of the knowledge regarding how the system works
  • business logic chaotically smeared around, hence skyrocketing cost of the unit of change
  • unmovable pieces of code no-one wants to touch (ever-growing code base) that become focal points of technical debt

Fortunately there's always a sane way out: DO LISTEN to the feedback you get, BUT ...

  1. use it to identify the root causes, actual issues to address, ...
  2. shape your solutions based on the current state (model), in a conscious way, by using the expert technical knowledge only you (as a specialist have), so ...
  3. the model remains valid & sustainable long-term

In context of boxed catering it could mean either reasonable segmentation based on feedback or letting people have a limited choice among 2/3 options in few days advance (so provider can manage the supply while consumer can avoid particular ingredients).

In the world of building software it means that model is never stale. It fluctuates with evolving business reality & it should always reflect its particular context (/perspective) in a way that makes it possible to validate even before software change is done. Each commit w/o prior elaborate design effort is a potential trap, that can be very difficult to retreat from later on.

Pic: © Hetizia -