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

Building the OTHER product

Building the OTHER product

There is a lot of focus on feature development and user testing of the user facing product you’re building, but what about the other product?

Jeremy Baker

November 21, 2017
Tweet

More Decks by Jeremy Baker

Other Decks in Programming

Transcript

  1. Design Features / Interface Presentation Code Interface Logic Code Database

    Architecture Server Architecture System Users Ye Old Web Application
  2. • Identify the target users • Understand their needs •

    Come up with ideas for solutions • Design the feature and interface • Test the ideas and collect feedback • Sweat the details • Ship it! • Check to make sure it works Intentional Steps For Making A Great Product
  3. # gilfoyle w45 h3r3 def call v=%w{a e i o

    u} c=[] (?a..?z).map{|i|v.include?(i)||c.push(i)} combos=[] c.map{|i| v.map{|j| combos.push i+j}} i=gets.to_i o="" (i/2).times{o+=combos.sample} if i%2==1 (rand(4)==1?o+=?y:o+=?h) end o.capitalize end
  4. Unlicensed Image Redacted. Basically, it’s a picture of a guy

    who’s really frustrated because he’s dealing with someone else’s unreadable “magic”
  5. Design Features / Interface Presentation Code Interface Logic Code Database

    Architecture Server Architecture System Users Ye Old Web Application
  6. Design Features / Interface Presentation Code Interface Logic Code Database

    Architecture Server Architecture System Users Ye Old Web Application Users
  7. The limit in any organization isn’t resources or time. It’s

    energy & motivation. Tom Chi Former Head of Experience - Google X
  8. # gilfoyle w45 h3r3 def call v=%w{a e i o

    u} c=[] (?a..?z).map{|i|v.include?(i)||c.push(i)} combos=[] c.map{|i| v.map{|j| combos.push i+j}} i=gets.to_i o="" (i/2).times{o+=combos.sample} if i%2==1 (rand(4)==1?o+=?y:o+=?h) end o.capitalize end
  9. • Identify the target users • Understand their needs •

    Come up with ideas for solutions • Design the feature and interface • Test the ideas and collect feedback • Sweat the details • Ship it! • Check to make sure it works Intentional Steps For Making A Great Product
  10. R.U.L.E.S • Reasonable: Logical, consistent naming • Usable: Easy to

    understand how to use it • Legible: Clean, and consistent coding style • Elegant: Use the simplest approach. No over-engineering • Similar: Follows similar patterns https://www.youtube.com/watch?v=npOGOmkxuio Sandi Metz on the value of conformity
  11. Solve Root Problems Rich Hickey on Solving Hard Problems https://www.youtube.com/watch?v=f84n5oFoZBc

    • Understand the problem you’re solving • Write it down • Make sure it’s the right one • gem + hack != magic
  12. Make a plan to resolve hacks # This will be

    removed on # Dec 1 when the … def hack …hackey thing… end
  13. Use comments # Get the results of the # calculation

    def results …bunch of code… end # We don’t know the # results until… def results …bunch of code… end
  14. Care about naming def calculate i = fetch_result i *

    7483 end def length count = number_of_items count * WIDTH_OF_ITEM end
  15. Abstract necessary complexity Sandi Metz on Go Ahead, Make A

    Mess https://www.youtube.com/watch?v=f5I1iyso29U def calculate ReallyComplicated.call end # Very Detailed Comment class ReallyComplicated end
  16. photo by ᨬឡد ng The product is the behavior change

    you cause in your users. It is not the application you’re building. Tom Chi Former Head of Experience - Google X
  17. Job Openings: Customer Support Engineer (Jr. Rails Dev) Senior Mobile

    Engineer (iOS or Android) Jeremy Baker, Co-Founder [email protected] @jhubert https://speakerdeck.com/jhubert photos courtesy of unsplash.com