Page MenuHomePhabricator

Write about "how to solve problems with program behavior"
Open, WishlistPublic

Description

We sometimes get bug reports or support tickets which make me think the author may not have a good mental template for figuring out how systems work.

For example, one recent request amounted to "some users say Phabricator is slow, what do I do?". I pushed back fairly hard on this because the scope of this question seems enormous, but the scope is also very general and it's possible to provide guidance which is broadly applicable.

There is a simple, universal process for understanding system behavior:

  • Repeat until you can describe the behavior: remove a component of the system which does not affect the behavior.

Essentially all useful diagnostic outcomes arise from following this process. Design of observable systems arises from the expectation that diagnostics will follow this process. Implementation of reliable systems arises from making this process easy to follow.

Framing all operational concerns in context of this process might be useful.