Open Source .Net Development
Web Services Security
UI development is probably the most challenging aspect of programming I have run into yet. Yes, creating a useful Webservice or middle tier data api gives a great feeling of accomplishment. I personally find a framework like Apache’s Avalon or Microsoft’s Application Blocks to be incredibly useful. However, to a user the only thing that matters is how easy and intuitive the UI is to use. The look and feel of a program certainly improves it in the perspective of the user, unfortunately, what comprises a good UI is as individual as the users themselves. But nothing compares to the experience of creating a UI that you and all your experimental users like. I find that most people can not explain how to create a good UI, “It just comes with experience.” But there are a lot of examples to tell you what NOT to do in a UI. There are a few good organizations like Usability Net and User Interface Engineering that I have found useful. IBM has some good stuff on their site about user design. I especially like their User’s Bill of Rights and the good definition of a Wizard which is probably the most misused user interface of all time.
As C# and the CLI become more stable on various operating systems, the question now arises about Cross Platform UIs. I personally believe that currently it is subliminally too obvious to users which windowing toolkit was used to create a given application. Although I must admit that the toolkits are becoming more similar in look and feel so that Windows, MAC and *nix users will soon be able to have a consistent UI.