I already talked briefly about design in my “tree of concepts” as the thing that allows us to answer a simple question of what we should be doing. However, to leave it at that is a cop-out — the design is by far the hardest part of the puzzle. I continually see people come up with poor designs, which cause lots of problems (which those people fail to attribute to poor design, but instead, blame on poor inputs). For example, if you are a CEO of a company and your design is to hire people who will do the right thing based on some simple guidelines, and if the people keep failing, do you keep hiring hoping for the right person to show up? Or do you rethink your design, admitting a possibility that such a design is not likely to succeed?
Good design is an art and so there is no step-by-step guide to it. There are some principles of good designs — statements that usually hold true that provide you with both the constraints and the scaffolding to bootstrap the design. I listed a few of them last time — but here is a little more thought-out list (note how these principles connect with each other):
- Good design is natural — it feels right. Perhaps it actually borrows from nature
- Good design makes few assumptions — and those it does make are worth calling out. Most designs fail because of an assumption that wasn’t, or ceased to be true. It’s important to understand the magnitude (the number of degrees of freedom) of the assumption — for example, a design relying on people to do the right thing has a relatively significant assumption built into it
- Good design is consistent — once you list the assumptions, you should make sure they don’t contradict one another.
- Good design is simple — There is a tendency for people to fix designs by tacking on exceptions. This is more likely to introduce inconsistencies
- Good design is robust and forgiving — a robust design is not likely to cause problems that require you to overcomplicate it. Remember that humans err, things always go wrong. If your design is relatively slow to change, those unexpected events may cause a lot of problems
- Good design is agile — you won’t design it right the first time, so build mechanisms in for improvement (for example, an evolutionary one — consider several options and choose those that work better over time). However, don’t violate any of the above principles (often people take a lazy approach to design because they think they can change it any time they want. That does not produce good designs)




elevenseconds.com
blog.elevenseconds is powered by