Developer experience platforms - Erik Dörnenburg
June 30th, 2023
https://www.thoughtworks.com/en-gb/about-us/events/developer-experience-platforms
(1) What does the business want
(2) then technology takes over
number of releases per day, at the financial times
predict how good your IT performs
good predictor for business performance
Lead Time = time between committing to source control and the feature being live in production
often misunderstood
Architecture
awkward metaphor
prestige, high standing
awkward: "build & walk away"
most software nowadays is built, used
better metaphor: "town planning"
can evolve, but still have structure
eg. park
eg. residential area cannot have a factory
fitness functions
eg. cost (how much the bridge costs
eg. load % on the bridge (cannot fo over 100%)
eg. launch time
Shift-left security
deployment drift fitness function
angular v7, current version v10
23 high vulnerabilities
dependencies drift
!= central body that has to approve libraries, have to go through this release cycle
software development is a team sport
different roles
!= genius programmer in the basement
!= 10x developer
Amazon's 2 pizza team
(3) then we need a platform
why do we need a platform?
why not just have a team of fullstack devs?
-> we can't have these teams able to deliver everything
A digital platform is a foundation of
- self-service APIs,
- tools,
- services,
- knowledge and
- support
which are arranged as a compelling internal product.
Autonomous delivery teams can make use of the platform
to deliver product features at a higher pace,
with reduced co-ordination.
Article: What I Talk About When I Talk About Platforms - Evan Bottcher
(1) focus on the developer experience
meaning changed
-> if they can't write good code, the platform won't solve that
(2) define and build measures of success
"number of people who use the platform"
voluntary?
what does "use" mean?
better:
Net Promotor Score NPS
(3) enable self-service to unlock scalability
the moment you see jira, you have a problem
if you have tickets in a developer experience platform, forget about it
that really destroys your cycle-time
(4) focus on value delivered
not
"how many nodes in our kubernetes cluster"
shave 10seconds off of a pod startup
maybe:
security management
one-click compliance
automatically produce reports
eg. company in transit - some services & data on premise, new services in the cloud
pain: writing a new service that needs data from on premise
-> platform provided a safe tunnel to get the data from on premise services
(5) Create a platform engineering product team
team that looks after the platform
team that treats the platform as a product
team that looks at the developer team's experience
example transition
dev team & ops team
devops teams (both in the same team) + shadow team (ops people part of infra guild with it's own backlog)
devops teams + platform team
platform team, by having been part of the development team, now had empathy for the developers
problem: speculating (instead of empathy)
build a platform team
treat it as a product team
start speculating
problem: build a platform without input
devs don't like it
devs don't use it
problem: communication
work incrementally
devs use it
platform
forgets to publish roadmap
teams have no input in roadmap
devs build a workaround
platform "why did you do that, we are building this feature next month"
dev: "I didn't know that"
tools are not a silver bullet
but can be a quick headstart, or crystalization point
Tool: backstage
open source
built by spottify
-> don't use backstage if your team is not big enough
(less than 200 engineers or less than 200 microservices)
comes with overhead
developer experience
relevant things (not talked about anymore)
Agile: process driven -> value driven
developer experience is not improved by SAFE or SCRUM
(1) test automation
https://martinfowler.com/articles/practical-test-pyramid.html
if you don't have test automation, start there
forget about backstage
forget about developer experience platforms
forget about Kubernetes
start with test automation
study by HP
8x improvement in dev productivity
by spending 25% time automating tests
(2) continuous integration
https://martinfowler.com/articles/continuousIntegration.html
(3) observability
helps teams understand what is happening in production
(4) design systems
devops = dev + ops
? = UX/design + dev
(5) readme, onboarding, single source
(6) expensive IDE, bigger monitor, ...