All you need is fast feedback
loop,
fast feedback loop, 🎶
fast feedback loop
is all you need 🎹
1
July, 2024
WeAreDevelopers
World Congress
Nacho Cougil
• Principal Software Engineer at
Dynatrace
• TDD & clean code fan
• Started to write in Java before Y2K
• Founder of the Barcelona Java Users
Group ( BarcelonaJUG ) & co-founder of
the Barcelona Developers Conference
(DevBcn) former Java and JVM
Barcelona Conference
• Java Champion
• Father, former mountain marathon
runner 😅
Who am I?
3
4
- We should isolate our environments
to clearly identify functionalities
that are not working
- Let’s use new infrastructure and
deploy everything from scratch
every single time we push any changes
-We have some flaky tests
- Nah, just retrigger the build
-Ey, it is a bit complicated to show what we have built in every
Sprint. What if we create some simulations with fresh data to
demo much better all the functionalities?
-Yes, sure! This is feasible and looks reasonable
- How can be 100% sure that our service is working as
expected with the all-external services?
- Yes, let’s “froze” each service for every deployment,
and run all the integration tests across all the services
-Ey, our customers are notifying
us that we have some errors in
our system.
We must do end-to-end tests to
verify the functionalities are
working as expected!
-Yes, of course! We must do it!
-Let’s include it in our pipeline!
-We are worried about the
performance our system.
Should we include some load
tests in our CI system?
-Sure, why not?
https://xkcd.com/303/
We should strive for an
efficient, simple and reliable
mechanism for delivering
changes
why ?
We are paid to deliver value
to our customers
Software that
is used by customers
is working as expected
can be changed
Remember
The agile manifesto
https://agilemanifesto.org/
We must adapt to
changes
Adaptation =
Agility
Adapt to changes
Again, the agile manifesto
https://agilemanifesto.org/
We must deliver {working} things
We MUST iterate 🔁 fast
 to save money 💰 & time ⏳
 to make our developers happy 😊
{ because we want to deliver more &
faster features than our competitors }
Ability to iterate
What’s the overall amount of time
developers are waiting for local
builds or PR’s builds to finish?
Let’s do some maths
Netflix reduced a 62-
minute test cycle time to
just under 5 minutes
(in just 1 app)
It is about money
https://gradle.com/blog/netflix-pursues-soft-
devex-goals-with-hard-devprod-metrics-using-
test-distribution/
Top 5 reasons for developers
to be happy at work:
1. salary (60%)
2. work-life balance (58%)
3. flexibility (52%) |
4. productivity (52%), and
5. growth opportunities (49%)
… but only money??
https://stackoverflow.blog/2022/03/17/new-data-
what-makes-developers-happy-at-work/
Top 3 reasons makes a future
employer attractive:
1. Developer experience
(53%)
2. Salary transparency (41%)
3. Learn from others (40%)
https://stackoverflow.blog/2021/12/07/new-data-
what-developers-look-for-in-future-job-
opportunities/
… but only money??
will make developers
more efficient
Improving the
development process
Interesting flow
will make
developers
+ quality
+ collaboration
+ productivity
how ?
Will our users understand this super
cool feature, or will they get
frustrated because is so
complicated?
You must learn by experimenting
( lean experimentation )
1. hypothesis
2. build an experiment
3. analyse the results
4. act
Try things! Run experiments ! !
Feature flags, for the win!
Technique that allows dis|enable
of certain features or code paths
in a product or service, without
modifying the source code.
A toggle allows to turn a feature
on/off, and test it
https://openfeature.dev
Deploy/release twice a month
VS
Deploy 6-7 times a day
Up to a week to fix bugs
VS
Fix bugs in a day
Use case: Paramount
https://launchdarkly.com/blog/paramount-improves-
developer-productivity-100x/
Minimize end-to-end tests to the minimum
Less UI tests, more integration tests
Decouple components
Adopt contract testing
Separate pipelines
Benefits
• Faster build & deployments
• Improve team autonomy
• Less noise for developers  happier
• Better documentation
• Helps to improve the communication
between teams
Remove dependencies
and bottlenecks
Move all the testing part
earlier in the lifecycle
(i.e. move it left 👈 on the
project timeline)
”Test early and often”
Fail fast!
Shift left 👈 !
Early defect detection
• Better predictability
and planning
Cost efficiency
Improved quality
• Customer
satisfaction
• Faster time to
market
Enhanced collaboration
Some benefits
https://www.sonarsource.com/blog/leveraging-
sonarqube-sonarcloud-and-sonarlint-for-effective-
shift-left-practices/
Automated testing &
Continuous Integration
• Automate build
• Ease of integrating changes
• Faster delivery
• Enabling rapid feedback
• Easily detect bugs
• Improve software quality
• Increase collaboration
• Facilitates deployment automation
• Etsy deploys more than 50 times a
day
• Deploy on developer 1st day
• Engineers get productive faster
• The level of cooperation
(developers, ops, etc) is higher
• Features are tested easier by the
teams
Use case: Etsy
https://www.infoq.com/news/2014/03/etsy-deploy-50-
times-a-day/
https://www.etsy.com/codeascraft/how-does-etsy-
manage-development-and-operations
Use case: Hilti
• Deployment times have decreased
from 3 hours to 15 minutes (12 x
faster)
• Feedback loops have shortened
from 6 days to 3 (50%)
• Number of code checks increased:
from 6 times every 3 months to
twice a week (400%)
• Higher quality
https://about.gitlab.com/customers/hilti/
Real-time monitoring of applications and
infrastructure can help detect and resolve
issues before they become problems.
Benefits
• Increase application stability and
uptime
• Faster issues resolution
• Reduce operational costs
• Improve developer and operational
productivity
• Better customer experience
Monitoring is also a must
• Reduced the Mean Time To
Detection (MTTD) from 6 hours to
15 minutes (96% lower)
• Faster delivery: teams ship
projects in weeks (instead of
quarterly)
• New developers and contractors
onboard in 3–4 days instead of 8–
12 weeks (20x faster)
Use case: Toyota
https://www.datadoghq.com/case-studies/toyota/
• 58% increase in (high-quality)
software releases
• Major service incidents down 94%
(over past 5 years)
• Ability to anticipate and resolve
issues before impact
• Increased operational efficiencies
 better collaboration across
teams
Use case: Bank of New
Zealand
https://www.dynatrace.com/customers/bn
z/
DORA metrics
Metrics can help you measure your
team’s performance  identify areas
for improvement
• Throughput
• Change lead time
• Deployment frequency
• Stability
• Change fail percentage
• Failed deployment recovery
time
https://dora.dev/
• Throughput
• Change lead time - Time ⌛ it
takes for a code commit or
change to be successfully
deployed to production.
• Deployment frequency -
How often 🔄 application
changes are deployed to
production.
DORA metrics
• Stability
• Change fail percentage -
Percentage of deployments that
cause failures in production,
requiring hotfixes 🚨 or
rollbacks.
• Failed deployment recovery
time - Time it takes to recover
📈 from a failed deployment.
https://dora.dev/
"When a measure becomes a
target, it ceases to be a good
measure"
https://en.wikipedia.org/wiki/Goodhart%27s_law
Having one metric to rule them all
Making disparate comparisons
(ex: mobile app VS mainframe)
Having siloed ownership (devs,
devops, etc)
Do not compete! (the objective is
to improve your team’s
performance)
Warning !
It will be enough?
monitoring
Continuous
integration
Feature
flags
Remove
dependencie
s
Shift left
Automated
testing
DORA
metrics
Run
experiment
s
Delete
bottleneck
s
Summary
Practice/Strategy Benefits
• Run experiments Rapid learning and iterative development
• Feature flags Help in rolling out any new change for our users
• Remove dependencies Fostering team autonomy and better communication
• Delete bottlenecks Faster development & deployment process
• Shift left Flexibility and speed for fast feedback
• Automated Testing Reduce testing cost and time
• Continuous Integration Frequent integration & testing for rapid feedback on
code quality
• Monitoring Visualise and better understanding how our systems behave
• DORA Metrics Quantifiable indicators for measuring and optimizing
our development process
Summary
Practice/Strategy Benefits
• Run experiments Rapid learning and iterative development
• Feature flags Help in rolling out any new change for our users
• Remove dependencies Fostering team autonomy and better communication
• Delete bottlenecks Faster development & deployment process
• Shift left Flexibility and speed for fast feedback
• Automated Testing Reduce testing cost and time
• Continuous Integration Frequent integration & testing for rapid feedback on
code quality
• Monitoring Visualise and better understanding how our systems behave
• DORA Metrics Quantifiable indicators for measuring and optimizing
our development process
58
59
Questions?
nacho@cougil.com
https://nacho.cougil.com
@icougil
https://jvm.social/@icougil
All you need is fast feedback loop, fast feedback loop, fast feedback loop is all you need

All you need is fast feedback loop, fast feedback loop, fast feedback loop is all you need

  • 1.
    All you needis fast feedback loop, fast feedback loop, 🎶 fast feedback loop is all you need 🎹 1 July, 2024 WeAreDevelopers World Congress
  • 2.
    Nacho Cougil • PrincipalSoftware Engineer at Dynatrace • TDD & clean code fan • Started to write in Java before Y2K • Founder of the Barcelona Java Users Group ( BarcelonaJUG ) & co-founder of the Barcelona Developers Conference (DevBcn) former Java and JVM Barcelona Conference • Java Champion • Father, former mountain marathon runner 😅 Who am I?
  • 3.
  • 4.
  • 15.
    - We shouldisolate our environments to clearly identify functionalities that are not working - Let’s use new infrastructure and deploy everything from scratch every single time we push any changes -We have some flaky tests - Nah, just retrigger the build
  • 16.
    -Ey, it isa bit complicated to show what we have built in every Sprint. What if we create some simulations with fresh data to demo much better all the functionalities? -Yes, sure! This is feasible and looks reasonable - How can be 100% sure that our service is working as expected with the all-external services? - Yes, let’s “froze” each service for every deployment, and run all the integration tests across all the services
  • 17.
    -Ey, our customersare notifying us that we have some errors in our system. We must do end-to-end tests to verify the functionalities are working as expected! -Yes, of course! We must do it! -Let’s include it in our pipeline! -We are worried about the performance our system. Should we include some load tests in our CI system? -Sure, why not?
  • 21.
  • 24.
    We should strivefor an efficient, simple and reliable mechanism for delivering changes
  • 25.
  • 26.
    We are paidto deliver value to our customers Software that is used by customers is working as expected can be changed Remember
  • 27.
  • 28.
    We must adaptto changes Adaptation = Agility Adapt to changes
  • 29.
    Again, the agilemanifesto https://agilemanifesto.org/
  • 30.
    We must deliver{working} things We MUST iterate 🔁 fast  to save money 💰 & time ⏳  to make our developers happy 😊 { because we want to deliver more & faster features than our competitors } Ability to iterate
  • 31.
    What’s the overallamount of time developers are waiting for local builds or PR’s builds to finish? Let’s do some maths
  • 32.
    Netflix reduced a62- minute test cycle time to just under 5 minutes (in just 1 app) It is about money https://gradle.com/blog/netflix-pursues-soft- devex-goals-with-hard-devprod-metrics-using- test-distribution/
  • 33.
    Top 5 reasonsfor developers to be happy at work: 1. salary (60%) 2. work-life balance (58%) 3. flexibility (52%) | 4. productivity (52%), and 5. growth opportunities (49%) … but only money?? https://stackoverflow.blog/2022/03/17/new-data- what-makes-developers-happy-at-work/
  • 34.
    Top 3 reasonsmakes a future employer attractive: 1. Developer experience (53%) 2. Salary transparency (41%) 3. Learn from others (40%) https://stackoverflow.blog/2021/12/07/new-data- what-developers-look-for-in-future-job- opportunities/ … but only money??
  • 35.
    will make developers moreefficient Improving the development process Interesting flow will make developers + quality + collaboration + productivity
  • 36.
  • 37.
    Will our usersunderstand this super cool feature, or will they get frustrated because is so complicated? You must learn by experimenting ( lean experimentation ) 1. hypothesis 2. build an experiment 3. analyse the results 4. act Try things! Run experiments ! !
  • 38.
    Feature flags, forthe win! Technique that allows dis|enable of certain features or code paths in a product or service, without modifying the source code. A toggle allows to turn a feature on/off, and test it https://openfeature.dev
  • 39.
    Deploy/release twice amonth VS Deploy 6-7 times a day Up to a week to fix bugs VS Fix bugs in a day Use case: Paramount https://launchdarkly.com/blog/paramount-improves- developer-productivity-100x/
  • 41.
    Minimize end-to-end teststo the minimum Less UI tests, more integration tests Decouple components Adopt contract testing Separate pipelines Benefits • Faster build & deployments • Improve team autonomy • Less noise for developers  happier • Better documentation • Helps to improve the communication between teams Remove dependencies and bottlenecks
  • 42.
    Move all thetesting part earlier in the lifecycle (i.e. move it left 👈 on the project timeline) ”Test early and often” Fail fast! Shift left 👈 !
  • 43.
    Early defect detection •Better predictability and planning Cost efficiency Improved quality • Customer satisfaction • Faster time to market Enhanced collaboration Some benefits https://www.sonarsource.com/blog/leveraging- sonarqube-sonarcloud-and-sonarlint-for-effective- shift-left-practices/
  • 44.
    Automated testing & ContinuousIntegration • Automate build • Ease of integrating changes • Faster delivery • Enabling rapid feedback • Easily detect bugs • Improve software quality • Increase collaboration • Facilitates deployment automation
  • 45.
    • Etsy deploysmore than 50 times a day • Deploy on developer 1st day • Engineers get productive faster • The level of cooperation (developers, ops, etc) is higher • Features are tested easier by the teams Use case: Etsy https://www.infoq.com/news/2014/03/etsy-deploy-50- times-a-day/ https://www.etsy.com/codeascraft/how-does-etsy- manage-development-and-operations
  • 46.
    Use case: Hilti •Deployment times have decreased from 3 hours to 15 minutes (12 x faster) • Feedback loops have shortened from 6 days to 3 (50%) • Number of code checks increased: from 6 times every 3 months to twice a week (400%) • Higher quality https://about.gitlab.com/customers/hilti/
  • 47.
    Real-time monitoring ofapplications and infrastructure can help detect and resolve issues before they become problems. Benefits • Increase application stability and uptime • Faster issues resolution • Reduce operational costs • Improve developer and operational productivity • Better customer experience Monitoring is also a must
  • 48.
    • Reduced theMean Time To Detection (MTTD) from 6 hours to 15 minutes (96% lower) • Faster delivery: teams ship projects in weeks (instead of quarterly) • New developers and contractors onboard in 3–4 days instead of 8– 12 weeks (20x faster) Use case: Toyota https://www.datadoghq.com/case-studies/toyota/
  • 49.
    • 58% increasein (high-quality) software releases • Major service incidents down 94% (over past 5 years) • Ability to anticipate and resolve issues before impact • Increased operational efficiencies  better collaboration across teams Use case: Bank of New Zealand https://www.dynatrace.com/customers/bn z/
  • 50.
    DORA metrics Metrics canhelp you measure your team’s performance  identify areas for improvement • Throughput • Change lead time • Deployment frequency • Stability • Change fail percentage • Failed deployment recovery time https://dora.dev/
  • 51.
    • Throughput • Changelead time - Time ⌛ it takes for a code commit or change to be successfully deployed to production. • Deployment frequency - How often 🔄 application changes are deployed to production. DORA metrics • Stability • Change fail percentage - Percentage of deployments that cause failures in production, requiring hotfixes 🚨 or rollbacks. • Failed deployment recovery time - Time it takes to recover 📈 from a failed deployment. https://dora.dev/
  • 52.
    "When a measurebecomes a target, it ceases to be a good measure" https://en.wikipedia.org/wiki/Goodhart%27s_law Having one metric to rule them all Making disparate comparisons (ex: mobile app VS mainframe) Having siloed ownership (devs, devops, etc) Do not compete! (the objective is to improve your team’s performance) Warning !
  • 53.
    It will beenough?
  • 54.
  • 55.
    Summary Practice/Strategy Benefits • Runexperiments Rapid learning and iterative development • Feature flags Help in rolling out any new change for our users • Remove dependencies Fostering team autonomy and better communication • Delete bottlenecks Faster development & deployment process • Shift left Flexibility and speed for fast feedback • Automated Testing Reduce testing cost and time • Continuous Integration Frequent integration & testing for rapid feedback on code quality • Monitoring Visualise and better understanding how our systems behave • DORA Metrics Quantifiable indicators for measuring and optimizing our development process
  • 56.
    Summary Practice/Strategy Benefits • Runexperiments Rapid learning and iterative development • Feature flags Help in rolling out any new change for our users • Remove dependencies Fostering team autonomy and better communication • Delete bottlenecks Faster development & deployment process • Shift left Flexibility and speed for fast feedback • Automated Testing Reduce testing cost and time • Continuous Integration Frequent integration & testing for rapid feedback on code quality • Monitoring Visualise and better understanding how our systems behave • DORA Metrics Quantifiable indicators for measuring and optimizing our development process
  • 58.
  • 59.
  • 60.

Editor's Notes

  • #4 Let me tell you a story… John… used to be a happy developer
  • #25 We should strive for
  • #32 More time to build, less time to wait, less conext switch
  • #33 More time to build, less time to wait, less conext switch
  • #36 More time to build, less time to wait, less context switch Increased happiness: by reducing stress & frustration associated with long development cycles and slow feedback  + positive and productive work environment
  • #43 Resolving bugs early = less expensive to maintain More testing -> more quality of the final product + testing = + collaboration (testers, devs, devops, etc) Less defects -> less rework -> faster developments
  • #44 Resolving bugs early = less expensive to maintain More testing -> more quality of the final product + testing = + collaboration (testers, devs, devops, etc) Less defects -> less rework -> faster developments
  • #46 Emphasize shipping, and get over any deployment fears early.  
  • #50 Bank of new zealand
  • #52 Change lead time  efficiency of your delivery pipeline Deployment frequency  Higher deployment frequency indicates a more agile and responsive delivery process Change fail %  A lower change failure rate indicates a more reliable delivery process Failed deployment recovery time  A lower recovery time indicates a more resilient and responsive system.
  • #53 Similar to code coverage !? https://en.wikipedia.org/wiki/Goodhart%27s_law https://fronterabrands.com/goodharts-law/
  • #58 Please let’s make Mike Happy
  • #59 Let’s iterate faster Code & push changes See the results in PROD as Soon as we can! ( ASAP )
  • #60  All you need is love All you need is love All you need is love, love Love is all you need (…) All you need is love (All together now) All you need is love (Everybody) All you need is love, love Love is all you need https://open.spotify.com/track/5zqJlEJcn0EfnvAScH8swK?si=9a38edbc1c884926