I’ve been developing software for a long time, by anyone’s count: over 25 years, about 15 or so of that “professionally” (meaning 15 years or so I’ve been getting paid to pretend I know what I’m doing). I’ve been doing web development specifically for something like 10 or so of those years. I can say, with all honesty, that I was ahead of the curve a number of times. I was writing what we all now call RIAs back around 1998 (two of the apps I wrote in that time frame are still in production, amazingly). I was one of those people who invented Ajax way back then, but didn’t think it was anything special and didn’t come up with a cute name for it, and hence I am not the one rich and famous for coining an acronym!
None of this is especially important, and I’m not even trying to impress you by saying any of it. I’m just setting the foundation for being able to honestly say this: I’ve seen a lot. I’ve done a lot of client-side development. I’ve seen the evolution from doing absolutely everything yourself, dealing with all the complexities and cross-browser issues, to where we are today, where you basically don’t write anything from scratch anymore, you find a good library (or combination of libraries) and proceed from there. This is the same evolution that every other programming language and/or platform has taken; it’s just the natural way of things. People over time figure out what works, encapsulate it in some generic, reusable code (a library), and everyone is the better for their efforts.
I’ve used a large number of libraries over the years too. Some have been very good; some have been very bad; some, of course, were somewhere in the middle. One of the biggest today also happens to be one of the best ever: Dojo.
However, Dojo in a way suffers from its own goodness: it’s a bit difficult to wrap your brain around. It’s capable of doing so much that understanding what it can do, and understanding how to use it, can be a challenge.