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...
In the middle ground between a beginner and a master lies competence. Here the merely proficient toil, creating "good enough" solutions, the competency trap.
We seek to incorporate mental models of the world that differ from ours, building a toolkit to improve the quality of our outcomes.
A reverse salient, a task that causes a project pace to slow, is a gift that can lead to great value creation.
The backcasting technique can overcome the dangers of optimism bias, which shields us from undesirable information — even when that information is vital.