I had a really interesting discussion this morning with two bright people about their SOA journey. They are responsible in many ways for moving their rather massive company to SOA. So we chatted about all sorts of things and argued and disagreed and converged and disagreed again and got confused and converged again and diverged again … and then we realised 2 hours had gone by and we all had other things to do.
Driving back to my office, I was bothered by the fact that we were struggling with how to implement this thing called SOA. And I also have a feeling that there are more SOA failures than successes in the world. And all these contribute to experiential knowledge for the greater good of our geek community, blah, blah, blah.
But I did not have a clear cut solution, neither did they, neither does their vendor partner (for sure!), nor their management, nor anybody!
So, I am now convinced that a SOA implementation (not theory!) is a wicked problem. Wicked problems come from social sciences to describe an extremely difficult problem to solve, even impossible because of contradictory or ever-changing factors or incomplete requirements. Some characteristics of wicked problems include:
- every solution is a degree of goodness (or badness) but there is no distinctly right or wrong solution
- every solution is a one-shot solution because you don’t have room for trial and error
- consequently, every solution attempt counts immensely … positively or negatively
- there is no uber-test of a solution, so the proof is in the execution (my TDD blood froze about now 🙂 )
- each problem is symptom of another problem, indefinitely, i.e. there is no stop rule.
- stakeholders all hold different understandings of the domain
- there is no solution, but the problem is understood only after a solution has been crafted.
And last, but not least … maybe the most telling is
- Those that are held accountable for the consequences of the solution have no right to be wrong ! Ouch 🙂
I think that some architectural things feel like wicked problems. Read the work of Jeff Conklin and Robert Horn, two guys that spend a lot of time researching tools for solving social messes.
3 thoughts on “SOA is a wicked problem”
What makes a SOA implementation even more tricky is if IT management structures fail to grasp the severity of the impact that a SOA will have on their IT organisation.
It’s truly a wicked problem.
(More often than not, when considering the problem one doesn’t feel all too bright, perhaps more like a desperate sailor clinging to a plank on a moonless night, waving a lighter with the hope of attracting some form of assistance or at least someone who understands your plight).
Thanks for sharing your insights. 🙂
I think that perhaps another wicked problem should be the “quick win”. I think particularly of statements such as “don’t worry about the service versioning strategy, that can be done later when there is more time”.
I long for like minded people who appreciate the value of proper comprehensive planning. People who realise that the success of a project is not simply dependent on short-term perceived wins, but on a solid foundation over the long term.
Thanks for sharing your thoughts. 😉
Ouch, that must be really painful.
One thing that I’ve learned over and over again is that versioning, no matter if it’s a protocol, an api, a file format or any kind of machine readable format, is the first thing you want to have in place. Everything else can actually be done later, if, and only if, you have versioning working.
This strategy has saved me countless of times over the years and made it possible to do things incrementally even on protocol level when needed.