Tim Sneath says:
One of the greatest drawbacks of AJAX is that it's simply too hard to code. The very fact that I can count the number of truly exploitative public AJAX applications on the fingers of one hand is an indication of that. [via Tim Sneath]
Twaddle. Javascript DOM programming is some of the easiest there is - compare attaching an event handler to a button, or a paragraph of text with what you would have to do in WinForms. Where AJAX is too hard is when you try and use it with ASP.NET. It has always amazed me that given that MS implemented all this wonderful stuff in IE and had XMLHttp of their own invention (and originally had the Java applet based RPC) that ASP.NET 1 made no use of any of this stuff at all and used a 'whole page refresh model'. It is one of the reasons I have stayed away from it, getting Ajax like behaviour into ASP.NET 1 just didn't fit the model that well. This is addressed in ASP.NET 2 and with Atlas they are finally getting round to some serious development effort in this area again.
What is still missing (from MS) is a really good IDE + Debugging model (it is implied part of Atlas' job is to address this) - I still use a text editor to write fairly complex apps and I am not a rocket scientist by any means, not a particularly talented programmer and not obsessed by the niceties of all your tags in lower case. But, I do use Zeepe which provides a great framework for doing a lot of standard UI gunk, saving the huge amounts of code that would otherwise lead to massive amounts of code.