Skip to main content

Design for Productivity

··1 min

What is productivity #

\(\boxed{\dfrac{desired \space output}{time + resources}}\)

i.e. being more productive means achieving more with less.

Guidelines #

  • Minimize cognitive load. Invest in UX. Don’t Make Them Think.

  • Automate menial tasks. Don’t make users do things the system can do for them.

  • Create tools that empower users to have more control over their domain, and less dependent on other people and technical skills.

  • Provide safeguards that give users the confidence they will not screw things up, and that their actions will not have unintentional consequences.

  • Provide emotional safety through a sense of control: keep the user in the loop, provide status updates, reliable estimations and predictions on what’s going to happen next, ability to cancel or undo operations.

  • Build for the users to fall into the Pit of Success

    • Use automation to prevent mistakes and misuse (compilation, static code analysis, test coverage, etc.)
    • Self documenting code (good type system, naming conventions, explicit results, single responsibility, dependency declarations)
    • Provide Auxiliary documentation:
      • Decisions, reasoning - why is it like this?
      • References (where you got it from, relevant issues, etc.)
      • Usage examples (executable - e.g. tests - where you can)
      • Actionable and specific logs and error messages (with context information)