I programmed all my adult life. It never ceases to amaze me how the average programmer is ignorant. The current example: two factor authentication. I am going to send you a text message to your phone. What if your phone can't receive text messages? You know, like Skype, land lines, etc.? Duh.
Fair winds and following seas :)