My keynote talk from the Nordic APIs 2018 Platform Summit in Stockholm, Sweden (October 24, 2018). Covers the concepts of API-first / Design-first / Contract-first / API products, legacy application redesign, customer empathy, developer experience, recruiting developers, and team diversity.
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
API-first Redesign of a Legacy Application - Nordic APIs Platform Summit 2018
1. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
API-first Redesign of a Legacy Application
Nordic APIs - Platform Summit 2018
Chris Busse
CTO, APIvista
Richmond, Virginia
chris.busse@apivista.com
@busse | busse.io
Linkedin.com/in/chrisbusse
We’re hiring!
Richmond, Virginia, US
Raleigh, North Carolina, US
2. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
What is “API-first Design”?
3. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
•“Design-first” API Approach
•”Contract-first” API Design
•“API-first” Product Design
4. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
1979
5. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
6. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
Lemonade Stand Workshop,
a retrospective
7. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
What is a REST API?
8. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
“Resource manipulation through
representations”
9. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
(Switch to the Lemonade Stand Demo)
https://classicreload.com/lemonade-stand.html
10. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
What are the rules of the game?
(aka, the “business logic”)
11. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
Rules Given to the Player…
12. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
“Do we have enough information
to redesign this legacy app, API-
first?”
14. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
http://lemonade-stand/???
Design
API Resources
/customers
/customers/accounts
/customers/accounts/{number}/transactions
/…
1
15. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
“Who wants to share?”
16. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
“I’ve been an Enterprise Software
Architect for 20 years….”
17. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
Open API Spec 2.0 | editor.swagger.io
18. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
http://lemonade-stand/???
Define
Payloads
/customers/{number}
{
firstName
lastName
emailAddress
...
}
2
19. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
Open API Spec 2.0 | editor.swagger.io
20. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
“Are we sure we’re
on the right track?”
21. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
Open API Spec 2.0 | editor.swagger.io
22. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
What did we learn about
approaching API-first Design?
23. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
We felt the User Journey and
Experience first-hand
24. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
Empathy
25. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
Design Validation:
Resilience to Change
“Add a cookie – not the browser kind!”
•You are going to sell cookies in the game now – what
changes in your API design?
•Which approach (items as resources, or turns) is
easier to handle this kind of change?
26. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
Database First or UI/UX First?
DBsDBs
DBs APIs UI/UX
Which should the API give precedence to in its design?
27. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
User Journeys take many
branching paths
28. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
Do you really need that right now?
29. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
YAGNI
(“You aren’t going to need it”)
YAGNIN
(“You aren’t going to need it now”)
30. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
So who decides?
The customer does, by intent.
31. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
Appropriate Abstractions
32. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
(aka “the Mulesoft way”)
Source: https://www.slideshare.net/HarishKumar544/three-layer-api-design-architecture
33. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
Thinking in Abstractions are
how you create resource
representations and
make REST not CRUD
34. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
Are you just refinancing your
technical debt?
35. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
What if we want to make this a real
API Product?
36. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
UX | DXUser Experience Developer Experience
37. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
Creating DX: Three Kinds of API Development
Database
Server
Framework
View (UI)
(Ex: MEAN stack development)
1: Self 2: Team 3: External
38. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
Creating DX: Three Kinds of API Development
Database
Server
Framework
View (UI)
(Ex: MEAN stack development)
1: Self 2: Team 3: External
39. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
Creating DX: Three Kinds of API Development
Database
Server
Framework
View (UI)
(Ex: MEAN stack development)
1: Self 2: Team 3: External
APIs
40. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
Creating DX: Three Kinds of API Development
Database
Server
Framework
View (UI)
(Ex: MEAN stack development)
1: Self 2: Team 3: External
APIs
APIs
41. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
Creating DX: Three Kinds of API Development
Database
Server
Framework
View (UI)
(Ex: MEAN stack development)
3: External
APIs
The lower in the software
stack you deliver APIs,
and the farther away the
consuming developer is,
the more empathy for
Developer Experience you
need to have
42. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
The question to ask candidates:
Have you built APIs for other
developers outside of your own
organization?
43. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
“There is no business problem that can’t
be solved by good recruiting”
- Karen Booth Adams
44. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
In summary…
45. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
API Developers should actively seek
to gain empath for the end-users of
the systems implementing their APIs,
and design accordingly
46. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
Let the real needs of the users
heavily inform backlog
prioritization
47. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
Abstractions can bring freedom, but
understand the trade-offs you’re
making when further burying
technical debt
48. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
Lean in and hire great
developers…
49. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
One of the best ways to help build
empathy for customers is to bring
more diversity into your dev and
product teams.
50. | API-first Redesign of a Legacy Application – Nordic APIs Platform Summit 2018 – Chris Busse - @busse
API-first Redesign of a Legacy Application
Nordic APIs - Platform Summit 2018
Chris Busse
CTO, APIvista
Richmond, Virginia
chris.busse@apivista.com
@busse | busse.io
Linkedin.com/in/chrisbusse
10 REM <<< LEMONADE STAND >>>
15 REM
20 REM FROM AN ORIGINAL PROGRAM
30 REM BY BOB JAMISON, OF THE
40 REM MINNESOTA EDUCATIONAL
50 REM COMPUTING CONSORTIUM
60 REM * * *
70 REM MODIFIED FOR THE APPLE
80 REM FEBRUARY, 1979
90 REM BY CHARLIE KELLNE
Editor's Notes
- This talk is based off of some primary research and observations
- including interviewing 6-10 developers a month over the past year as we’ve been building the team at APIvista
- an 90-minute API-first / Legacy App redesign workshop I’ve held several times that has functioned as a survey of sorts about how people approach API design
But first, a question…
- This talk is based off of some primary research and observations
- including interviewing 6-10 developers a month over the past year as we’ve been building the team at APIvista
- an 90-minute API-first / Legacy App redesign workshop I’ve held several times that has functioned as a survey of sorts about how people approach API design
39 – 40 Celsius with oppressive humidity…
History of the game
What is a lemonade stand
But first, a question…
“In REST you have to go through the exercise of understanding a user’s needs before the API implementation” - Z
In the workshop I have everyone do ten rounds to see who makes the most money … $17 is A LOT
Starts with a simple premise…
Notice I didn’t say User!
This isn’t calling it out explicitly, but we’re talking about a lightweight API product management & governance activity here
I usually give 5 minutes for this part … then I will ask for volunteers to share….
I usually give 10 minutes for this part
But first, a question…
This is good product management
- get out of the building
- find out things only the users know
This is good product management
- get out of the building
- find out things only the users know
Of course, this is in contention with YAGNI / YAGNIN
There are a lot of tools that will generate “REST” APIs from tables, but that’s really just JSON CRUD over HTTP – it is not resource manipulation
Otherwise you’ll find yourself falling into the trap of Conway’s Law, in a bad way
Objective v. Subjective
What I mean is, you go ask the customer
They could be internal, or external
But first, a question…
So as a test, if you aren’t doing abstractions, if you aren’t orchestrating or transforming something between your API and data layer, you need to look closer
Through years of inaction, technical debt is created
In this situation, it can be easy to think of the need to fix this as YAGNIN, but it is really that you needed it a long time ago if things have gotten to this point!
But first, a question…
All of this is in service of Developer experience
If backlog story completion is the goal of your devs, you have a problem and won’t fix the empathy issue
As a part of my job, I am constantly talking to developers in our pipeline looking for new talent to join our company. From that I have come to realize there are three
So I want to talk through some of the things that the third type of API developer might take into consideration when redesigning a legacy application. And for this talk, our application is a game, which I’ll discuss more in a moment
This is who needs API Product Management
I had said I’d give one question to ask developers … if a developer has done this, even if they weren’t working in a “Product” mindset, they should have the empathy for the consuming developer that’s needed.
But first, a question…
But first, a question…
But first, a question…
But first, a question…
But first, a question…
Even if the people you bring in aren’t a representative demographic of the customer, you will benefit immensely from a culture of many perspectives