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
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
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
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
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
Dynamic/interpreted
languages Static languages
Innovation
Advantage
Product development (technology 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