It is a few day I have this thought in and out my head. There is no particular fact that triggered this off, I think it’s just some random observations.We programmers like computers and software. That’s obvious – we find them entertaining, funny, sometimes even a sort of lifestyle. Wouldn’t it be the case we would have chosen something different, more economical rewarding (such as the plumber), more socially oriented (e.g. the plumber) or even more funny (water’n’pipes are fun, aren’t they?).
I find than more than often our programs have features and behaviors just to amuse the other programmers or even ourselves, forgetting that real users, those who will use our program to do some actual work, aren’t so fond of computers beside having some actual work to do.
I think we should enforce a new paradigm for program development: the computer is actually an obstacle, a barrier between the user and her goal. The software has to clean the road and keep off the way.
Just ask yourself if that “Error Blah blah” dialog box you are coding is something that helps the user to reach his goal and perform his task, or is just something that will annoy him. Is really a user fault if the file has the wrong name? Are we really sure that the user has to know what a file is?
For another example consider the need of a user to deliver an amount of data (files) to another user. The obvious choice, since everyone has an email account, is to use it. That is the need for the user and the clear, logical solution she sees.
So, the size limit for attachments is just an obstacle to the activity she has to perform. But the real solution is not to grow the limit, but to take the limit off. If the mail protocol is not suitable for bulk transfers, then the software has to use other means. Why can’t it arrange an ftp transfer? Sure it’s not as easy as I put it, but it definitively can be done.
On the same issue, there are users that fall in love with technology and forget any other sensible way of doing things. So their activities could become extremely time wasting. I needed a reference on how to attach cables to an electronic board for testing. I looked in the usual repository just to find every kind of documentation but the one I was looking for. I asked the guy who was supposed to provide that kind of information and he told me that he was unable to provide the board layout because the software is not yet able to do it and that we need another module for … and so on. I took paper and pen and sketched the layout on a sheet of paper, then scanned it and put on-line on the server. It took me about 20 minutes because I had to look up the schematics. The document I produced is not polished, but… who cares?