# The Anti-Magic Principle

**URL:** https://forum.beeminder.com/t/the-anti-magic-principle/6308
**Category:** Akrasia
**Created:** [February 5, 2020, 6:03am UTC](https://forum.beeminder.com/t/the-anti-magic-principle/6308 "2020-02-05T06:03:40Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![dreev](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/dreev/32/4311_2.png) [@dreev](https://forum.beeminder.com/u/dreev)
#### Post date: [February 5, 2020, 6:03am UTC](https://forum.beeminder.com/t/the-anti-magic-principle/6308/1 "2020-02-05T06:03:40Z")

</div>

I’m worried this will sound banal but it’s been a helpful guiding principle for us and we’ve caused ourselves a lot of grief by violating it in the past, before we got our heads around it. So if it sounds banal I bet I’m either conveying it poorly or you’ve already internalized it!

The Anti-Magic Principle is that software shouldn’t do anything seemingly magical. It should be as simple and transparent and predictable and convention-following as possible. It can apply to big things like [the auto-widening yellow brick road](http://blog.beeminder.com/autowide), and to little things like suppressing the display of a checkbox in the UI when it’s not applicable. When a user remembers that a checkbox used to be somewhere and now it’s not, that’s confusing and frustrating. Better to gray something out than to have it magically disappear.

Here are some more examples:

1. It turned out to be a bad idea to let the default date for the add-data form magically update to the new day when the deadline hit.
2. Having data magically know to display in HH:MM because you used the string “hours” as your goal units: bad idea.
3. Trying to intelligently decide whether to have the road dial expanded or collapsed in an attempt to avoid confusing newbees. (See [an example of this causing confusion](https://forum.beeminder.com/t/new-beeminder-coming-from-pact/3285/11) though in the meantime we found a compromise that seems ok.)
4. The odometer reset feature probably never should’ve been allowed by the Anti-Magic Principle but it is admittedly [very powerful and useful](https://forum.beeminder.com/t/restarting-odometer-to-non-zero-value/299/17) so maybe it’s an exception.
5. We used to magically suppress reminders if you’d already entered data for that day. That made it seem like the bot was randomly flaking out.
6. Self-destructing pessimistic presumptive reports (PPRs) is another violation that I think I’m ok with.

---

<div class="post-metadata">

### Author: ![mufflon](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/mufflon/32/2394_2.png) [@mufflon](https://forum.beeminder.com/u/mufflon)
#### Post date: [February 5, 2020, 6:58am UTC](https://forum.beeminder.com/t/the-anti-magic-principle/6308/2 "2020-02-05T06:58:49Z")

</div>

“Any sufficiently sophisticated technology is indistinguishable from magic to the user” - some dude somewhere

I get the consistency thing. But there’s nothing like “it does that?! Wow”. I’d love beeminder to have features like slowly cranking up the slope over time until a certain slope is reached, without me adjusting it manually. But that would be close to magic at this point. When magic works, it can be amazing.

---

<div class="post-metadata">

### Author: ![zedmango](https://avatars.discourse-cdn.com/v4/letter/z/c67d28/32.png) [@zedmango](https://forum.beeminder.com/u/zedmango)
#### Post date: [February 5, 2020, 7:47am UTC](https://forum.beeminder.com/t/the-anti-magic-principle/6308/3 "2020-02-05T07:47:13Z")

</div>

This seems like a variation on the Principle of Least Astonishment: software should do whatever least surprises the user. If you have a clearly labeled switch that does something “wow” or magical, like an acceleration variable for automagically increasing the slope as @mufflon suggests, that should be ok.

> **[Principle of least astonishment](https://en.wikipedia.org/wiki/Principle_of_least_astonishment)**
>
> The principle of least astonishment (POLA), also called the principle of least surprise (alternatively a "law" or "rule") applies to user interface and software design. A typical formulation of the principle, from 1984, is: "If a necessary feature has a high astonishment factor, it may be necessary to redesign the feature."
> More generally, the principle means that a component of a system should behave in a way that most users will expect it to behave; the behavior should not astonish or surprise...

---

<div class="post-metadata">

### Author: ![narthur](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/narthur/32/5113_2.png) [@narthur](https://forum.beeminder.com/u/narthur)
#### Post date: [February 5, 2020, 1:12pm UTC](https://forum.beeminder.com/t/the-anti-magic-principle/6308/4 "2020-02-05T13:12:03Z")

</div>

Great stuff!

Also related, from the field of web usability: [Jakob’s Law](https://lawsofux.com/jakobs-law):

> Users spend most of their time on other sites. This means that users prefer your site to work the same way as all the other sites they already know.

More information:

- [Jakob’s Law of Internet User Experience](https://www.nngroup.com/videos/jakobs-law-internet-ux/)
- [Usability Heuristic 4: Consistency and Standards](https://www.nngroup.com/videos/usability-heuristic-consistency-standards/)
- [Variations on Practiced Patterns Cause Mistakes](https://www.nngroup.com/articles/practiced-patterns-mistakes/)
- [Don’t Reinvent the Wheel](https://www.colorado.edu/accessible-technology/2018/02/28/dont-reinvent-wheel)

---

<div class="post-metadata">

### Author: ![phi](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/phi/32/2586_2.png) [@phi](https://forum.beeminder.com/u/phi)
#### Post date: [February 5, 2020, 5:00pm UTC](https://forum.beeminder.com/t/the-anti-magic-principle/6308/5 "2020-02-05T17:00:46Z")

</div>

Interesting! I’m a big fan of POLA, but one (in general, not saying it’s a problem here) should also not forget the principle of “one single person got confused by something, so we assume everyone else who kept quiet about it was also confused so let’s better undo the entire thing!” 😉  
And it’s hard to find a balance between the two. Specifically: How do you know that the quiet mass is or is not actually ok with said thing?

---

<div class="post-metadata">

### Author: ![narthur](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/narthur/32/5113_2.png) [@narthur](https://forum.beeminder.com/u/narthur)
#### Post date: [February 5, 2020, 5:35pm UTC](https://forum.beeminder.com/t/the-anti-magic-principle/6308/6 "2020-02-05T17:35:49Z")

</div>

> [@phi](#):
>
> Specifically: How do you know that the quiet mass is or is not actually ok with said thing?

Ideally, by running usability tests as a part of your iterative design process. And you may need to test far fewer users than you might assume. [The Nielsen Norman Group recommends 5 users for most tests of a single design.](https://www.nngroup.com/articles/why-you-only-need-to-test-with-5-users/)

---

<div class="post-metadata">

### Author: ![dreev](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.beeminder.com/dreev/32/4311_2.png) [@dreev](https://forum.beeminder.com/u/dreev)
#### Post date: [February 5, 2020, 5:51pm UTC](https://forum.beeminder.com/t/the-anti-magic-principle/6308/7 "2020-02-05T17:51:48Z")

</div>

Ha! Yes! Huge thanks to @zedmango for pointing out the Principle of Least Astonishment. Ironic how I reinvented that wheel instead of using the existing term. I also agree with @zedmango that magic can be good as long as it doesn’t violate POLA so POLA may be the better, more general principle. But… I also think there are cases where violating POLA can be good if it reduces magic. See the [criticism of DWIM](https://en.wikipedia.org/wiki/DWIM) where trying to minimize user surprise by doing what they meant instead of what they said tends to backfire.

So maybe anti-magic and least-surprise mostly overlap but the principle I really want is neither the intersection nor the union but something else that I haven’t figured out how to formulate yet?

Or maybe POLA just needs a corollary: don’t try to be clever about reducing surprise because it tends to backfire. Simplicity, transparency, and predictability are your friends.
