Whenever we as programmers design any application we tend to think like programmers and forget a few important things. I am not talking of very high end applications which go through a design phase for months. But I am talking about applications that are packaged in a few months time.
Why I wanted to write about this was 'cause I could see a marked difference the way programmers and non-programmers perceive things. Lets me take this CAPTCHA as an example. Whenever I type it down I would make sure I would match the case of the alphabet. This is normal practice if you've programmed in Java/C++ or for that matter most languages which are case sensitive. Recently I had a friend over who was trying to type in a CAPTCHA, and since he is not a programmer he simply typed in without thinking whether it was upper or lower case, and it worked. That is when I realized that had I designed such a system, at least in the very first version the CAPTCHA would be case sensitive, without realizing how much trouble a non programmer would have in understanding it.
The other place where I saw a marked difference the way we perceive things is in browsers. I have FireFox and IE on my system. Most of my friends who are programmers would automatically start FireFox, but the others will start IE no matter what I tell them. A programmer would like FireFox in lets say the second or the third time but with most non-programmers it takes a major effort to get them to use FireFox. And in most cases it becomes almost impossible to explain why they should use FireFox. But I guess thats another post. :)