I <3 APIs San Jose, October 2015 API first? @mikermcneil
API first?
©2015 Apigee Corp. All Rights Reserved.
The views expressed in this presentation are those of the presenter, and not necessarily those of Apigee Corporation or the presenter’s employer.
1
Product.find({ or: [ { name: {contains: ’shoes’}}, { description: {contains: ’shoes’}} ] });
// …also search recipes
// …also search comments then for each one, look up // the containing product or recipe…
Search the store.
// …then rank results.. oh wait but actually this should all be in an index of some kind
write automated tests for code
write documentation for codewrite code
manually test code deploy code to server
discover bug
remember how code works
fix code
manually test code
discover that automated tests fail now
update automated tests
update documentation redeploy code to server
design
write automated tests for code
write documentation for codewrite code
manually test code deploy code to server
discover bug
remember how code works
fix code
manually test code
discover that automated tests fail now
update automated tests
update documentation redeploy code to server
design
How we think as product designers:
1. User interface design 2. Interaction design 3. Cross fingers (development starts) … 4. Oh crap, one more thing I forgot to mention… 5. Can I see a preview? 6. AHHH WHAT IS THIS?!
“Traditional” Development Process
1.Design data model 2.Implement custom server code 3.Start implementing custom UI code
c. 2005
“Traditional” Development Process
1.Design data model 2.Implement custom server code 3.Start implementing custom UI code 4.AHHHHHHH WTF IS THIS??! 5.Change the data model, change server code, change UI
code, change API docs (but you probably don’t have any)
c. 2005
“NoSQL” Development Process
1.Implement custom server code 2.Implement custom UI code 3.Stumble upon (then maybe even document!)
your cloud API 4.Stumble upon your data model
c. 2011
“NoSQL” Development Process
1.Implement custom server code 2.Implement custom UI code 3.AHHHHHHH WTF IS THIS??! 4.Change server code, change UI code 5.Stumble upon & document your cloud API 6.Stumble upon your data model
c. 2011
“API-Centric” Development Process
1.Implement custom code for each UI 2.Implement fake server code 3.Stumble upon your cloud API 4.Implement real server code 5.Stumble upon your data model
“API-Centric” Development Process
1.Implement custom code for each UI 2.Implement fake server code 3.AHHHHHHH WTF IS THIS??! (one or more of the UIs changed) 4.Change UI code 5.Stumble upon your cloud API 6.Now implement real server code 7.Stumble upon your data model
Goal: Minimize technical debt, code changes, and rewrites.
How: Show stakeholders and customers the developing or fully-implemented UI as early as possible.
We're just giving you functions that return functions that you do things with.
Doug WilsonLead Maintainer, Express
)
}
(function {a b c, ,
console.log(“hi”);
return a b c;+ +
if (Math.random()>0.5) {
} throw new Error();
)
}
(function {
console.log(
a
b
c
return a b c;+ +
exits
inputs
throw new Error();
if (Math.random()>0.5) {
}
behavior
console.log(
a
b
c
exitsinputs
Output: number
Output: Error
error
success
Description: Sorry, you got unlucky.
First number
Second number
Third number
(e.g. 7)
(e.g. 2)
(e.g. 3)
(e.g. 1)
DESCRIPTION: Add the 3 provided numbers together.
MORE INFO URL: http://example.com/docs/math/add
FRIENDLY NAME: Add numbers
PACKAGE: machinepack-math (v3.2.9)
*
*
*