Devops… reframed Embracing the Path to Developer Productivity Engineering

Baruch Sadogursky - @jbaru ch × Developer Productivity Advocate × Gradle Inc × Development -> DevOps -> #DPE

shownotes × × × × speaking.jbaru.ch Slides Video All the links!

6

7

Not a single developer!

Next thing you know…

And this:

Parrot learns how to ask “Why?” repeatedly and is promoted to Engineering Manager

TE S T CO D E AN PL BU ILD

TE S T CO D E AN PL BU ILD

Types of work according to d evops Planned Work Business projects or new features Internal Projects Server migrations, software updates and so on Changes Driven by feedback on completed work Unplanned Work Support escalations and emergency outages

Types of work according to d New Features Writing code Refactoring Writing code Bug Fixes Writing code evelopers

Software craft-person definit ion of done × We got what they × Tests - ✔ want × QA are happy × Clear code × Team lead is happy × Easy to deploy × Product owner is × Non-func reqs – ✔ happy – (i.e. customer is happy) × No new tech dept

Software craft-person definit ion of done × We got what they × Tests - ✔ want × QA are happy × Clear code × Team lead is happy × Easy to deploy × Product owner is × Non-func reqs – ✔ happy – (i.e. customer is happy) × No new tech dept × DevOps are happy

Hello! I am Baruch and I have an obsession

“DeVops engineer” is not a thing

Let’s The rise of the devdevops!

Engineering aspect of devops Jokes Aside

Welcome to our new lord and savior: “Platform engineering”!

Scott Shaw Chief Technology Officer, APAC, Thoughtworks

Software craft-person definit ion of done × We got what they × Tests - ✔ want × QA are happy × Clear code × Team lead is happy × Easy to deploy × Product owner is × Non-func reqs – ✔ happy – (i.e. customer is happy) × No new tech dept × PEs are happy

What makes platform enginee rs × × × × × × Modular Deployable Observable Scalable Upgradable Downgradable h a ppy

We figured the “devops” shit out. Done.

😕 😁

Dev Ops DevOps QA

Process People DevOps Tools

Productive Process Productive People DevOps Productive Tools

Empowered Teams ?!?! DevOps Kubernetes

The pain is real

Production system of your production systems

Developer Productivity Engineering DevOps Kubernetes Empowered Teams

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

Talk is cheap, show me the goods!

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:

feedback efficiency × × × × IDE: Sub-seconds (I type, it marks it red) Build: Seconds CI: Minutes Production: Hours/Days

Reverse dependency on distance from developers IDE Build CI Production Feedback Time Faster Slower Distance from Developers Expected Real

It is slow!

It is slow and the developers h ave no idea why!

What is build? × × × × × Project setup Downloading the Internet Artifact generation: Compilation, packaging, etc Tests Artifact deployment

What can go wrong? × × × × × Project setup Downloading the Internet Artifact generation: Compilation, packaging, etc Tests Artifact deployment

When can it go wrong? At any time.

The Build frustrates the developers

Let’s ask Chatgpt

What the actual f*ck?! × Skipping tests defeats the purpose of the build! × How about skipping compilation? × We want faster feedback, not less feedback

What feedback do we want?

Ci/cd pipeline quality gates It compiles Basic Integration tests Basic Unit tests Basic Quality Linting Quality Code coverage Dependency scanning SAST/DAST Quality Sec Static code analysis Sec Sec Secrets scanning Resource Utilization Nonfunc Nonfunc Load Testing Nonfunc Compliance

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

Reverse dependency on distance from developers Faster IDE Build CI Feedback Time Commit time synchronous asynchronous Slower Distance from Developers Production

Ideal build time feedback It compiles Basic Integration tests Basic Unit tests Basic Quality Linting Quality Code coverage Dependency scanning SAST/DAST Quality Sec Static code analysis Sec Sec Secrets scanning Resource Utilization Nonfunc Nonfunc Load Testing Nonfunc Compliance

Delightful build (pick two): ☑ provides max feedback ☑ fast

Skip what can be skipped (but no more!)

Avoidance: Incremental build × Don’t build what didn’t changed × Don’t build what isn’t affected

Avoidance: Incremental build s hortcomings × Relies on produced artifacts × Relies on architectural decisions

Avoidance: Caching × × × × Makes the build faster Makes the build faster for everybody Makes the build faster always Makes all parts of the build faster

Avoidance: Predictive test selec tion × Learns de-facto code change effects × Skips tests with high degree of confidence

Predictive Test prediction What changed Where it changed Correlate with observed test failures Predictions which changes will fail which tests

Black magic in action × The more tests a project has, the less they break × Refactorings in Java break tests less than in JavaScript

Speed up what can’t be skipped

Test parallelization × Use max power of local machine × (Yes, your boss should buy you the bleeding edge)

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!

Don’t let it slide

Observe and improve × Measure local build times across time and environments × Detect downfacing trends × Find root causes and improve

But DPE is not my job!

But Devops is not my job!

Devops vs DPE The product More productive work On everybody’s minds Slips away Organizational culture Specialized team

The best DPE organizations build focused teams

DevOps? Sre? PE? DPE? × × × × × × DevOps mainly solves Ops’ concerns It is is a collaborative methodology It needs engineering implementation Call it SRE or call it PE, someone has to write all those YAML files But what about People Productivity? DPE has the answer and it’s another pillar of DevOps Engineering implementation

Learn more and try it today! × × × × Take the Gradle/Maven Speed Challenge Be DPE Agent of Change! Read the DPE Handbook Watch the DPE Summit videos x speaking.jbaru.ch