Don't invent unnecessary requirements

By Lawrence Kesteloot

When designing a system, write down the requirements and brutally inspect each one. Make sure each one is necessary. If you find yourself designing for requirements that aren’t on that list, add them to the list and verify with others that they’re really necessary. It’s too easy to implicitly and silently assume requirements that no one has asked for and no one needs, and every requirement boxes you in when devising solutions or pushes you to unnecessarily complex solutions.

Read here.