The book “Time enough for love” by Heinlein has a section about a man who was too lazy to work hard, so he tried to think about every task he had and make it as easier as possible. As strange as it seems, this is kind of a role model for the way I try to approach design.
The slogan “Just do it” has an appeal for using the first idea you have. The only problem is that the first idea or design might not be most effective or elegant. Unfortunately, the first idea, without research, might lead to a brute force approach that although might provide a solution is ineffective and inelegant. The act of design, on top of allowing better communication, can be used for constructive laziness: to spend some time researching, testing, trying to isolate the real task and optimize it.
Most coders I know don’t like to work hard, but there is a difference between working hard for coding and working hard before, in the design phase. The design phase can be hard work, where the design is tested several times, iterated, shared, commented and stripped. The goal is to find the weak spots of the design and understand the quality attributes.
The relative simplicity and elegance is reflected in the quality attributes of the solution, as exhibited in the documentation and presentation of the design. Same as code reflects its elegance while read the same is relevant for design but more explicitly. The elegance of the design can be seen in the separation of layers, the encapsulation of internal attributes, symmetry of connections and balance between conflicting requirements.
True elegance comes when the constructive laziness becomes a state of mind for selecting how to spend the time and effort. When the design reflects creativity, elegance, balance of selections and real effort then one feels a sense of completion and love of the profession.
If you read this far, you should follow me on twitter here.
Incoming search terms:
- constructive laziness