V2.6 is the fourth attempt to fix a simple problem with the use of the network (sockets) interface. When I worked as a systems designer / consultant, I frequently used to see these exact symptoms in applications written by naive coders; to fail to fix it in four attempts is incompetence.
Here's my latest feedback to the Android development team (I stopped being nice to them after telling them how to fix it and being ignored - twice, six months and two versions apart!).
"V2.6 yet another failed attempt at a simple programming task; obviously not a clue how to use a sockets network interface.
still won't find the media server on waking from sleep 4 attempts to fix this simple problem and all failed - complete incompetence, especially as I've already told you what the fix is."
I'm working as a software designer / consultant as you did. Probably different area though - I mostly do webservice related stuff these days.
However I do not qualify myself 'incompetent', I do fail on fixing issues four attempts in a row too - I am having such a project this very day - I don't like this work and even if it is fixed brilliantly the customer will probably pay the bill but not even say 'thank you'. This always happens on the same kind of projects: big legacy, no documentation, limited understanding at the owner of the software - my customer.
I can imagine how this happened at Naim - but I don't have information so I'm purely speculating here. Naim had some streaming initiatives in the past - way before I discovered Naim and as far as I know, many of them are still supported. Guys actually coding things in Apps are relatively young and simply can't judge the total implication of a change. And that is difficult these days. The apps must support the same functionality on iOS and Android - and also the operation via Remote Control and the buttons on the Streamers should not be forgotten.
Such a complex application - I have designed one a few years ago but was discontinued since all financial information (4 billion usd on a yearly basis) was visible and this was a too big security thread - needs a strong architecture. This is relatively easy when a new initiative is started, but not when there is already a load of functionality / code in use. Separation of duties comes to my mind.
In these situations, a difficult transition must be made and this requires one (small, not large!) team, on one place. No offshoring.
By the way, I have insulted many people in the past by calling them 'incompetent' (I'm Dutch, have no problems to do so, pretty shameless). I would not do that to youngsters anymore since they really can't help. They have been asked to do something by some manager. On this manager we can apply the word 'incompetent'.