Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Productivity is Messing Around and Having Fun

Productivity is Messing Around and Having Fun

What is the happy path, for developers? It’s less boredom, and more play.

Developer satisfaction, developer joy, and business results are strongly correlated. And yet - many of our jobs are frustrating, filled with friction, and free of joy. What’s going on? How do we fix that? Is annoying waste inevitable? Can developer performance be tuned? Are productivity measurements helping or hurting us? How do we deal with fear at work? Will AI take our jobs? Finally, how can you persuade management to invest in boredom?

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

May 07, 2024
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. 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
  3. #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 }
  4. #Gradle #RedHat @trisha_gee @holly_cummins __ .__ .__ .__ __ _/

    |_| |__ |__| ______ |__| ______ _____ ____ ____ _____ _____ ____ _____/ |_ \ __\ | \| |/ ___/ | |/ ___/ \__ \ _/ ___\/ _ \ / \ / \_/ __ \ / \ __\ | | | Y \ |\___ \ | |\___ \ / __ \_ \ \__( <_> ) Y Y \ Y Y \ ___/| | \ | |__| |___| /__/____ > |__/____ > (____ / \___ >____/|__|_| /__|_| /\___ >___| /__| \/ \/ \/ \/ \/ \/ \/ \/ \/ the team made comments prettier
  5. #Gradle #RedHat @trisha_gee @holly_cummins even old-school code assistance produces bloat

    /** * @return Returns the xyz. */ public String getXyz() { return xyz; } /** * @param xyz * The xyz to set. */ public void setXyz(String xyz) { this.xyz = xyz; }
  6. #Gradle #RedHat @trisha_gee @holly_cummins “lines of code” is not a

    good productivity metric for people. or machines.
  7. #Gradle #RedHat @trisha_gee @holly_cummins “41% of all code right now

    is AI generated” – Emad Mostaque, Stability CEO
  8. #Gradle #RedHat @trisha_gee @holly_cummins “41% of all code [that is

    being written using Copilot] right now is AI generated” – Emad Mostaque, Stability CEO
  9. #Gradle #RedHat @trisha_gee @holly_cummins copilot users accepted 30% of its

    suggestions copilot produced 40% of the codebase uh oh, what does that say about the information density?
  10. #Gradle #RedHat @trisha_gee @holly_cummins you pay your junior developers to

    write code you pay your senior developers to delete code
  11. #Gradle #RedHat @trisha_gee @holly_cummins if code is so boring a

    machine can predict it, maybe it shouldn’t be there?
  12. @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
  13. @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
  14. @holly_cummins what if… you could inherit boilerplate Hibernate queries from

    a superclass, instead of having to write them all? example: hibernate
  15. @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 @ApplicationScoped public class GreetingRepository implements PanacheRepository<Greeting> { public Entity findByName(int name) { return find("name", name).firstResult(); } }
  16. @holly_cummins #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
  17. @holly_cummins #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
  18. @holly_cummins #RedHat but … … the reason Fred Brooks’s developers

    wrote 10 lines of code a day wasn’t because they were busy writing boilerplate
  19. #Gradle #RedHat @trisha_gee @holly_cummins What gets measured is what gets

    optimised, make sure to measure the right thing
  20. @holly_cummins #RedHat SPACE • Satisfaction & Well-being • Performance •

    Activity • Communication & Collaboration • Ef fi ciency & Flow
  21. “E ffi ciency means to do things in the right

    way (repeatable, controllable, scalable). E ff ectiveness means to do the right thing (trial and error, risk taking, adaptability). " Lex Sisney - Organizational Physics: The Science of Growing a Business”
  22. Lex Sisney - Organizational Physics: The Science of Growing a

    Business” “E ffi ciency means to do things in the right way (repeatable, controllable, scalable). E ff ectiveness means to do the right thing (trial and error, risk taking, adaptability). Unless you design against it, ef fi ciency will tend to overpower and snuff out effectiveness."
  23. #Gradle #RedHat @trisha_gee @holly_cummins Holly is most productive while •

    Showering • Running Trisha is most productive while • Knitting this slide was written while running
  24. #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
  25. Activities to help your DMN - knitting - running -

    walking - showers - gardening - unloading the dishwasher - colouring
  26. #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
  27. @holly_cummins #RedHat piglet litters grow faster if they play more

    https://www. fl ickr.com/photos/tambako/8746156155
  28. @holly_cummins #RedHat “Your brain at positive is 31% more productive

    than your brain at negative, neutral or stressed. " https://hbr.org/2012/01/positive-intelligence
  29. @holly_cummins #RedHat "Individuals [who just watched a comedy video] have

    approximately 12% greater https://www2.warwick.ac.uk/fac/soc/economics/staff/eproto/workingpapers/happinessproductivity.pdf
  30. #Gradle #RedHat @trisha_gee @holly_cummins zero-sum is not enough “The only

    initiatives that will positively impact performance are ones which increase throughput while simultaneously decreasing cost.”
  31. @holly_cummins #RedHat - be careful how you measure productivity (not

    LOC!) - get rid of drugdery 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