I know BizTalk and would not hesistate to use it.
As it seems, a lot of problems in software domain stem from a single cause - we don't truly understand a lot of things and fail to acknowledge that. This leads to complex designs and half-baked solutions.
How many times have you encountered a marvelous new technology that has promised you better life and all the riches in this world? How many times, have you discarded this technology after a few days or years of trying? What about Aspect Oriented Programming, Hibernate or tools that calculate code metrics?
I believe, this highlights one of the most essential problems we have in the development today: we try to substitute true understanding of something with smart technologies and tools that promise to take care of us and our tasks at hand. In fact, they can, but their applicability is more limited than it is advertised. And they can lead you into really dark valleys, while trying to hide some of their inherent issues. Do these sound familiar to you: SQL upgrade scripts, WCF configuration code, NServiceBus endpoint management or making your favorite IoC container work with some framework.
If you want decent results a tool can help. However, if you want to push your limits beyond the limitations of your tools and technologies - go get your hands dirty.
What I'm trying to encourage you to do - to dare to try and get rid of some tech or tool in your next project (whether it is work or a hobby). It could be something like IoC Container, service bus framework, ORM tool or entire storage engine stack.
It certainly would hurt, just like any exercise does. But you might also find some deeper understanding there. The one that would let you push your limits beyond the limitations of these tools and technologies.