shownotes
× × × ×
speaking.jbaru.ch Slides Video All the links!
Slide 6
Slide 7
Don’t ruin the flow
Slide 8
“The build takes forever, I am distracted to do other things and the context switch is terrible”
Slide 9
Slide 10
Don’t frustrate the developers
Slide 11
“we have a flanky test, it is irrelevant 99.5% of the time , but it always runs and it is last in the suite”
Slide 12
Slide 13
Don’t boil the frog
Slide 14
“I have a feeling that everything is slower somehow…”
Slide 15
Slide 16
Developer Productivity == A/M Autonomy
/P == motivation
Tools and people aren’t in my way
Mastery
Tools and processes help me to excel
Purpose
I want to be productive, i.e. create the product
Slide 17
Developer productivity Enginee
ring!
Slide 18
Developer Productivity Enginee Foster Faster Feedback
Collaborate through Effective Tooling
Eliminate Toil for Developers
Dedicated Organizational Mindset
ring Embrace Rigorous Observability for Proactive Improvement
Prioritize Automation and Eliminate Bottlenecks Outcomes Over Output
Slide 19
Talk is cheap, show me the goods!
Slide 20
Small DPE improvements make a × × × × ×
huge difference
Generate code faster: Better IDE Test better: Testcontainers Enforce better code: Sonar Test more reliably: Flaky test detection Foster Faster Feedback:
Slide 21
feedback efficiency × × × ×
IDE: Sub-seconds (I type, it marks it red) Build: Seconds CI: Minutes Production: Hours/Days
Slide 22
Reverse dependency on distance from developers IDE
Build
CI
Feedback Time
Faster
Slower Distance from Developers Expected
Production
Slide 23
Reverse dependency on distance from developers IDE
Build
CI
Production
Feedback Time
Faster
Slower Distance from Developers Expected
Real
Slide 24
Slide 25
It is slow!
Slide 26
Slide 27
It is slow and the developers h
ave no idea why!
Slide 28
What is build? × × × × ×
Project setup Downloading the Internet Artifact generation: Compilation, packaging, etc Tests Artifact deployment
Slide 29
What can go wrong? × × × × ×
Project setup Downloading the Internet Artifact generation: Compilation, packaging, etc Tests Artifact deployment
Slide 30
When can it go wrong?
At any time.
Slide 31
The Build frustrates the developers
Slide 32
Let’s ask Chatgpt
Slide 33
What the actual f*ck?!
× Skipping tests defeats the purpose of the build! × How about skipping compilation? × We want faster feedback, not less feedback
Two types of feedback x e.g., CI/CD x we never wait for it x results are distracting x e.g., build x we’ll wait for it in the flow x we’ll be pissed off when it’s slow
Slide 38
Reverse dependency on distance from developers IDE
Build
CI
Feedback Time
Faster
Slower
Distance from Developers
Production
Slide 39
Reverse dependency on distance from developers Faster
IDE
Build
CI
Feedback Time
Commit time synchronous asynchronous
Slower
Distance from Developers
Production
Delightful build (pick two): ☑ provides max feedback ☑ fast
Slide 43
Skip what can be skipped (but no more!)
Slide 44
Avoidance: Incremental build
× Don’t build what didn’t changed × Don’t build what isn’t affected
Slide 45
Avoidance: Incremental build s hortcomings × Relies on produced artifacts × Relies on architectural decisions
Slide 46
Avoidance: Caching
× × × ×
Makes the build faster Makes the build faster for everybody Makes the build faster always Makes all parts of the build faster
Slide 47
Slide 48
Avoidance: Predictive test selec tion × Learns de-facto code change effects × Skips tests with high degree of confidence
Slide 49
Predictive Test prediction
What changed Where it changed
Correlate with observed test failures
Predictions which changes will fail which tests
Slide 50
Black magic in action × The more tests a project has, the less they break × Refactorings in Java break tests less than in JavaScript
Slide 51
Slide 52
Speed up what can’t be skipped
Slide 53
Test parallelization
× Use max power of local machine × (Yes, your boss should buy you the bleeding edge)
Slide 54
Slide 55
Test distribution
× × × ×
CI uses fan-out to speed-up tests Shouldn’t you enjoy it for local tests? Use the cloud to distribute test load RUN ALL THE NEEDED TESTS!
Slide 56
Don’t let it slide
Slide 57
Observe and improve
× Measure local build times across time and environments × Detect downfacing trends × Find root causes and improve