In a wonderful conversation about Internationalization on the Ruby Rogues podcast, I discovered a wealth of information about things that we programmers assume that… just aren’t so.
Falsehoods programmers believe about…
- Names (for a really mind bending set of examples, read the comments for that article)
- Time, Time again and Time Zones
- … and more
- … and yet more
Ok, so mind blown. But now what do I do with this information? Do I spend 2 months on my next project taking care of all the edge cases? I’d be fired, rightly so.
The key lesson for me here was to remember who your users are, and carefully think about what assumptions you’re making about them based on your world view. That is definitely an exercise worth going through at the beginning of every. single. project.
A common example is the Browser Compatibility question: “is this app going to be used on mobile devices?” and “does this app need to run on IE 8 or below?” Someone working at Twitter or Facebook already knows the answer to that; but for an enterprise application it’s a fair and important question.
The world is complex. We all need to ignore some of its complexity in order to survive and function. But ignoring the wrong thing, as a systems developer, can lead to embarassing failure. Know your audience.