For another tangent that I've always had interest in...designing user experiences. This is a great
post on the dangers of complexity in your application designs. The thing to beware of, don't mistake simple design with brain dead design. I see this happening more and more, especially with internet apps and the crutch of "we can release it ad-hoc as new features are completed."
Consider the moaning that gets posted in Facebook status messages when they make seemingly random UX changes. Even the slightest, most subtle change is noticed with resounding hew and cry. Of course Facebook can regress and it's a free service anyway. So all those Facebook users out there feeling like guinea pigs might as well get used to it.
But the lesson for your enterprise-minded and software-for-sale developers there are some good lessons in this article.
Truly exceptional experiences are crafted when complexity is removed whilst the level of power and control is maintained.
Not an easy challenge and requires, dare I say it, planning. But sometimes the best planning isn't enough. You need to assess design all along the development process. Not always easiest on the developers but the best way to ensure adoption and user's preference for your product.