Email or username:

Password:

Forgot your password?
Darius Kazemi

This is an image of the decision tree that Slack used 5 years ago to determine whether to notify someone.

Every time you add a customization option like "don't notify me during these times in my time zone" or "mute notifications in this thread" etc, you add another branch or set of branches to a decision tree.

This is NOT a bad thing, but it is a reason that I am resistant to customization. Each knob you add expands software complexity and room for bugs.

Source: slack.engineering/reducing-sla

31 comments
Steve has ☕️ for brains

@darius … wow. That’s super interesting and a good reminder that feature creep can have exponential effects.

Darius Kazemi

I am happy to expand this complexity when it comes to user safety. Less willing (but always open!) for the sake of convenience.

Gadfly (-booq-)

@darius Where do we draw the line between "convenience" and "accessibility"?

(I'm skeptical there is one.)

Darius Kazemi

@gaditb Good question! I don't think there is a clear line there at all. That's a very difficult judgement call to make. Like, supporting low-vision users is for me obviously accessibility, but then there are features that I think are about convenience where you could make an accessibility argument based on neuroatypicality. No good answers here, just judgement calls.

Gadfly (-booq-)

@darius I haven't studied this formally but the general sense I've gotten is that "attempt to anticipate all accessibility needs ahead of time" is an anti-pattern.

Most of what I've seen has emphasized, where possible, giving users the flexibility to set their own environments to be accessible, and putting effort to ensure the document or application doesn't break when changing -- and provides enough control points to change it in the first place -- in those ranges, rather than a discrete set of set paths.

DELETED

@darius I love how there's an infinite loop in there among DMs

Darius Kazemi

@erincandescent heh any complex system will end up with this kind of thing which is why you always end up building in horrible latches and circuit breakers to the control system

Todd Jordan

@darius This decision tree was obviously user drive. Ha.

This is a victim of being to easy going and giving into too many voices in design.

It also is 'hidden' functionality to the users at the end of the day. It would be a mystery to many how come they missed a message unexpectedly or got one they thought they shouldn't.

Darius Kazemi

@tojosan heh, yeah, Slack is ultimately an enterprise b2b software company so there is extreme pressure for them to say "how high" when a big customer says "jump"

Darius Kazemi

lol this is such a linkedin style of post, I'm sorry everyone

Josh Justice

@darius at least you had a paragraph that has more than one sentence in it

Casey Kolderup

@darius I'm mentally endorsing you in "Agile" and "UML" as punishment

Sol Kawage

@darius at least you didn't start with a story about how you helped a homeless person

Bill Hunt

@darius I dunno, there's a big lack of "Don't dream it, be it!" energy (or something else that should be printed on a pillow) for this to be a LinkedIn post. 😬

Gadfly (-booq-)

@darius horseshoe-theory.jpeg but with poles of LinkedIn Posting On Main and Hornyposting On Main

Pauxlll Kruczynski

@darius Paul endorses Darius for User-Focused Community Enhancements in Order to Promote Safety

kit

@darius damn i wonder if there's a fediverse server where everyone pretends to be a Beautiful Business Boy Thought Champion™

🌮 Dave Millar 🌮

@darius and then somewhere down the line it became this.

christa

@darius also like... managing that complexity through merges from source. I'm impressed you change as much as you do

Eli the Bearded

@darius Flickr had (maybe still has) a similarly complicated set of rules for "Can you see this image page?" There's contact restrictions like public, friends only, family only, friends and family. There's G-rated and sensitive. There's shared in a group and thus visible to group members.

v

@darius agreed with everything you say here, but also... this seems like a totally reasonable amount of complexity for a core feature, like "showing message notifications" is for Slack. the classic gamedev thing of having to implement a whole heap of complexity in order to approximate "common sense".

Darius Kazemi

@v yeah, I agree, it's more about illustrating the compounding effect of every knob you add (sort of what I meant by "this is not bad", it's normal but can get out of control)

Joachim

@darius I learned that watchmakers call “complications” what we in the software industry would call “features”. I think it’s a sane way to think about it.

Vy Nguyen

@darius I think this puts a dot on what caused Slack to go from “hey this is nice” to “what in the HR software hell is this”

Oliver

@darius @hamefang how are decision trees usually implemented? Do you compare two lists of user settings and the required settings through a Boolean operation, or is it just a loooong if/else? Disclaimer: not a dev.

Darius Kazemi

@Olivergetz @hamefang it's often a mix of both, and I'm sure that these decisions happen in all sorts of different places in the code and not just in one big functional block

Oliver

@darius @hamefang thanks for the reply! It’s interesting to hear

DELETED

@darius To be honest I wish every developer spent at least that much time and effort trying to figure out how to bother me the least amount possible.

Go Up