Did you read 'Why Software Sucks ... And What You Can Do About It' by D. Platt? If your answer is "No", you should!
The rule that summarizes Platt's book is 'Know thy user for he is not thee'. You are not your user, therefore you can't think the way your user does and you can't make decision for your user. Listen to what your user has to tell you and create software (tools) that make the life of your user easier. Not harder.
So... if I want to create usable software I have to listen to my user. That's at least what I thought. That is, until I came across this article 'First Rule of Usability? Don't Listen to Users' by J. Nielsen. Nielsen tells us that we shouldn't listen to our users, but just watch what our users do. There's an interesting take. According to Nielsen users don't rationally know the best way they perform their work, at least they can't explain it. There is a difference in what a user thinks and does.
I want to create software that is usable... Should I or shouldn't I listen? The truth, as always, is more subtle. Platt and Nielsen are both right. The difference between the two is that Platt is mostly talking about functionality and Nielsen about user-interface design. TO create usable software we have to listen (not just listen but discuss!) to our users and study the way they work. Does the software fit the work-process? Does it fit the way a user uses the computer or the network-infrastructure? I think it is impossible to get this one right at the first attempt. It is important to keep discussing the software with the ones that will eventually use it. Keep in mind that it is often difficult for users to talk about functionality. At first, discuss the way they work. Base your first design or prototype on this and then discuss software functionality. This way it is easier for you and your user to talk on the same level.