AJAX - Asynchronous JavaScript and XML - Promises to play a large role in the websites of the future.  Although AJAX technologies have been around for quite some time, network latency has only recently gotten to the point where really high quality AJAX web applications make sense for the masses.

Being able to product great AJAX applications requires knowledge in many different areas of web development.  At a very minimum, you need to know DHTML, JavaScript, and XML.  This won't do much for you if you don't also know how to do server-side processing with a web scripting language.  You should also be familiar with creating Web Services and accessing databases.

One of the most difficult things about AJAX programming is comming up with uses for AJAX that aren't just for the novelty of it or "AJAX for the Sake of AJAX".  Certainly there is quite a bit of potential for increased usability, but in the next year or so you will see many sites pop-up that have become very unfriendly because the designer decided to use AJAX.

Another difficulty of AJAX programming is maintaining state.  On the web, a user can bookmark a page and always come back to the same content.  When AJAX, there is no way to bookmark the current state of the page, although workarounds are being created everyday.  Really Simple History (RSH) has developed a framework to address this problem, but you will need to put some thought into it's implementation