When we build anew we seek to provide straight-forward solutions that obfuscate complexity. We round the edges, smooth the sharp angles, and offer intuitive interfaces. We give our customers everything they want and need, however, they will love our products and solutions if, and only if, they aren't frustrated with the controls or the interaction, and they easily grasp the purpose. We know our work can, at times, be complicated — yet we do not need to expose these details to the end user. We celebrate the mantra, "expose your data not your database". Since expectations evolve, our work is often iterative. Yet software tends to bloat and every line of code we add creates a potential risk, adds to our liabilities, and pushes us away from simplicity. Often, as with software, less can be more. Some of our most important work is in refactoring, reducing, and replacing rather than in the heroics of rushing out a feature or implementing a work-around. We need to design clear, minimal APIs with the fewest methods and arguments, and architect modularity so we can make changes in isolation. Our default release principle should be: simple solutions are generally better than complicated changes.
You might also like...
All obstacles are not equal, and sometimes those obstacles are signposts that we are pursuing the wrong destination altogether.
Buzz Lightyear has been telling us all along, there is something beyond Infinity, it's the critical order of things, called the Omega.
Hysteresis alerting, where we delay alerting until a threshold is consistently passed, normalizes our reactions, allowing us to respond in a more constructive manner.
We are apt to follow a course of action we don't agree with due to our fear of acting contrary to what we perceive a group wants.