When I say web programming here, I’m thinking of mid-to-large scale application development in a language like Java, not relatively small-scale applications in PHP - which personally I find more fun probably because the size of the applications I would use PHP for means that it’s easier to keep the whole project in mind and also because PHP scripting has a shorter write-test-debug cycle than Java.
Last year I spent a lot of time working on a Java-based web application using the Spring Framework, Hibernate and Jakarta Struts. What a lot of *no fun* that was. Spring and Hibernate are quite straightforward - my problem is with writing the user interface for web applications - it just seems so much harder than it should be for relatively little in return. I spent weeks building a user interface that I think is inferior to something I could have built in a day or two using Swing, and a half-decent Swing GUI editor.
Now don’t get me wrong Struts is much better than writing servlets by hand and the Nitrox plug-in for eclipse makes things easier still. However, the whole experience is still laborious compared to building a Swing application and still results in an inferior user experience. One issue is simply the amount of classes and XML configuration glue required to perform relatively simply actions. Then there is the conversion between the application’s internal classes and the Struts ActionForms (although BeanUtils can make this a whole lot easier). Even after all this work the user has to wait for page refreshes after performing most actions.
Now, we have AJAX which should improve the user experience if done well (check out Google Maps for an example how AJAX can help create a great user experience) but probably does not lighten the programmer’s load (I plan to build a couple of sites using AJAX to get a feel for this).
Now web applications have a lot of advantages (no install, no upgrade, can work anywhere if does not rely on proprietary extensions) and for some applications are definitely the way to go but I can’t help feeling that web application development environments lag far behind the desktop and that what we need is a merging of desktop and web programming. Maybe Microsoft’s XAML and Mozilla’s XUL are the way forward.