Habits of Expert Software Designers (2019)
Hi, my notes:<p>1) Experts involve the user.<p>Also, experts do not let the user design the software. The user will frequently want to tell you what the software "must" be doing. An expert will disregard this and will want to first understand the domain and then work with the user to find a good mapping to a useful interface.<p>2) Experts design elegant abstractions<p>I don't agree on this. Oftentimes, I have seen "experts" use solutions because they seemed elegant, intelligent, "nifty". I did that myself.<p>An expert will design <i>simple</i> abstractions that let the job done with little fuss. The software needs to be as simple as possible but not simpler than is needed.<p>Replace "elegant" with "simple", and it sounds about right.<p>An expert software looks dumb and simple, not necessarily super elegant and intelligent. Also, bad software can look dumb and simple.<p>3) Experts focus on the essence<p>Experts <i>start</i> by focusing on the essence. Then verify by testing how the distilled essence is useful at solving entirety of the problem.