Single-Purpose Concepts, Single-Concept Purposes
May 4, 2016: Daniel Jackson delivering keynote address at the SATURN 2016 conference in San Diego.

Single-Purpose Concepts, Single-Concept Purposes

Have you ever encountered a confusing computer program?

Just to take one example of many, the following question appeared on Quora:

Notice the implied confidence that the lost files can even be recovered, much less quickly.

How does someone accidentally delete thousands of files?

With Dropbox, deleting a file in a shared folder is different from deleting a shared folder. Deleting a shared folder is interpreted as “leaving the folder.” The files in the shared folder are unaffected. However deleting a file in a shared folder makes the file deleted for everybody who is sharing that folder.

This confuses a lot of people.

This is just one example selected by Daniel Jackson, Professor of Computer Science at MIT, in his keynote address, “Rethinking Software Design,” to an audience of professional software architects attending the SATURN 2016 Conference.

He set out to present a set of design principles that should be incorporated into the design process.

This Dropbox problem is a good example because it isn’t just that one user on Quora who has this problem. One of Prof. Jackson’s graduate students, Kelly Zhang surveyed fellow MIT Dropbox users and presented them with the scenario of deleting a share in Dropbox and asked the respondents to predict what the expected outcome will be. Will the original file be deleted? The results showed that many users, even those who identified themselves as having good technical knowledge, could not answer the question correctly. In fact, for some of the use cases, respondents were more wrong than if they had simply guessed randomly (50% chance of guessing correctly).

What is going on here? Is there a general lesson to be learned about how apps should be designed?

Jackson put forth the principle that when you get down to it, an app is about concepts

In the case of this Dropbox confusion, there are two distinct concepts operating. Dropbox provides one operation, delete, whose operating principle depends on what kind of shared thing it is operating on.

Even after the explanation, many are still confused, and that is exactly the problem. The delete function serves two different purposes, depending on which kind of shared thing is involved. Yet, the delete process looks and behaves exactly the same in both cases.

Jackson’s insight about proper design is that every operation in an app (such as the delete operation in Dropbox) is for the fulfillment of a purpose (such as, I don’t need access to your files anymore). The purposes likewise motivate the concepts.

The delete operation in Dropbox is confusing is because it mixes more than one concept and purpose. Jackson proposes that the fundamental principle for good design is:

Therefore, in an ideal application, there is a set of purposes, where each purpose is fulfilled by a single concept, and each concept is motivated by a single purpose.

If the purposes and concepts are mismatched, the app is harder to use. Mismatches can happen when either a purpose or concept is left hanging without a connection, or when there are multiple conflicting connections.

An unfulfilled purpose exists when there is something you want to do, but no concept available that exactly fulfills it. The opposite, the unmotivated concept, is an idea in an app that doesn’t seem to have any use.

The Dropbox delete issue is an example of an overloaded concept. Two purposes are represented by the same concept, which leads to confusion because they behave differently.

An example of a redundant concept is Gmail labels and categories. Both of these concepts exist for the same purpose of helping to classify messages, yet they don’t interoperate.

Getting all the fine points of software design right can take an almost obsessive attention to detail. This post just scratches the surface of the contents of Prof. Jackson’s address.The diagrams in this article are clipped from Prof. Jackson's slides, which are available here. Until the video is made available online, you can view an earlier version

Once again, MJ Broadbent created amazing sketchnotes based on the talk:

****

Please join the conversation...

What do you think? Comment below.

Thanks for reading. Please like and share. You can find my previous LinkedIn articles here (https://www.dhirubhai.net/today/author/davidpmax).

Cover art: May 4, 2016: Daniel Jackson delivering keynote address at the SATURN 2016 conference in San Diego.

Follow conference activities on Twitter @SATURN_News and #SATURN16

Join the SATURN group on LinkedIn.

Elwood Billshot

Corporate Consultant

8 年

Remember.....you're not dealing with a box.

回复

要查看或添加评论,请登录

David Max的更多文章

  • Said The Engineer, “Let Me Tell You a Story…”

    Said The Engineer, “Let Me Tell You a Story…”

    Have you ever found yourself reading a book, sitting cozy on the couch, only to look up after who-knows-how-long and…

    5 条评论
  • Slow Motion Change in Engineering Education

    Slow Motion Change in Engineering Education

    I wondered in my previous post, why have I met so many engineers who started out thinking that engineering wasn’t for…

    3 条评论
  • How Do You Know If You’re an Engineer?

    How Do You Know If You’re an Engineer?

    I’m an engineer, and I’ve met a lot of them. One thing I’ve noticed is that many of the engineers I know started out…

    6 条评论
  • What Makes a Good Online Group?

    What Makes a Good Online Group?

    Online groups have been around for longer than web browsers. If you're like most people reading this, you've visited or…

  • Embedding Content in LinkedIn Posts Using oEmbed

    Embedding Content in LinkedIn Posts Using oEmbed

    One of the more expressive features of LinkedIn’s Publishing Platform is the ability to embed content from another site…

    74 条评论
  • Coders Aren’t Assembly Line Workers

    Coders Aren’t Assembly Line Workers

    Clive Thompson wrote a thought-provoking piece in Wired, The Next Big Blue Collar Job is Coding. The usual definition…

    463 条评论
  • DON’T Follow Your Passion

    DON’T Follow Your Passion

    One of the most typical pieces of advice you’re likely to get for how to find a job that will bring you success and…

    303 条评论
  • The Job You Already Have Could Be The Job You Want (With a Few Tweaks)

    The Job You Already Have Could Be The Job You Want (With a Few Tweaks)

    I was sitting on a bus chatting with a couple. The husband is a software engineer like me, and his wife is a nurse who…

    64 条评论
  • What is Software Craftsmanship?

    What is Software Craftsmanship?

    I first started hearing about software craftsmanship when I started working at LinkedIn. It wasn’t a familiar term to…

    27 条评论
  • Software Architecture Tips from the Man Building a Real HAL 9000

    Software Architecture Tips from the Man Building a Real HAL 9000

    Grady Booch, Chief Scientist for Software Engineering and for Watson/M at IBM Research, addressed the audience of…

    7 条评论

社区洞察

其他会员也浏览了