But can we learn from others mistakes? Absolutely. Let me give you some examples.
Adobe Acrobat takes forever to load every single piece of functionality known to man, and then let's you view the one document that you wanted to see. It takes longer for Acrobat to load than it takes me to get the information from the file I was looking for. And apparently it is so buggy that you get an update every single day. Now, this is all historical, and may have changed because it was these issues that led me to remove all things Adobe from my system. Yes, I have been Adobe free since '03!
Lessons to be learned? First, the initial response time sets the tone for your interactions with users. Look at you applications. Opening a document shouldn't take minutes. Do you have a massive PostQueryOpen that initializes every possible variable? Try initializing them just before they are used. Same thing for your action buttons - do they do a lot of initialization before showing a dialog box? Users don't notice or care about small delays after they answer the dialog, because the system is now doing something they asked it to do. Just let them tell it first.
Second lesson, and I see this in Notes shops everywhere, just because you can make a minor change very rapidly doesn't mean you should. Users don't really like constant changes. They would much rather have a set expectation when changes are going to be made available. Every Monday is probably a bit excessive, but you need to balance the expectations for when I can get this fixed versus the rapid application development that Notes is famous for.
Here is another set of mistakes that we all should learn from. I have Verizon for my cell phone, internet, cable, and home phone. Every single interaction I have with their applications is PAINFUL! They have an app for my phone that let's me control my DVR's. When I start this app, like Adobe, the first thing it does is load up the TV schedule. Why on earth would I want to see the TV schedule on my phone? I can't watch TV from there, so why would that be the first thing that they do? What I do is click on the DVR tab. Every time. Is that so hard to remember? Use a cookie, or a per user profile document. I talked about this before - it is real easy to track what users do to identify commonly used features, and features that are not even used. The gamification aspect comes from rewarding them for reaching milestones, like closing their 100th To Do.
Their web experience is just as painful. After I sign into their site, they pop up a message box trying to get me to buy FIOS. I already HAVE FIOS and you should know this because I signed in! Don't ask your users for information you should already have. The misery continues when I go to view my account. The first thing I get is spinning wheel, spinning wheel, spinning wheel and I finally get entertainment news! I pity the fool who gets his news from Verizon's web page! They may have that set as their home page, but I only go to that site when I am forced to.
The lesson here is you need to know what your users are doing. This is a combination of tracking their activities and plain old walking around and watch them use you application. When you see them struggle to perform a task or even find a function, you know you have some work to do to improve that. I watched a user do something to 10 documents, and it took forever. I knew that the operation was only changing one field, so it shouldn't have taken that long. When I looked at the code, I discovered several thing. First, it was intentionally designed to only allow a maximum of 10 documents at a time. And guess what? This function was rarely used because it was so painful to use. There were no consequences to not performing the function, and it was hard to use. The other thing I found is that the action had a ComputeWithForm on a very complex form. Come on people - only one field was changed. We need to help our users be productive, and stop stifling them with arbitrary processes.
To finish up, I generally don't generalize. And I know Verizon is a large company, but they seem to have a systemic lack of knowledge about what their users are doing. I do know that we were talking to one division within Verizon to get them to implement source code control. The developers response was it takes too many clicks! And that would get in the way of their rapid application deployments. Just sayin, schedule your updates.