$30 off During Our Annual Pro Sale. View Details »

Developers: The last line of UX defence

Developers: The last line of UX defence

UX isn't the sole responsibility of a design team. I argue that developers are in a unique position to be the last guardians of quality UX. I discuss why this is the case, and what developers can do to up their design game.

Chris Horner

June 26, 2019
Tweet

More Decks by Chris Horner

Other Decks in Technology

Transcript

  1. Developers
    The last line of UX defence
    @chris_h_codes
    UX

    View Slide

  2. We want to make a good product

    View Slide

  3. good product
    Business analysts Product owners
    Designers
    Project managers
    Developers

    View Slide

  4. Business analysts
    Product owners Designers
    Project managers
    Developers

    View Slide

  5. 11010101011101000011101011101011010
    Business analysts
    Product owners
    Designers
    Project managers
    Developers

    View Slide

  6. Designers
    Developers

    Now Release date

    View Slide

  7. So what can we do to help?

    View Slide

  8. https://material.io/design

    View Slide

  9. https://lawsofux.com

    View Slide

  10. Yum yum yum!

    View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. View Slide

  15. CoordinatorLayout
    MotionLayout
    DynamicAnimation
    Paging
    ViewPager2
    Material

    View Slide

  16. DynamicAnimation
    https://www.youtube.com/watch?v=f3Lm8iOr4mE

    View Slide

  17. View Slide

  18. View Slide

  19. Credit to Mohammad Majed Khan
    https:/
    /dribbble.com/shots/5726952-Bingo-App-UI-Kit

    View Slide

  20. Credit to Taras Migulko
    https:/
    /dribbble.com/shots/6215241-Sport-activity-dashboard-application

    View Slide

  21. View Slide

  22. https://shapeshifter.design
    Shapeshifter

    View Slide

  23. Code has a big effect on UX

    View Slide

  24. val uiStates = observeData()
    .map { getUiState(it) }
    uiStates.subscribe { state ->
    // Render state.
    }

    View Slide

  25. val uiStates = observeData()
    .map { getUiState(it) }
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    uiStates.subscribe { state ->
    // Render state.
    }

    View Slide

  26. val uiStates = observeData()
    .map { getUiState(it) }
    .replay(1)
    .refCount()
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    uiStates.subscribe { state ->
    // Render state.
    }

    View Slide

  27. val uiStates = observeData()
    .map { getUiState(it) }
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .replay(1)
    .refCount()
    uiStates.subscribe { state ->
    // Render state.
    }

    View Slide

  28. Username
    Password
    LOGIN
    My Wonderful App

    View Slide

  29. Username
    Password
    LOGIN
    My Wonderful App





    View Slide

  30. Username
    Password
    LOGIN
    My Wonderful App
    android:orientation="vertical"
    android:background="@drawable/blurred_bg"
    >





    View Slide

  31. Username
    Password
    LOGIN
    My Wonderful App







    View Slide

  32. Username
    Password
    LOGIN
    My Wonderful App





    Picasso.get()
    .load(R.drawable.blurred_bg)
    .into(loginBg)

    View Slide

  33. It’s important to understand what you’re
    making the computer do

    View Slide

  34. Credit to Joseph Gentle
    https:/
    /josephg.com/blog/electron-is-flash-for-the-desktop/

    View Slide

  35. Buck the trend. Make quality software.
    Communicate your domain specific knowledge.
    Become a disgruntled user.
    Work closely with designers. Up your game.

    View Slide

  36. Developers
    The last line of UX defence
    chris_h_codes
    chris-horner
    chrishorner.codes

    View Slide