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

ADDC 2018 - John Sundell: Prototype Everything

ADDC 2018 - John Sundell: Prototype Everything

Prototyping is a great tool when it comes to quickly validating an idea or a new concept. It can let us try out a new UI design, an experimental way of coding or even an entire app. But prototyping can also be used in so many more situations, and can really help teams move a lot quicker without sacrificing the quality of their product. In this talk, John will share his experiences working with prototyping in many different contexts, and show how you can really prototype everything.

More about the talk, authors & slides: https://addconf.com/2018/schedule/pro...
Read about the conference: https://addconf.com

More Decks by ADDC - App Design & Development Conference

Other Decks in Technology

Transcript

  1. % Why prototype? & Prototypes are a waste of time!

    ' The client doesn’t want to pay for prototypes.
  2. Added constraints Our goal is to prototype a way to

    display course details in the overview.
  3. Added constraints Our goal is to prototype a way to

    display course details in the overview. We’ll spend one day on prototyping ideas.
  4. Added constraints Our goal is to prototype a way to

    display course details in the overview. We’ll spend one day on prototyping ideas. We’ll use standard system components.
  5. Added constraints Removed constraints Our goal is to prototype a

    way to display course details in the overview. We’ll spend one day on prototyping ideas. We’ll use standard system components.
  6. Added constraints Removed constraints Our goal is to prototype a

    way to display course details in the overview. We’ll spend one day on prototyping ideas. We’ll use standard system components. We don’t need to find a way to display all course metadata.
  7. Added constraints Removed constraints Our goal is to prototype a

    way to display course details in the overview. We’ll spend one day on prototyping ideas. We’ll use standard system components. We don’t need to find a way to display all course metadata. We don’t need to invent a brand new way of displaying details in a list view.
  8. • Can be a great tool to give yourself time

    to prototype by setting limits. Constraints ⛓
  9. • Can be a great tool to give yourself time

    to prototype by setting limits. • Lets you focus on solving one problem at a time with a clear objective. Constraints ⛓
  10. • Can be a great tool to give yourself time

    to prototype by setting limits. • Lets you focus on solving one problem at a time with a clear objective. • Makes it easier to be creative by removing pressure to create something extraordinary. Constraints ⛓
  11. <html> <ul> <li> <a href="featured.html">Featured</a> </li> <li> <a href="catalog.html">Catalog</a> </li>

    <li> <a href="forYou.html">For You</a> </li> <li> <a href="search.html">Search</a> </li> </ul> </html> index.html
  12. • Can be a great way to test out an

    idea or new feature without doing much (if any) design or coding. MVPs *
  13. • Can be a great way to test out an

    idea or new feature without doing much (if any) design or coding. • Using things like HTML can be a great option. You can also draw by hand, use mind-mapping or other tools. MVPs *
  14. • Can be a great way to test out an

    idea or new feature without doing much (if any) design or coding. • Using things like HTML can be a great option. You can also draw by hand, use mind-mapping or other tools. • Writing throw-away code or doing throw-away designs is 100% OK and can be very liberating. MVPs *
  15. NEW

  16. Modularizing ✂ Look for clusters of classes that share the

    same prefix. For example: User, UserManager, UserCache, UserLoader. .
  17. Modularizing ✂ Look for clusters of classes that share the

    same prefix. For example: User, UserManager, UserCache, UserLoader. . Classes that perform a single dedicated task, such as login or caching, are ideal candidates. /
  18. Modularizing ✂ Look for clusters of classes that share the

    same prefix. For example: User, UserManager, UserCache, UserLoader. . Untangle hard dependencies between types, and establish clear APIs and Interfaces. Avoid using global state. 0 Classes that perform a single dedicated task, such as login or caching, are ideal candidates. /
  19. Modularizing ✂ Look for clusters of classes that share the

    same prefix. For example: User, UserManager, UserCache, UserLoader. . Untangle hard dependencies between types, and establish clear APIs and Interfaces. Avoid using global state. 0 Classes that perform a single dedicated task, such as login or caching, are ideal candidates. / Define an API entry point. Just like with most SDKs, what is the top-level module API that the app can interact with? 1
  20. Spicy chicken soup A fantastically delicious soup, that is quite

    spicy. Also easy to make! But be careful not to eat too much.
  21. Spicy chicken soup A fantastically delicious soup, that is quite

    spicy. Also easy to make! But be careful not to eat too much. TitleLabel DetailLabel ImageView
  22. Spicy chicken soup A fantastically delicious soup, that is quite

    spicy. Also easy to make! But be careful not to eat too much. TitleLabel DetailLabel ImageView Recommended by: SocialView
  23. Spicy chicken soup A fantastically delicious soup, that is quite

    spicy. Also easy to make! But be careful not to eat too much. TitleLabel DetailLabel ImageView Recommended by: SocialView FavoriteButton
  24. Spicy chicken soup A fantastically delicious soup, that is quite

    spicy. Also easy to make! But be careful not to eat too much. TitleLabel DetailLabel ImageView Recommended by: SocialView FavoriteButton Meatballs Related recipes: Shrimp risotto
  25. Spicy chicken soup A fantastically delicious soup, that is quite

    spicy. Also easy to make! But be careful not to eat too much. TitleLabel DetailLabel ImageView Recommended by: SocialView FavoriteButton Meatballs Related recipes: Shrimp risotto 2
  26. • My building apps as separate building blocks, creating prototypes

    become a lot more easy & fun. • Our UI can be created in a modular fashion too - by using “slot”-based designs that are more dynamic. Modularity +
  27. • My building apps as separate building blocks, creating prototypes

    become a lot more easy & fun. • Our UI can be created in a modular fashion too - by using “slot”-based designs that are more dynamic. • Modularity also gives us some really nice side-effects, like easier testing and better reuse of code & design. Modularity +
  28. Playgrounds • Open Xcode • Select File > New >

    Playground • Pick a template • Pick a destination • Start coding
  29. • Reduce the need for setup and boilerplate when creating

    a new prototype. • Automation is a great way to get rid of tasks that are boring, repetitive or error prone. Creating tools ,
  30. • Reduce the need for setup and boilerplate when creating

    a new prototype. • Automation is a great way to get rid of tasks that are boring, repetitive or error prone. • Anyone can create tools and automation - you don’t have to be a command line expert. Creating tools ,