You know you're getting screwed by a vendor when
- You pay a six-figure amount for some "custom" COM objects that sit on top of their system.
- You get an API that looks basicly like this: public object[] DoStuff(string operationName, object[] args)
- You get "properties with exciting and unexpected side effects" in the COM API you paid through the nose for. Think "read a property and a whole bunch of other stuff gets reset". Now think how exciting this would be to debug, when adding a watch changes state.
And yet they defend their design in spite of it's obvious flaws and claim that the developers just "don't get it". I think I've come to expect a certain level of intellectual honesty when it comes to software development, and it's very disappointing when you don't see it.