The streamlined AMD loading makes it really easy to write modularized, structured projects and build it into release bundles. The store concept and compliant widgets are excellent, and while admittedly much of the dojox stuff is fragile, the dijits in general are very well made. The charting and drawing modules, with fallbacks (SVG, canvas, VML, Silverlight) have also been great to work with in my experience.
Can you give some examples of things you find unintuitive or confusing? What makes it more difficult to debug than other Javascript libraries? How do you find the documentation lacking? (The latter has become quite a bit better in recent years, you may want to look at it again if you haven't in a while).
I can understand that dojo may seem daunting at first. After all, something as simple as
$('#foo').html('<div>foo</div>').css(...).click(function(....
in jquery, takes a fair bit more effort in dojo. This, and I suspect, quite a few of the other grievances you have, stem from dojo's insistence on modularization. This seems unnecessary at first, but in my experience, pays off as your code base grows.My recommendation is to seriously consider it for any complex javascript application.
After using dojo for at least one big project I am have a different experience. For the first time I started thinking about software engineering principles when I used dojo in client side. All my previous projects were in jquery and while they work, jquery has not helped me one bit in managing complexity.
I have written my experience about how to use dojo right. Do not use too much of dojo, don't use dojo for page layout, do not use dijits that may not be as well tested as the core.
I would highly recommend you give the tutorial a try.
It's interesting you mention complexity. When you're developing a very rich client-side complex system, at what point do you stop and realize "maybe I'm taking this too far"? I'm beginning to notice that people are developing web applications the same way we did when we were writing desktop applications about 15 years ago. I personally think that we should absolutely not be trying to rewrite desktop applications for the web.
Once the web application gets so complex that you need to reach for Dojo is when I think the application should be rethought and rewritten from scratch.
Dojo will unnecessarily increase the development time of your application to a factor of 4. My recommendation is to avoid it at all costs.