I have always admired Google :). The company delivers kick-ass technology, but it also delivers a kick-ass experience. Take Google Docs. Instant changes, no "Oh crap, I forgot to Ctrl-S, I am screwed." I'm typing this in a Google doc. While it's not the only reason (or even the main reason), I do believe that an important reason for Google's quality is that Googlers use their own product, and they'd never let an embarrassment go out.
Contrast this with enterprise software. I have built database technologies for decades--yet, for a long time, I never used it (I mean really used it, as opposed to testing or demoing it). This is true for tons of enterprise software technologies. The developers who build it and the developers who use it are not one and the same.
What about open source software like Cassandra? Isn't it built out of needs, and aren't the developers who build it the developers who use it? Only partially. Apps use databases. Database developers build databases, whether it's DB2, or Cassandra. Neat architecture, pretty bad user experience.
Technologies that work well are technologies that are built and used by the same developers. No ifs, ands, or buts about it.
That brings us to what I am doing now. As CTO of Apigee, the API company, I am immersed in microservices and API management. There are some things our developers will never have a good feel for. SAML 2.0 for connecting to SAP R/3? How could a developer in a 300-person startup have that intuition?
We have to call upon general product management, security, and enterprise software knowledge to build something that we hope is functional and usable, and then have a good feedback loop. The developer building the technology and the developer using the technology are different.
But microservices and APIs are different. We produce software for other folks to deploy APIs on. How do we do it? With small teams that aspire to the right set of microservices principles. With clean APIs. Each service needs to scale up and down.
The deployment of these services can have errors, so we have to implement the right blue-green deployment infrastructure. Teams are independent, so they need clean APIs, with documentation as contracts between them. Our developers employ microservices and API best practices. The software they build is a reflection of what they need, day in and day out.
Whenever you evaluate software, ask the vendor: "Do your developers use it?" It will help you make better decisions.