Well... I've been given this subject some thought. As a programmer do you feel that sometimes we tend to forget WHY we make software?
I mean, it's fun to program. If you are like me you take every single shot you can at trying out new technologies and new approaches to whatever your current task is. But sometimes don't we forget that the most important task we have is to improve the quality of the life of the people that use our software making them more productive and less prone to errors?
Just take a look at these examples:
- http://stackoverflow.com/questions/416779/when-the-client-asks-for-something-ludicrous-and-insists#416826
Here the programmer is trying to protect his client from himself, quite a common thing. But let's face it, if a client wants the software to work in a particular way, even if you think it's the worst decision possible, should you do it? My answer is YES. You may be right, but don't forget that he is the one that will use your software every single day, so it must be built in a way that he understands and desires. It may not be the optimal way to do it, but it should be in the best way possible to meet his expectations.
- http://stackoverflow.com/questions/425121/methods-of-deliverying-information-to-customers#425139
I think this one is an interesting case. Software is being built to improve work efficiency for a shipping company. And at first sight it seems that everyone is being listened to except the people that will have to work with the software. Bear in mind that the leaders of that company may know HOW they want to work and what they are aiming at with this software, but they will NOT use the software on a daily basis. In my opinion the most qualified people to answer the question at this post would be the shipping workers...
- http://stackoverflow.com/questions/458443/captchas-to-force-user-interaction#458503
This is and example where good intentions can ruin a perfectly good working software. It appears that the management thinks that their employees are slacking and not reading their documents before they sign them in. So their solution is to place an additional click to prevent them from immediately submit the documents. Will this work? I guess not. If they don't want to do their jobs properly, giving them extra work will surely not make them better workers.
Let's face it, we make software for real life PEOPLE. Our success really depends on them. Software should perform FAST, be SIMPLE to use and INTUITIVE. When we develop software our main concern should be "How can i make this easier for the user", and above all "How can i keep up to their expectations".
Don't forget we are users too. Just think a moment about what would your reactions be in these situations (from the users' perspective). How would you feel if:
- You had to change to a different programming language because your boss just says there is a better one?
- What if your source safe provider said that from now on you would have to fill in a captcha for each check-in you made?
At the end of the day, it's the people that use your software that ensure your paycheck. They should be happy with it, so my suggestion is to keep that in mind and hear them out. Who knows what we might learn?
Work with people, not against them.