Save 37% off PRO during our Black Friday Sale! »

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.

7b1e567c19126de48554fe8e5e767395?s=128

Chris Horner

June 26, 2019
Tweet

Transcript

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

  2. We want to make a good product

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

  4. Business analysts Product owners Designers Project managers Developers

  5. 11010101011101000011101011101011010 Business analysts Product owners Designers Project managers Developers

  6. Designers Developers Now Release date

  7. So what can we do to help?

  8. https://material.io/design

  9. https://lawsofux.com

  10. Yum yum yum!

  11. None
  12. None
  13. None
  14. None
  15. CoordinatorLayout MotionLayout DynamicAnimation Paging ViewPager2 Material

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

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

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

  21. None
  22. https://shapeshifter.design Shapeshifter

  23. Code has a big effect on UX

  24. val uiStates = observeData() .map { getUiState(it) } uiStates.subscribe {

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

    uiStates.subscribe { state -> // Render state. }
  26. val uiStates = observeData() .map { getUiState(it) } .replay(1) .refCount()

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

    .replay(1) .refCount() uiStates.subscribe { state -> // Render state. }
  28. Username Password LOGIN My Wonderful App

  29. Username Password LOGIN My Wonderful App <LinearLayout android:orientation="vertical"> <TextView />

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

    <TextView /> <TextInputLayout /> <TextInputLayout /> <Button /> </LinearLayout>
  31. Username Password LOGIN My Wonderful App <LinearLayout android:orientation=“vertical"> <ImageView android:id="@+id/login_bg"

    /> <TextView /> <TextInputLayout /> <TextInputLayout /> <Button /> </LinearLayout>
  32. Username Password LOGIN My Wonderful App <TextView /> <TextInputLayout />

    <TextInputLayout /> <Button /> </LinearLayout> Picasso.get() .load(R.drawable.blurred_bg) .into(loginBg)
  33. It’s important to understand what you’re making the computer do

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

  35. Buck the trend. Make quality software. Communicate your domain specific

    knowledge. Become a disgruntled user. Work closely with designers. Up your game.
  36. Developers The last line of UX defence chris_h_codes chris-horner chrishorner.codes