Rapid prototyping
Upcoming SlideShare
Loading in...5
×
 

Rapid prototyping

on

  • 4,784 views

A presentation I did at LinkedIn hackdays on how - and why - to build things quickly.

A presentation I did at LinkedIn hackdays on how - and why - to build things quickly.

Statistics

Views

Total Views
4,784
Views on SlideShare
4,261
Embed Views
523

Actions

Likes
51
Downloads
58
Comments
2

10 Embeds 523

http://www.ybrikman.com 346
http://ybrikman.com 87
https://twitter.com 60
http://localhost 14
http://www.google.com 6
https://www.linkedin.com 5
http://www.linkedin.com 2
http://wave.webaim.org 1
http://tweetedtimes.com 1
https://www.rebelmouse.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

12 of 2

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Rapid prototyping Rapid prototyping Presentation Transcript

    • Rapid Prototyping Yevgeniy Brikman
    • Go from an idea to working code quickly.
    • Why? 1. Build products faster
    • Why? 1. Build products faster 2. ???
    • Why? 1. Build products faster 2. ??? 3. Profit!!
    • Why? 1. Build products faster 2. ??? 3. Profit!!
    • Why? 1. Build products faster 2. Build products of higher quality 3. Profit!!
    • Why? 1. Build products faster 2. Build products of higher quality 3. Become a better engineer
    • Outline 1. Instant Feedback 2. Leverage 3. Beyond prototypes
    • Instant Feedback
    • The antithesis of rapid prototyping.
    • Change the code
    • Change the code See the result
    • Change the code See the result Should be as close to 0 as possible
    • Use dynamic/interpreted languages 1. No waiting for compilation
    • Use dynamic/interpreted languages 1. No waiting for compilation 2. Generally more flexible and hackable
    • Use dynamic/interpreted languages 1. No waiting for compilation 2. Generally more flexible and hackable 3. "A programming language is for thinking of programs, not for expressing programs you've already thought of." [1] [1] Paul Graham, Hackers and Painters
    • Use interactive languages 1. The REPL is your friend
    • Use interactive languages 1. The REPL is your friend 2. Some static languages support hot reload (Play Framework, JRebel)
    • Use interactive languages 1. The REPL is your friend 2. Some static languages support hot reload (Play Framework, JRebel) 3. IDEs can help too[1][2] [1] Scala worksheet in Eclipse [2] http://www.lighttable.com/
    • Push everything to the client 1. Modern browsers are powerful
    • Push everything to the client 1. Modern browsers are powerful 2. JS/CSS feedback loop is nearly instantaneous
    • Push everything to the client 1. Modern browsers are powerful 2. JS/CSS feedback loop is nearly instantaneous 3. Tight feedback loop in the browser often leads to a better user experience
    • Demo 1. Frameworks: node-dev, express, play 2. Client-side MVC: backbone.js, underscore.js 3. In-browser: firebug, developer tools, jsfiddle, tinkerbin 4. Other: CodeKit, apigee, js-api console
    • node-dev: restarts node on every change
    • Play Framework: modern web framework for Java and Scala that supports hot reload
    • Chrome dev tools: inspect the page and change it on the fly!
    • JSFiddle: create, run, and share HTML/CSS/JS snippets right in the browser.
    • apigee: try out 3rd party APIs (LinkedIn, twitter, facebook, etc) directly in the browser
    • Leverage
    • tldr: google & stackoverflow are your friends
    • Don't reinvent the wheel 1. Always, always, always google first
    • Don't reinvent the wheel 1. Always, always, always google first 2. StackOverflow has the best answers
    • Don't reinvent the wheel 1. Always, always, always google first 2. StackOverflow has the best answers 3. You'll be lucky if you have a single original idea your entire life [1] [1] Mr. Patch, my 11th grade physics teacher
    • Use open source libraries 1. There is probably (more than) one for the problem you're solving
    • Use open source libraries 1. There is probably (more than) one for the problem you're solving 2. They have probably solved parts of the problem you haven't thought of yet
    • Use open source libraries 1. There is probably (more than) one for the problem you're solving 2. They have probably solved parts of the problem you haven't thought of yet 3. Many minds are better than one
    • Use open source libraries 1. There is probably (more than) one for the problem you're solving 2. They have probably solved parts of the problem you haven't thought of yet 3. Many minds are better than one 4. Bonus: learn from their code
    • Demo 1. Backend: node modules, node toolbox, ruby toolbox, mongo 2. JS: jQuery (UI, tools), backbone, underscore 3. UI: bootstrap, jetstrap, google fonts, compass 4. Other: node.js screen scraping, lorem ipsum, placekitten.com, localtunnel
    • ruby-toolbox: open source ruby libraries, broken down by category, ranked by popularity and quality.
    • node-toolbox: open source node.js libraries, broken down by category, ranked by popularity and quality.
    • jquery: the de-fact cross-browser JS library. Don’t leave home without it.
    • underscore: dozens of extremely useful javascript functions. The most popular library in npm.
    • bootstrap: frontend framework that makes it easy to create a clean, responsive UI, even if you aren’t a CSS pro.
    • Google fonts: free fonts to use in your app
    • localtunnel: a quick way to share an app running on localhost with the outside world
    • Beyond prototyping
    • All software development is trial and error.
    • A canvas or sketchbook serves as an "external imagination", where an artist can grow an idea from birth to maturity by continuously reacting to what's in front of him [1] [1] Bret Victor, Learnable Programming
    • Only about 10% of the UI code written to craft the experience lasted more than a year. 90% of the UI code needed to be thrown away. [1] [1] Bill Scott, The Experimentation Layer
    • Time Maturity Mature, stable Proof of concept Product development (technology comparison) Dynamic/interpreted languages Static languages Idea
    • Time Maturity Mature, stable Proof of concept Dynamic/interpreted languages Static languages Innovation Advantage Product development (technology comparison) Idea
    • Time Maturity Mature, stable Proof of concept RoR, Play Servlets, Spring Innovation Advantage Product development (framework comparison) Idea
    • Time Maturity Mature, stable Proof of concept Agile, Scrum Waterfall Innovation Advantage Product development (development method comparison) Idea
    • Faster can mean higher quality 1. In a trial and error world, getting to errors faster is the key to success
    • Faster can mean higher quality 1. In a trial and error world, getting to errors faster is the key to success 2. Making more errors leads to better software and better engineers
    • Faster can mean higher quality 1. In a trial and error world, getting to errors faster is the key to success 2. Making more errors leads to better software and better engineers 3. Speed wins [1] [1] A handwritten note on the door to the office of Stephen Kaufer, TripAdvisor CEO