> System design should be done with users, neit...
# of-end-user-programming
k
System design should be done with users, neither for nor by them.
Allan MacLean, Kathleen Carter, Lennart Lövstrand and Thomas P Moran, "User-tailorable systems: pressing the issues with buttons", CHI '90 (https://dl.acm.org/doi/10.1145/97243.97271) citing P. Ehn and M. Kyng, "The collective resource approach to systems design," 1987. Hat tip @Geoffrey Litt (https://twitter.com/geoffreylitt/status/1263296760547553281)
👍 6
e
As one of the leading curmudgeons in this group, i must protest. The theory that system design should be done with users has little empirical evidence to support it. The greatest products and designers in the history of design, such as Henry Dreyfuss, designed their products without users peering over his shoulder. He for sure tested the heck out of them to ensure ergonomic fit for 95% of the population, but to imagine that his greatest designs were the result of groupthink, focus groups, brainstorming sessions etc., is ridiculous. Design is a creative act, not the juggling of already existing things with the help of untrained masses of people who can't possibly understand the myriad tradeoffs and decisions involved in good design. Dreyfuss had a way of minimizing the controls and sculpting things so elegantly and perfectly fitting the human body that they endured for decades longer than competing designs. The best designs are invariably the work of a single person, or a single mind. Dieter Rams did great work, and of course the greatest designer in the history of the world mentioned above. Ferd. Porsche was very good at simplifying mechanical things and making a machine that transmitted feel to the driver. The automotive world has been blessed with many great designers. Some products are so well designed that it is almost impossible to improve them. The Swiss Army knife for example has barely changed in 100 years simply because improvement is hard when you are near the optimal point. I find the user tailorable aspects of Adobe's product line for example to be an example of poor design. You get palette-itis, and although customizable you shouldn't need to shuffle all the palettes around, the system should do it automatically to save the effort. In some sense, user tailorable is punting on some of the design work, and leaving that chore to the users. Take as a concrete example of how user tailoring goes awry, the Apple finder top bar customization controls. They have 100 options, but it is so confusing to use, that i would wager not 1 person in 1000 has ever customized their finder palette bar. So what was the point of all that work if nobody can handle the complexity of the "user tailorable" system?
🙂 2
c
The difference between 95% and 100% can be enormous because that's where all the bizzaro edge cases live. I remember reading a rather grim story from the developer of some family tree software; he'd received a bug report from a user who had a child with their own daughter (!!!). The software was assuming someone's father and maternal grandfather were distinct. The value of user-tailorable systems is really in the places where the designer never thought of. Had they thought of them, they might have easily solved them.
👍 1
There's also the possibility of users using your design "wrong". For example, we use Slack "wrong". Slack channels are meant to be single topic continuous conversations, we use them like sub-forums, and we use messages as topics, then use threads as conversations. I think this is why Slack took so long implementing this simple change that makes so much sense for me, and other users here - https://futureofcoding.slack.com/archives/CEXED56UR/p1591469282312100
d
Apparently many people use gitlab "wrong". If you fork a repo, it defaults all merge request to target the default branch of the original (upstream) repo. That's annoying when the upstream is just a template for many other similar (but separate) projects
d
Aren't we all trying to make systems that don't allow "wrong", but just make it easy to customise at the lowest point on the "X" axis of the graph linked to above?
.. and smoothing over any sharp upward slopes in that graph
.. thus removing glass ceilings
.. a continuum not a set of discrete jumps
.. So Edward's individuals with design genius would need to be geniuses at allowing every level from simple config via customisation up to full TC programming .. OK I'll stop now
p
tbh this discourse has evolved considerably since 1990. We got the configurability bug out of our systems, even if it’s not reflected in the UIs mentioned above.
the belief that “system design should be done with users” is just as worthy now as then. I’d say the center of mass now is more in design methodology, and especially concerned with equity
I’m in this Slack because I think changing the materials (such as programming languages) that form technical systems is also important, maybe necessary. This is the best concentration of energy I’ve found dedicated to that project.
🍰 1
This thread was about the techniques of software design, though; especially knowing how much to “form fit” an interface to our understanding of users’ needs, and in what ways we must consciously restrain ourselves from constraining practice. (Not that we ever have as much control as we imagine.) This is just a constant struggle and negotiation. From designers it takes experience, imagination, experimentation, alignment of incentives, self-knowledge, emotional intelligence, listening, accountability, data, trust, and the willingness to yield control, among other virtues. Conditions hard to create and preserve in our most powerful software firms.
Oh, sorry. The paper and Twitter thread were about tailorability. I think Edward confused tailorability per the paper with configurable interfaces.
e
I think everyone in the game industry acknowledges that Miyamoto is one of the greatest designers in software history. His products all have that very gentle ramp of difficulty. I think most of us making non-game products aspire to have this kind of gentle learning curve, but it is indeed very difficult and takes a lot of skill to make a product gradual. And @Peter Abrahamsen i agree wholeheartedly that better languages will make it much easier to make good software, and make the ramp for building these products a lot more gentle. I am appalled by how complex the current stack is for web and app development.