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

Lessons From Becoming an SDK Developer

Lessons From Becoming an SDK Developer

In this talk, Oscar will share what his experience has been in the transition from being an app developer to become an SDK developer at PSPDFKit: what it has taught him, the challenges he has faced, and how it made him a better engineer. He will outline some simple tips and tricks from the SDK developer perspective that can help any iOS developer, even if they’re not developing an SDK themselves.

Oscar Swanros

January 19, 2019
Tweet

More Decks by Oscar Swanros

Other Decks in Programming

Transcript

  1. • Empathy is your first line of defense. • You've

    gotta think about design! The lessons I've learned
  2. • Empathy is your first line of defense. • You've

    gotta think about design! • Being patient pays off. The lessons I've learned
  3. Having empathy is… • not wasting your users' time. •

    helping them get out of trouble (before they even get into it).
  4. If someone is trying to use your SDK… • are

    they in a rush? • are you solving something super complicated?
  5. If someone is trying to use your SDK… • are

    they in a rush? • are you solving something super complicated? • all of the above?
  6. If someone is trying to use your SDK… • are

    they in a rush? • are you solving something super complicated? • all of the above?
  7. Saving time • Be as transparent as possible. • Make

    an effort to feel right at home. • Don't overcomplicate stuff.
  8. • It is what it is. • You decide what

    ships. • Features are not included "by mistake."
  9. • It is what it is. • You decide what

    ships. • Features are not included "by mistake." • It is what it is.
  10. • It is what it is. • You decide what

    ships. • Features are not included "by mistake." • It is what it is. • There's no guarantee what it could be.
  11. • It is what it is. • You decide what

    ships. • Features are not included "by mistake." • It is what it is. • There's no guarantee what it could be. • Users will hold it wrong.
  12. • What will this UI/API imply? • Is this something

    that can fail? Relevant questions…
  13. User Error • Maybe the user can fix it at

    runtime? • But we don't crash: we try to present an alternative or a way forward. Programmer Error
  14. User Error • Maybe the user can fix it at

    runtime? • But we don't crash: we try to present an alternative or a way forward. • It's obvious, reflected on observable app state. Programmer Error
  15. User Error • Maybe the user can fix it at

    runtime? • But we don't crash: we try to present an alternative or a way forward. • It's obvious, reflected on observable app state. •There's no way this will work. Programmer Error
  16. User Error • Maybe the user can fix it at

    runtime? • But we don't crash: we try to present an alternative or a way forward. • It's obvious, reflected on observable app state. •There's no way this will work. •Decide if it's fatal or we can still carry on. Programmer Error
  17. User Error • Maybe the user can fix it at

    runtime? • But we don't crash: we try to present an alternative or a way forward. • It's obvious, reflected on observable app state. •There's no way this will work. •Decide if it's fatal or we can still carry on. •Show a big scary error message. Programmer Error
  18. User Error • Maybe the user can fix it at

    runtime? • But we don't crash: we try to present an alternative or a way forward. • It's obvious, reflected on observable app state. •There's no way this will work. •Decide if it's fatal or we can still carry on. •Show a big scary error message. •Crash. Programmer Error
  19. Patience the capacity to accept or tolerate delay, problems, or

    suffering without becoming annoyed or anxious.
  20. • Is a virtue that you have to consciously exercise.

    • Not always easy to stay calm! Patience
  21. • Is a virtue that you have to consciously exercise.

    • Not always easy to stay calm! • It pays off. Patience
  22. • Robust test suite. • Good documentation. • Keep improving

    your work every time you change something. Tips to reach zen
  23. • Robust test suite. • Good documentation. • Keep improving

    your work every time you change something. • Make sure information is accessible. Tips to reach zen
  24. • Be empathetic towards your users. • Make an effort

    to be conscious about the design decisions you make.
  25. • Be empathetic towards your users. • Make an effort

    to be conscious about the design decisions you make. • Understand that patience is key.