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

Developer Joy == Developer Productivity (really!)

Holly Cummins
September 14, 2024

Developer Joy == Developer Productivity (really!)

Ever been told “work is not a place to be happy?” It’s not true! As developers, our job is to be productive, and we’re most productive when we’re in flow, doing friction-free creation. The good news is that new technologies help us do more, with less effort. (And only some of them are LLMs.) These developer tools and frameworks make us productive, and they bring joy. In this talk, Holly will present a number of productivity tips for the lazy, happy, developer.

Holly Cummins

September 14, 2024
Tweet

More Decks by Holly Cummins

Other Decks in Programming

Transcript

  1. #RedHat @holly_cummins piglet litters grow faster if they play more

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

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

    approximately 12% greater productivity." https:/ /www2.warwick.ac.uk/fac/soc/economics/staff/eproto/workingpapers/happinessproductivity.pdf
  4. @holly_cummins #RedHat what should be automated? - tasks that are

    error-prone - tasks that people can do half-asleep
  5. @holly_cummins #RedHat bonus: templates automate all the bits needed to

    start a new project (CI, build, boilerplate code …)
  6. @holly_cummins #RedHat → productivity tip for the lazy, happy, developer

    go beyond infrastructure automation automate knowledge
  7. #RedHat @holly_cummins 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?
  8. #RedHat @holly_cummins 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?
  9. #RedHat @holly_cummins 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
  10. #RedHat @holly_cummins 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? the solution? “auto-Guillaume” Guillaume
  11. @holly_cummins #RedHat → productivity tip for the lazy, happy, developer

    go beyond infrastructure automation make coding better
  12. @holly_cummins #RedHat </> build time runtime load and parse •

    config files • properties • yaml • xml • etc. Java dynamism
  13. @holly_cummins #RedHat @ @ </> build time runtime • classpath

    scanning and annotation discovery • attempt to load class to enable/disable features Java dynamism
  14. @holly_cummins #RedHat @ @ </> build time runtime build a

    metamodel of the world Java dynamism
  15. @holly_cummins #RedHat @ @ </> build time runtime start •

    thread pools • I/O • etc. Java dynamism
  16. @holly_cummins #RedHat what if we start the application more than

    once? @ @ </> @ @ </> @ @ </> @ @ </> so much work gets redone every time
  17. @holly_cummins #RedHat what if we initialize at build time? @

    @ </> build time runtime start • thread pools • I/O • etc.
  18. @holly_cummins #RedHat what if we initialize at build time? @

    @ </> build time runtime ready to do work! start • thread pools • I/O • etc.
  19. @holly_cummins #RedHat don’t make humans tell the computer what the

    computer already knows the dream is now achievable
  20. @holly_cummins #RedHat package com.example; import org.jboss.logging.Logger; public class Thing {

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

    private static final Logger log = Logger.getLogger(Thing.class); public void doSomething() { log.info("It works!"); } } import io.quarkus.logging.Log; Log
  22. #RedHat @holly_cummins testcontainers integration … without quarkus @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)
  23. @holly_cummins #RedHat what if… you could inherit boilerplate Hibernate queries

    from a superclass, instead of having to write them all? example: hibernate
  24. @holly_cummins #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. @holly_cummins #RedHat DAO @ApplicationScoped public class GreetingRepository implements PanacheRepository<Greeting> {

    public Entity findByName(int name) { return find("name", name).firstResult(); } } example: hibernate with panache
  26. @holly_cummins #RedHat this isn’t using gen AI to automate code

    generation this is making the need for the code go away
  27. @holly_cummins #RedHat but if you do have to write boring

    code … gen AI can help a lot. gen AI can (sometimes) help a lot.
  28. #RedHat @holly_cummins I am most productive while - showering -

    running this slide was written while running
  29. @holly_cummins #RedHat → productivity tip for the lazy, happy, developer

    use voice memo to capture all the work you do while running * the text on this slide was originally a voice memo
  30. @holly_cummins #RedHat but what if you’re not debugging- in-your-head while

    running? what if you’re feeding chocolate into the office fan, to see what happens?
  31. #RedHat @holly_cummins takeaways - joy has business value - get

    rid of dumb work - if you can’t get rid of the work, make computers do the work
  32. #RedHat @holly_cummins takeaways - joy has business value - get

    rid of dumb work - if you can’t get rid of the work, make computers do the work - don’t make humans tell the computer things the computer already knows
  33. #RedHat @holly_cummins takeaways - joy has business value - get

    rid of dumb work - if you can’t get rid of the work, make computers do the work - don’t make humans tell the computer things the computer already knows - get rid of flab from the programming model (like quarkus does!)
  34. #RedHat @holly_cummins takeaways - joy has business value - get

    rid of dumb work - if you can’t get rid of the work, make computers do the work - don’t make humans tell the computer things the computer already knows - get rid of flab from the programming model (like quarkus does!) - measure the important metric, not the one that’s easy to measure