35
bill scott (@billwscott) sr. director, user interface engineering, paypal. O’Reilly Fluent webcast. May 15, 2013 kicking up the dust with nodejs refactoring paypal’s tech stack to enable lean ux

Kicking Up the Dust with Node JS

  • View
    6.070

  • Download
    1

Embed Size (px)

DESCRIPTION

Fluent Conference WebCast from 5/15. I talk about the technology stack that we specifically are employing at PayPal to enable rapid experimentation with Lean UX. The use of nodejs as a prototyping stack is discussed as well as the use of javascript templating (with Dust JS) to allow for an efficient way to refactor a legacy stack. Listen to the webcast here: http://www.livestream.com/oreillywebcasts/video?clipId=pla_554d1581-9104-4721-8985-5d7b9f3e4a6c&utm_source=lslibrary&utm_medium=ui-thumb My talk starts at 12:22

Citation preview

Page 1: Kicking Up the Dust with Node JS

bill scott (@billwscott)sr. director, user interface engineering, paypal. O’Reilly Fluent webcast. May 15, 2013

kicking up the dust with nodejs refactoring paypal’s tech stack to enable lean ux

Page 2: Kicking Up the Dust with Node JS

at Netflix 90% or more of the “ui bits” were thrown away every year.

doesn’t take too many tests to result in lots of throw away code.

followed buid/test/learn

Page 3: Kicking Up the Dust with Node JS

the epiphanydesign for volatility

Page 4: Kicking Up the Dust with Node JS

paypal vs netflix

Page 5: Kicking Up the Dust with Node JS

paypal circa 2011

roll your own. disconnected delivery experience. culture of long shelf life. inward

focus. risk averse.

Page 6: Kicking Up the Dust with Node JS

tangled up technologybig problem. technology and processes not geared to build/test/learn.

Page 7: Kicking Up the Dust with Node JS

new dna @paypaljan 2012fleshed out ui layer that could support rapid experimentation

march 2012david Marcus becomes president of PayPal

april 2012formed lean ux team to reinvent checkout experience

Page 8: Kicking Up the Dust with Node JS

in the midst of transformation

Page 9: Kicking Up the Dust with Node JS

a tale of two stacks (c++ & java)

two non-standard stacks

new stack tied to Java

“one word” change could take 6 weeks to fix on c++ stack

c++ java

xml jsp

proprietary ui

proprietary ui

old new’ish

long release cycles

Page 10: Kicking Up the Dust with Node JS

decision was to move to java

migration was already in place to leave the c++/xml stack behind

some odd choices preceded this: write everything in java (html, css & js!!)

c++ java

xml jsp

proprietary ui

proprietary uiXold new’ish

Page 11: Kicking Up the Dust with Node JS

but we wanted to support lean ux

whiteboardto code code to usability

product/design team

user interfaceengineers

usability/customers

enabling a living spec

engineering stack requirements treat prototype & production the sameallow rapid sketch to code life cycleallow quick changes during usability studies (RITE)support being the “living spec”

Page 12: Kicking Up the Dust with Node JS

lean uxdesigning products for build/measure/learn (lean startup)requires 3 rules to be followed at all times

get to & maintain a shared understandingform deep collaboration across disciplineskeep continuous customer feedback flowing

Page 13: Kicking Up the Dust with Node JS

free to iterate and drive agile

user interface engineering - agile scrum team

lean ux - lean team track

engineering - agile scrum teamsprint 0

usability usability usability usability usability

release release release release

{agile

FOCUS ON LEARNING

FOCUS ON DELIVERING (& LEARNING)

Page 14: Kicking Up the Dust with Node JS

leanengineering

engineering for learning

Page 15: Kicking Up the Dust with Node JS

old stack not designed for learning

this new stack was not conducive to prototyping

followed an “enterprise application” model. ui gets built into the “app”

ajax/components all done server-side (subclass java controller)

java

jsp

proprietary ui

prototyping was hard

“ui bits” could only

live here

Page 16: Kicking Up the Dust with Node JS

step 1set the ui bits free

Page 17: Kicking Up the Dust with Node JS

separate the ui bitscode = JS

(backbone)templates = JS

{dust}style = CSS

(less)images

re-engineered the user interface stack so that the only artifacts are:• javascript• css• images

ditched the server-side mentality to creating UIs• no more server-side only

templates• no more server-side

components• no more server-side

managing the ui

Page 18: Kicking Up the Dust with Node JS

use javascript templating

templates get converted to javascript<p>Hello {name}</p>

we use dust.js

code = JS(backbone)

templates = JS{dust}

style = CSS(less)

images

JavaScriptcompiles to...

javascript executedto generate ui

Page 19: Kicking Up the Dust with Node JS

ui bits now just natural web artifacts

server-side language independent

server/client agnostic

CDN ready

cacheable

rapid to create

code = JS(backbone)

templates = JS{dust}

style = CSS(less)

images

Page 20: Kicking Up the Dust with Node JS

portable in all directions

JS templating can be run in client browser or server on the production stack

we can drag & drop the ui bits from prototyping stack to the production stack

java (rhinoscript)

node.js

{dust}JS template

prototypestack

productionstack

{dust}JS template

client OR

server

either stack

Page 21: Kicking Up the Dust with Node JS

started using nodejs for proto stack

whiteboardto code code to usability

product/design team

user interfaceengineers

usability/customers

enabled rapid development (coupled with dustjs)

Page 22: Kicking Up the Dust with Node JS

started using nodejs for proto stack

whiteboardto code code to usability

product/design team

user interfaceengineers

usability/customers

enabled rapid development (coupled with dustjs)

node.js (set up as prototype stack)

backbone{dust} less images

Page 23: Kicking Up the Dust with Node JS

free to turn sketch to codeforcing function.

brought about a close collaboration between engineering and designcreated a bridge for shared understanding

required a lot of confidence and transparency

Page 24: Kicking Up the Dust with Node JS

free to test frequently with users

Page 25: Kicking Up the Dust with Node JS

step 2embrace open source

Page 26: Kicking Up the Dust with Node JS

use open source religiously

Page 27: Kicking Up the Dust with Node JS

work in open source modelinternal github revolutionized our internal development

rapidly replaced centralized platform teams

innovation democratized

every developer encouraged to experiment and generate repos to share as well as to fork/pull request

Page 28: Kicking Up the Dust with Node JS

give back to open sourcewe have a string of projects that will be open sourced

node bootstrap (similar to yeoman)contributions to bootstrap (for accessibility)and more...

Page 29: Kicking Up the Dust with Node JS

step 3release the kraken

Page 30: Kicking Up the Dust with Node JS

project krakenready nodejs for production

enable all of standard paypal services

but do it in a friendly npm waymonitoring, logging, security, content, local resolution, analytics,authentication, dust rendering,experimentation, packaging, application framework, deployment,session management, service access, etc.

mvc framework/scaffolding. hello world in 1 minute.

Page 31: Kicking Up the Dust with Node JS

one stack to rule them all

single stack creates seamless movement between lean ux and agile

blended team

app is the ui

node.js

{dust}JS template

prototype&

productionstack

client

server

Page 32: Kicking Up the Dust with Node JS

introducing nodejs into your orgget the camel’s nose under the tent

start as an API proxy (shim) to really old servicesuse as a rapid prototyping stack

move into the tentfind a good proof of concept API or application to begin to scaledo it in parallel and test till scales

do it with talentensure best developers are on the initial work to set the standard

Page 33: Kicking Up the Dust with Node JS

a few other key itemsgithub democratizes coding & decentralizes teams

bower provides a clean way to componentize the ui

requirejs makes packaging simple and enforces modules

running internal npm service drives modularization

having a CLI for creating/extending apps is empowering

less cleans up css code

backbone provides standard client event modeling

Page 34: Kicking Up the Dust with Node JS

set the ui freeembrace open sourcerelease the kraken

the steps we took

Page 35: Kicking Up the Dust with Node JS

follow me on twitter@billwscott