Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Building Developer Tools Your Coworkers Won't Hate (J on the Beach 2018)

Building Developer Tools Your Coworkers Won't Hate (J on the Beach 2018)

It's easy to complain about bad tools. It's harder to write a great tool yourself. Once you step into the shoes of an internal tools developer, you realize that you're balancing feature requests and constraints from a dozen different teams and an entire universe of complexity behind what should be a simple UI. In this talk, we'll talk about how to gather information about your users' needs, how to balance between conflicting requirements, and ways you can fail to build a tool that your coworkers want to use.

Amy Nguyen

May 24, 2018
Tweet

More Decks by Amy Nguyen

Other Decks in Technology

Transcript

  1. @amyngyn J on the Beach 2018
    building developer
    tools your coworkers
    won't hate
    amy nguyen (@amyngyn)
    j on the beach | may 24, 2018

    View full-size slide

  2. @amyngyn J on the Beach 2018
    hello!
    ● observability engineer at stripe
    ● excited about user experience design and
    education for developer tools
    ● @amyngyn
    ● amynguyen.net

    View full-size slide

  3. @amyngyn J on the Beach 2018
    agenda
    ● motivation
    ● how to do user research
    ● UX design principles
    ○ command line tools
    ○ data analysis tools
    ○ build tools

    View full-size slide

  4. @amyngyn J on the Beach 2018
    why care?
    ● bad UX causes incidents.
    incidents cost money.
    ● bad UX wastes time.
    time costs money.
    ● bad UX creates hostility.
    hostility costs money.

    View full-size slide

  5. @amyngyn J on the Beach 2018
    ● talk to people
    ○ one-on-one
    ○ focus groups
    how to do user research

    View full-size slide

  6. @amyngyn J on the Beach 2018
    how to do user research
    ● ask the right questions
    ○ don't ask questions that confirm
    what you were expecting
    ○ dig deep, don't accept the first answer

    View full-size slide

  7. @amyngyn J on the Beach 2018
    ● communicate as you follow-up
    ○ build trust
    ○ confirm your solutions are the right
    solutions
    how to do user research

    View full-size slide

  8. @amyngyn J on the Beach 2018
    ● talk to people
    ● ask the right questions
    ● communicate as you follow-up
    how to do user research

    View full-size slide

  9. @amyngyn J on the Beach 2018
    does anyone even know what that flag does?
    command line tools

    View full-size slide

  10. @amyngyn J on the Beach 2018
    preview as the default
    ● if your tool makes critical changes to
    infrastructure, don't allow users to make
    those changes accidentally
    ./run-script --confirm

    View full-size slide

  11. @amyngyn J on the Beach 2018
    preview as the default
    ● provide diffs of what will change

    View full-size slide

  12. @amyngyn J on the Beach 2018
    be consistent
    % man -h
    Usage: man [OPTION] [SECTION] PAGE…
    [...]

    View full-size slide

  13. @amyngyn J on the Beach 2018
    be consistent
    % less -h
    Value is required after -h
    (--max-back-scroll)

    View full-size slide

  14. @amyngyn J on the Beach 2018
    be consistent
    ● match arguments to your other tools
    ● match arguments to historical usage

    View full-size slide

  15. @amyngyn J on the Beach 2018
    don’t break existing tools
    ● have integration tests for your internal tools
    ● design with existing tools in mind
    cat ex.txt | grep hi | sort -r

    View full-size slide

  16. @amyngyn J on the Beach 2018
    command line tools should
    ● be consistent
    ● integrate with the rest of your tools
    ● provide previews and diffs

    View full-size slide

  17. @amyngyn J on the Beach 2018
    everyday we stray further
    from unix philosophy
    ● these ideas have been discussed for decades!
    ○ rule of composition
    ○ rule of modularity
    ○ rule of least surprise

    View full-size slide

  18. @amyngyn J on the Beach 2018
    command line tool design
    ● provide previews and diffs
    ● be consistent
    ● integrate with the rest of your tools
    ● for more, read "The Art of Unix
    Programming" by Eric S. Raymond
    (or just read the Wikipedia article!)

    View full-size slide

  19. @amyngyn J on the Beach 2018
    does that data really mean what i think it means?
    data analysis tools

    View full-size slide

  20. @amyngyn J on the Beach 2018
    rapid testing
    ● users need a REPL or
    other way of quickly
    validating ideas

    View full-size slide

  21. @amyngyn J on the Beach 2018
    discoverability
    ● autocomplete
    ● GUI or other menus for
    showing all the options

    View full-size slide

  22. @amyngyn J on the Beach 2018
    correctness
    ● syntax errors and highlighting
    ● explanations for syntax errors

    View full-size slide

  23. @amyngyn J on the Beach 2018
    explorability
    let me go back to the
    previous page
    don't lose my
    place if I refresh
    let me share URLs
    let me open in a
    new tab

    View full-size slide

  24. @amyngyn J on the Beach 2018
    data analysis tool design
    ● rapid testing
    ● discoverability
    ● correctness
    ● explorability

    View full-size slide

  25. @amyngyn J on the Beach 2018
    i don't know who broke the build
    because i don't know how to find the build
    build tools

    View full-size slide

  26. @amyngyn J on the Beach 2018
    navigation
    ● anticipate the most common actions
    ○ find my latest build
    ○ locate failing output
    ○ rebuild
    ● autocomplete!!!

    View full-size slide

  27. @amyngyn J on the Beach 2018
    fail fast
    ● if something is failing, don't wait to
    finish before showing the result to
    the user

    View full-size slide

  28. @amyngyn J on the Beach 2018
    helpful messages at the right time
    ● remind users to lint and unit test
    before kicking off a long build
    process
    ● suggest corrections for bad input

    View full-size slide

  29. @amyngyn J on the Beach 2018
    useful output

    View full-size slide

  30. @amyngyn J on the Beach 2018
    useful output

    View full-size slide

  31. @amyngyn J on the Beach 2018
    summary
    ● communicate early and
    often with users
    ● imagine the context in which
    users will use your tools
    ● user experience and good
    design matters even for
    infrastructure tools

    View full-size slide

  32. @amyngyn J on the Beach 2018
    thanks!

    View full-size slide