Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Productivity is Messing Around and Having Fun

Productivity is Messing Around and Having Fun

Developer satisfaction, developer joy, and business results are strongly correlated. Developer productivity frameworks like SPACE recognize this, with Satisfaction being a key metric. And yet - our jobs are frustrating, filled with mindless work, and free of joy. How do we fix that? Is annoying waste inevitable? Can developer performance be tuned? Are productivity measurements helping or hurting us? And how can you persuade management to invest in boredom?

Except... it's not the boss we need to convince. Sometimes, it's ourselves. We're so in the habit of running to meet deadlines, running from one problem to the next, of aiming for 100% efficiency, we're the first ones to say "I don't have time for fun". In this talk, Holly and Trisha will try to convince you that fun isn't a luxury, but a necessity.

Holly is an expert on play at work, unwise automations, and polar bears. Trisha is an expert on performance tuning, tooling and productivity. Come to this talk to find out what these topics have in common.

Holly Cummins

March 20, 2025
Tweet

More Decks by Holly Cummins

Other Decks in Programming

Transcript

  1. hi!

  2. #Gradle #RedHat @trisha_gee @holly_cummins “The Joys of the Craft” 1.

    The sheer joy of making things 2. The pleasure of making things that are useful to other people.
  3. #Gradle #RedHat @trisha_gee @holly_cummins “The Joys of the Craft” 1.

    The sheer joy of making things 2. The pleasure of making things that are useful to other people. 3. The fascination of fashioning complex puzzle-like objects of interlocking moving parts and watching them work
  4. #Gradle #RedHat @trisha_gee @holly_cummins “The Joys of the Craft” 1.

    The sheer joy of making things 2. The pleasure of making things that are useful to other people. 3. The fascination of fashioning complex puzzle-like objects of interlocking moving parts and watching them work 4. The joy of always learning
  5. #Gradle #RedHat @trisha_gee @holly_cummins “The Joys of the Craft” 1.

    The sheer joy of making things 2. The pleasure of making things that are useful to other people. 3. The fascination of fashioning complex puzzle-like objects of interlocking moving parts and watching them work 4. The joy of always learning 5. The delight of working in such a tractable medium
  6. @trisha_gee @holly_cummins #Gradle #RedHat “Your brain at positive is 31%

    more productive than your brain at negative, neutral or stressed. " https:/ /hbr.org/2012/01/positive-intelligence
  7. "Individuals [who just watched a comedy video] have approximately greater

    productivity." https:/ /www2.warwick.ac.uk/fac/soc/economics/staff/eproto/workingpapers/happinessproductivity.pdf
  8. #Gradle #RedHat @trisha_gee @holly_cummins “It’s hard to over-emphasize how unusual

    it is that an economic sector as large as knowledge work lacks useful standard de fi nitions of productivity.” – Cal Newport, Slow Productivity
  9. #Gradle #RedHat @trisha_gee @holly_cummins true story (from the internet): paying

    the team bonuses for lines of code for (var i = 0; i < 10; i++) { // code }
  10. #Gradle #RedHat @trisha_gee @holly_cummins true story (from the internet): paying

    the team bonuses for lines of code for (var i = 0; i < 10; i++) { // code } for ( var i = 0; i < 10; i++ ) { // code }
  11. #Gradle #RedHat @trisha_gee @holly_cummins __ .__ .__ .__ __ _/

    |_| |__ |__| ______ |__| ______ _____ ____ ____ _____ _____ ____ _____/ |_ \ __\ | \| |/ ___/ | |/ ___/ \__ \ _/ ___\/ _ \ / \ / \_/ __ \ / \ __\ | | | Y \ |\___ \ | |\___ \ / __ \_ \ \__( <_> ) Y Y \ Y Y \ ___/| | \ | |__| |___| /__/____ > |__/____ > (____ / \___ >____/|__|_| /__|_| /\___ >___| /__| \/ \/ \/ \/ \/ \/ \/ \/ \/ the team made comments prettier
  12. #Gradle #RedHat @trisha_gee @holly_cummins “lines of code” is not a

    good productivity metric for people. or machines.
  13. #Gradle #RedHat @trisha_gee @holly_cummins tester developer I get a bonus

    for every bug I fix! I get a bonus for every bug I find!
  14. #Gradle #RedHat @trisha_gee @holly_cummins tester developer I get a bonus

    for every bug I fix! I get a bonus for every bug I find! … pssst… wanna buy a bug?
  15. #Gradle #RedHat @trisha_gee @holly_cummins “visible activity” metrics • lines of

    code • commit counts • pull requests • bugs fi xed • bugs found • releases
  16. #Gradle #RedHat @trisha_gee @holly_cummins “In the modern of fi ce

    context, [knowledge workers] tend to rely on stress as a default heuristic” – Cal Newport, Slow Productivity
  17. @trisha_gee @holly_cummins #Gradle #RedHat Guillaume, my CI was red. Is

    there a known failure in the vertx suite? Guillaume, my CI was red. Is there a known failure in the gRPC suite?
  18. @trisha_gee @holly_cummins #Gradle #RedHat Guillaume, my CI was red. Is

    there a known failure in the vertx suite? Guillaume, my CI was red. Is there a known failure in the kafka suite? Guillaume, my CI was red. Is there a known failure in the gRPC suite?
  19. @trisha_gee @holly_cummins #Gradle #RedHat Guillaume, my CI was red. Is

    there a known failure in the vertx suite? Guillaume, my CI was red. Is there a known failure in the kafka suite? Guillaume, my CI was red. Is there a known failure in the gRPC suite? Guillaume
  20. @trisha_gee @holly_cummins #Gradle #RedHat package com.example; import org.jboss.logging.Logger; public class

    MyService { private static final Logger log = Logger.getLogger(MyService.class); public void doSomething() { log.info("It works!"); } } example: logging
  21. @trisha_gee @holly_cummins #Gradle #RedHat package com.example; import org.jboss.logging.Logger; public class

    MyService { private static final Logger log = Logger.getLogger(MyService.class); public void doSomething() { log.info("It works!"); } } example: logging import io.quarkus.logging.Log; Log
  22. @trisha_gee @holly_cummins #Gradle #RedHat package org.acme; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;

    @SpringBootApplication public class SpringDemo { public static void main(String[] args) { SpringApplication.run(SpringDemo.class, args); } } example: declaring an application
  23. @trisha_gee @holly_cummins #Gradle #RedHat what if… you could inherit boilerplate

    Hibernate queries from a superclass, instead of having to write them all? example: hibernate
  24. @trisha_gee @holly_cummins #Gradle #RedHat @ApplicationScoped public class GreetingRepository { public

    Entity findByName(int name) { return find("name", name).firstResult(); } void persist(Entity entity) {} void delete(Entity entity) {} Entity findById(Id id) {} List<Entity> list(String query, Sort sort, Object... params) { return null; } Stream<Entity> stream(String query, Object... params) { return null; } long count() { return 0; } long count(String query, Object... params) { return 0; } } example: hibernate with panache
  25. @trisha_gee @holly_cummins #Gradle #RedHat example: hibernate with panache @ApplicationScoped public

    class GreetingRepository implements PanacheRepository<Greeting> { public Entity findByName(int name) { return find("name", name).firstResult(); } }
  26. @trisha_gee @holly_cummins #Gradle #RedHat @TestConfiguration(proxyBeanMethods = false) public class ContainersConfig

    { @Bean @ServiceConnection public PostgreSQLContainer<?> postgres() { return new PostgreSQLContainer<>(DockerImageName.parse("postgres:14")); } } public class TestApplication { public static void main(String[] args) { SpringApplication .from(MySpringDataApplication::main) .with(ContainersConfig.class) .run(args); } } @Import(ContainersConfig.class) example: testcontainers
  27. @trisha_gee @holly_cummins #Gradle #RedHat the only thing you need to

    do to make testcontainers work is not con fi gure a datasource example: testcontainers
  28. @trisha_gee @holly_cummins #Gradle #RedHat the only thing you need to

    do to make testcontainers work is not con fi gure a datasource example: testcontainers
  29. @trisha_gee @holly_cummins #Gradle #RedHat the only thing you need to

    do to make testcontainers work is not con fi gure a datasource quarkus also auto-invokes fl yway and liquibase example: testcontainers
  30. #Gradle #RedHat @trisha_gee @holly_cummins Holly is most productive while •

    Showering • Running Trisha is most productive while • Knitting • Showering
  31. #Gradle #RedHat @trisha_gee @holly_cummins Holly is most productive while •

    Showering • Running Trisha is most productive while • Knitting • Showering this slide was written while running
  32. #Gradle #RedHat @trisha_gee @holly_cummins tip: use voice memo to capture

    all the work you do while running * the text on this slide was originally a voice memo
  33. Activities to help your DMN - knitting - running -

    walking - showers - gardening - unloading the dishwasher - colouring - laundry
  34. #Gradle #RedHat @trisha_gee @holly_cummins but what if you’re not debugging-

    in-your-head while running? what if you’re feeding chocolate
  35. #Gradle #RedHat @trisha_gee @holly_cummins but what if you’re not debugging-

    in-your-head while running? what if you’re feeding chocolate into the o ff i ce fan, to see what happens?
  36. #Gradle #RedHat @trisha_gee @holly_cummins Embrace the dead time Use it

    well: - problem solving - thinking - staring into space
  37. #Gradle #RedHat @trisha_gee @holly_cummins Embrace the dead time Use it

    well: - problem solving - thinking - staring into space - play
  38. #Gradle #RedHat @trisha_gee @holly_cummins Embrace the dead time Use it

    well: - problem solving - thinking - staring into space - play Do not just move e ffi ciently from task to task
  39. #Gradle #RedHat @trisha_gee @holly_cummins Am I the frog? Am I

    using stress as a proxy for productivity?
  40. #Gradle #RedHat @trisha_gee @holly_cummins - be careful how you measure

    productivity, because that metric what you will get (do not use LOC!)
  41. #Gradle #RedHat @trisha_gee @holly_cummins - be careful how you measure

    productivity, because that metric what you will get (do not use LOC!) - automate drudgery that stops you being effective at your job
  42. #Gradle #RedHat @trisha_gee @holly_cummins - be careful how you measure

    productivity, because that metric what you will get (do not use LOC!) - automate drudgery that stops you being effective at your job - being happier makes you better at your job
  43. #Gradle #RedHat @trisha_gee @holly_cummins - be careful how you measure

    productivity, because that metric what you will get (do not use LOC!) - automate drudgery that stops you being effective at your job - being happier makes you better at your job - having down time (and showers, or knitting jumpers) makes you better at your job
  44. #Gradle #RedHat @trisha_gee @holly_cummins - be careful how you measure

    productivity, because that metric what you will get (do not use LOC!) - automate drudgery that stops you being effective at your job - being happier makes you better at your job - having down time (and showers, or knitting jumpers) makes you better at your job - this a double-win