Jeffrey Sun's CS476a Blog

CS476a - Reading Response 8

Posted at — Nov 9, 2020

What is the book Artful Design really about? At the concluding chapter (Chapter 8: Manifesto, a philosophy of artful design), the book finally revealed its moral teachings. Perhaps none summarized the guidance better than the principle on page 412, revised from Principle 1.15:

"Design not only from needs -- but from the values behind them. "

It is a powerful call to engineers, to proactively shape their design so it truly understands humans and does a greater good than merely fulfilling its functional specs. To achieve this, Ge observes that today’s engineers must strive to be a humanist-artist-engineer, who cares about the aesthetic dimension that underlies every design decision and is driven by the belief that design should bring morality into the technology, that design ought to make us better humans, to give us aesthetic experiences that are “worthy of survival”, and not just tools for survival alone.

As a soon-to-be software engineer, I have to say that I’m really grateful for this book, for it reshaped my thoughts on what is good engineering. When I build a computer system, I used to think the core virtues are that it is robust and correct. Now that I read this book, I begin to wonder why these functional goals are worthy of pursuit, if they’re not somehow ultimately connected to and addressing the human experience of a user. Of course, the system needs to be robust and correct to satisfy the requirements of many businesses that run critical operations on top of it, but equally importantly as we build and refine the system, is the question of how do we convey the guarantees to engineers and human users alike, to convince everyone we are prioritizing robustness and correctness not only as features but also values we uphold. Engineering ethics dictate that we obey the functional specs of robustness and correctness, but it says nothing about design choices that shapes so many other aspects of the system: is the error message clear, is the security guarantees made to be easily understood, and whenever there’s a tradeoff between efficiency and quality, which way we do we want to go.

Of course, different software systems will have different concerns and address these design decisions diffrently, but , now that I look at it, what is perhaps invariant is that good design takes inspiration from a deep understanding of the humanistic side of the problem. Only then can the engineer-designers be motivated to proactively shape the design in the direction of quality, good communication, and simplicity whenever possible to make it easy for humans to understand. And humans here include not just the engineer team, but the human users who seek guarantee from and put their trust on them. A good system should therefore always strive to be “humanly understandable” not just as a functional requirement but as an aesthetics dimension. Will the software world be a better place if we uphold “design that understands us” as a foundational goal, a humanistic constraint that sits above all technical constraints? Perhaps it’s a small step forward, but it might be a good start for us software engineers to break away from the “do not do evil” principle, and reach for higher, invisible needs in the hierarchy.

In any case, this series of reading responses has been a one hell of a fun journey. I sort of wish all my engineering friends could give this a read, so we can push engineering into the next generation of evolution — this really cannot wait. Well, at the very least, sitting back and doing nothing surely feels very unaesthetic by now. :)