Slide 1

Slide 1 text

developer joy: the new paradigm Holly Cummins Senior Technical Staff Member IBM

Slide 2

Slide 2 text

@holly_cummins #IBM

Slide 3

Slide 3 text

@holly_cummins #IBM why are you smiling?

Slide 4

Slide 4 text

@holly_cummins #IBM why are you smiling? work is not a place to be happy!

Slide 5

Slide 5 text

#IBM @holly_cummins ΑΡΙΣΤΟΤΈΛΗΣ

Slide 6

Slide 6 text

#IBM @holly_cummins «τελειοῖ δὲ τὴν ἐνέργειαν ἡἡδονή» ΑΡΙΣΤΟΤΈΛΗΣ

Slide 7

Slide 7 text

#IBM @holly_cummins «Η ευχαρίστηση στην δουλειά βάζει την τελειότητα στην εργασία» ΑΡΙΣΤΟΤΈΛΗΣ

Slide 8

Slide 8 text

#IBM @holly_cummins “Pleasure in the job puts perfection in the work.” Aristotle

Slide 9

Slide 9 text

#IBM @holly_cummins joy has business value.

Slide 10

Slide 10 text

#IBM @holly_cummins the science bit

Slide 11

Slide 11 text

#IBM @holly_cummins piglet litters grow faster if they play more https://www.flickr.com/photos/tambako/8746156155

Slide 12

Slide 12 text

#IBM @holly_cummins job satisfaction is the no. 1 predictor of organizational performance

Slide 13

Slide 13 text

@holly_cummins #IBM research shows: fun is good for business.

Slide 14

Slide 14 text

@holly_cummins #IBM research shows: fun is good for business.

Slide 15

Slide 15 text

#IBM @holly_cummins https://hbr.org/2012/01/positive-intelligence

Slide 16

Slide 16 text

#IBM @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

Slide 17

Slide 17 text

#IBM @holly_cummins

Slide 18

Slide 18 text

#IBM @holly_cummins https://www2.warwick.ac.uk/fac/soc/economics/staff/eproto/workingpapers/happinessproductivity.pd

Slide 19

Slide 19 text

#IBM @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.pd

Slide 20

Slide 20 text

@holly_cummins #IBM so how do developers become productive?

Slide 21

Slide 21 text

@holly_cummins #IBM so how do developers become productive? joyful?

Slide 22

Slide 22 text

@holly_cummins #IBM lack of joy creeps up on us productivity

Slide 23

Slide 23 text

@holly_cummins #IBM lack of joy creeps up on us

Slide 24

Slide 24 text

@holly_cummins #IBM → productivity tip for the lazy, happy, developer get rid of boring stuff

Slide 25

Slide 25 text

@holly_cummins #IBM → productivity tip for the lazy, happy, developer it’s probably waste get rid of boring stuff

Slide 26

Slide 26 text

@holly_cummins #IBM

Slide 27

Slide 27 text

@holly_cummins #IBM repetitive

Slide 28

Slide 28 text

@holly_cummins #IBM meaningless repetitive

Slide 29

Slide 29 text

@holly_cummins #IBM meaningless repetitive

Slide 30

Slide 30 text

@holly_cummins #IBM low-value meaningless repetitive

Slide 31

Slide 31 text

@holly_cummins #IBM low-value meaningless repetitive repetitive

Slide 32

Slide 32 text

@holly_cummins #IBM low-value meaningless repetitive repetitive repetitive

Slide 33

Slide 33 text

@holly_cummins #IBM low-value meaningless repetitive repetitive repetitive

Slide 34

Slide 34 text

@holly_cummins #IBM low-value meaningless repetitive repetitive repetitive redundant

Slide 35

Slide 35 text

@holly_cummins #IBM low-value meaningless repetitive repetitive repetitive repetitive redundant

Slide 36

Slide 36 text

@holly_cummins #IBM repetitive low-value meaningless repetitive repetitive repetitive repetitive redundant

Slide 37

Slide 37 text

@holly_cummins #IBM repetitive low-value meaningless repetitive repetitive repetitive repetitive redundant

Slide 38

Slide 38 text

@holly_cummins #IBM manual handoffs

Slide 39

Slide 39 text

@holly_cummins #IBM boilerplate code

Slide 40

Slide 40 text

@holly_cummins #IBM manual status updates

Slide 41

Slide 41 text

@holly_cummins #IBM meetings

Slide 42

Slide 42 text

@holly_cummins #IBM → productivity tip for the lazy, happy, developer be incremental

Slide 43

Slide 43 text

@holly_cummins #IBM don’t inflict your non-incrementalness on your colleagues

Slide 44

Slide 44 text

#IBM @holly_cummins “toil” SRE is a discipline dedicated to eliminating toil from ops because toil isn’t worth it.

Slide 45

Slide 45 text

@holly_cummins #IBM → productivity tip for the lazy, happy, developer make computers do the hard work

Slide 46

Slide 46 text

@holly_cummins #IBM → productivity tip for the lazy, happy, developer make computers do the boring stuff

Slide 47

Slide 47 text

@holly_cummins #IBM (yet) computers don’t expect to have fun

Slide 48

Slide 48 text

@holly_cummins #IBM automation revenge! (yet) computers don’t expect to have fun happy, lazy developer

Slide 49

Slide 49 text

@holly_cummins #IBM bonus: making computers do stuff is really fun

Slide 50

Slide 50 text

@holly_cummins #IBM → productivity tip for the lazy, happy, developer automate all the things

Slide 51

Slide 51 text

@holly_cummins #IBM what should be automated? - tasks that are error-prone - tasks that people can do half-asleep

Slide 52

Slide 52 text

@holly_cummins #IBM

Slide 53

Slide 53 text

@holly_cummins #IBM you can do better than bash

Slide 54

Slide 54 text

@holly_cummins #IBM → productivity tip for the lazy, happy, developer go beyond infrastructure automation automate knowledge

Slide 55

Slide 55 text

#IBM @holly_cummins

Slide 56

Slide 56 text

#IBM @holly_cummins Guillaume, my CI was red. Is there a known failure in the vertx suite?

Slide 57

Slide 57 text

#IBM @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?

Slide 58

Slide 58 text

#IBM @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?

Slide 59

Slide 59 text

#IBM @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

Slide 60

Slide 60 text

#IBM @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

Slide 61

Slide 61 text

#IBM @holly_cummins the solution? “auto-Guillaume” with develocity

Slide 62

Slide 62 text

#IBM @holly_cummins the solution? “auto-Guillaume” with develocity

Slide 63

Slide 63 text

#IBM @holly_cummins the solution? “auto-Guillaume” with develocity

Slide 64

Slide 64 text

#IBM @holly_cummins the solution? “auto-Guillaume” with develocity

Slide 65

Slide 65 text

#IBM @holly_cummins

Slide 66

Slide 66 text

@holly_cummins #IBM → productivity tip for the lazy, happy, developer go beyond infrastructure automation make coding better

Slide 67

Slide 67 text

@holly_cummins #IBM let’s talk about quarkus

Slide 68

Slide 68 text

@holly_cummins #IBM

Slide 69

Slide 69 text

@holly_cummins #IBM Java dynamism

Slide 70

Slide 70 text

@holly_cummins #IBM build time Java dynamism

Slide 71

Slide 71 text

@holly_cummins #IBM build time runtime Java dynamism

Slide 72

Slide 72 text

@holly_cummins #IBM build time runtime Java dynamism

Slide 73

Slide 73 text

@holly_cummins #IBM packaging
 (maven, gradle…) build time runtime Java dynamism

Slide 74

Slide 74 text

@holly_cummins #IBM build time runtime Java dynamism

Slide 75

Slide 75 text

@holly_cummins #IBM build time runtime Java dynamism

Slide 76

Slide 76 text

@holly_cummins #IBM build time runtime load and parse • config files • properties • yaml • xml • etc. Java dynamism

Slide 77

Slide 77 text

@holly_cummins #IBM build time runtime Java dynamism

Slide 78

Slide 78 text

@holly_cummins #IBM @
 @ build time runtime • classpath scanning and annotation discovery • attempt to load class to enable/disable features Java dynamism

Slide 79

Slide 79 text

@holly_cummins #IBM @
 @ build time runtime Java dynamism

Slide 80

Slide 80 text

@holly_cummins #IBM @
 @ build time runtime build a metamodel of the world Java dynamism

Slide 81

Slide 81 text

@holly_cummins #IBM @
 @ build time runtime Java dynamism

Slide 82

Slide 82 text

@holly_cummins #IBM @
 @ build time runtime start • thread pools • I/O • etc. Java dynamism

Slide 83

Slide 83 text

@holly_cummins #IBM @
 @ build time runtime ready to do work! Java dynamism

Slide 84

Slide 84 text

@holly_cummins #IBM what if we start the application more than once? @
 @

Slide 85

Slide 85 text

@holly_cummins #IBM what if we start the application more than once? @
 @ @
 @

Slide 86

Slide 86 text

@holly_cummins #IBM what if we start the application more than once? @
 @ @
 @ @
 @

Slide 87

Slide 87 text

@holly_cummins #IBM what if we start the application more than once? @
 @ @
 @ @
 @ @
 @

Slide 88

Slide 88 text

@holly_cummins #IBM what if we start the application more than once? @
 @ @
 @ @
 @ @
 @

Slide 89

Slide 89 text

@holly_cummins #IBM what if we start the application more than once? @
 @ @
 @ @
 @ @
 @ so much work gets redone every time

Slide 90

Slide 90 text

@holly_cummins #IBM what if we initialize at build time? @
 @ build time runtime

Slide 91

Slide 91 text

@holly_cummins #IBM what if we initialize at build time? @
 @ build time runtime

Slide 92

Slide 92 text

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

Slide 93

Slide 93 text

@holly_cummins #IBM what if we initialize at build time? @
 @ build time runtime ready to do work! start • thread pools • I/O • etc.

Slide 94

Slide 94 text

@holly_cummins #IBM repeated starts are now efficient @
 @

Slide 95

Slide 95 text

@holly_cummins #IBM repeated starts are now efficient @
 @

Slide 96

Slide 96 text

@holly_cummins #IBM repeated starts are now efficient @
 @

Slide 97

Slide 97 text

@holly_cummins #IBM repeated starts are now efficient @
 @

Slide 98

Slide 98 text

@holly_cummins #IBM repeated starts are now efficient @
 @

Slide 99

Slide 99 text

@holly_cummins #IBM repeated starts are now efficient @
 @

Slide 100

Slide 100 text

@holly_cummins #IBM repeated starts are now efficient @
 @ less wasted work

Slide 101

Slide 101 text

@holly_cummins #IBM outcome

Slide 102

Slide 102 text

@holly_cummins #IBM quarkus applications outcome

Slide 103

Slide 103 text

@holly_cummins #IBM quarkus applications - start faster outcome

Slide 104

Slide 104 text

@holly_cummins #IBM quarkus applications - start faster - use less memory outcome

Slide 105

Slide 105 text

@holly_cummins #IBM quarkus applications - start faster - use less memory - have higher throughput outcome

Slide 106

Slide 106 text

@holly_cummins #IBM

Slide 107

Slide 107 text

@holly_cummins #IBM adding developer experience improvements here is expensive

Slide 108

Slide 108 text

@holly_cummins #IBM adding developer experience improvements here is expensive adding developer experience improvements here is cheap

Slide 109

Slide 109 text

@holly_cummins #IBM the dream

Slide 110

Slide 110 text

@holly_cummins #IBM don’t make humans tell the computer what the computer already knows the dream

Slide 111

Slide 111 text

@holly_cummins #IBM don’t make humans tell the computer what the computer already knows the dream is now achievable

Slide 112

Slide 112 text

@holly_cummins #IBM 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!"); } }

Slide 113

Slide 113 text

@holly_cummins #IBM 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

Slide 114

Slide 114 text

@holly_cummins #IBM public String hello(@QueryParam("name") String name) {

Slide 115

Slide 115 text

@holly_cummins #IBM public String hello(@RestQuery String name) {

Slide 116

Slide 116 text

#IBM @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)

Slide 117

Slide 117 text

#IBM @holly_cummins testcontainers integration … without quarkus quarkus

Slide 118

Slide 118 text

@holly_cummins #IBM what if… you could inherit boilerplate Hibernate queries from a superclass, instead of having to write them all? example: hibernate

Slide 119

Slide 119 text

@holly_cummins #IBM @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 list(String query, Sort sort, Object... params) { return null; } Stream stream(String query, Object... params) { return null; } long count() { return 0; } long count(String query, Object... params) { return 0; } } example: hibernate with panache

Slide 120

Slide 120 text

@holly_cummins #IBM DAO @ApplicationScoped public class GreetingRepository implements PanacheRepository { public Entity findByName(int name) { return find("name", name).firstResult(); } } example: hibernate with panache

Slide 121

Slide 121 text

@holly_cummins #IBM machine efficiency unlocked human efficiency

Slide 122

Slide 122 text

@holly_cummins #IBM machine efficiency unlocked human efficiency and human joy

Slide 123

Slide 123 text

@holly_cummins #IBM what about the ai-lephant in the room?

Slide 124

Slide 124 text

@holly_cummins #IBM

Slide 125

Slide 125 text

@holly_cummins #IBM I don’t need a nice programming model anymore, AI will vibe- code it all

Slide 126

Slide 126 text

@holly_cummins #IBM this isn’t using gen AI to automate code generation this is making the need for the code go away

Slide 127

Slide 127 text

@holly_cummins #IBM

Slide 128

Slide 128 text

@holly_cummins #IBM

Slide 129

Slide 129 text

@holly_cummins #IBM

Slide 130

Slide 130 text

@holly_cummins #IBM

Slide 131

Slide 131 text

@holly_cummins #IBM

Slide 132

Slide 132 text

@holly_cummins #IBM

Slide 133

Slide 133 text

@holly_cummins #IBM

Slide 134

Slide 134 text

@holly_cummins #IBM

Slide 135

Slide 135 text

@holly_cummins #IBM 70% unnecessary code

Slide 136

Slide 136 text

@holly_cummins #IBM 70% unnecessary code code isn’t an asset it’s a liability

Slide 137

Slide 137 text

@holly_cummins #IBM we spend far more time reading code than writing it.

Slide 138

Slide 138 text

@holly_cummins #IBM story: COBOL to Java auto-conversion

Slide 139

Slide 139 text

@holly_cummins #IBM

Slide 140

Slide 140 text

@holly_cummins #IBM

Slide 141

Slide 141 text

@holly_cummins #IBM but if you do have to write boring code … gen AI can help a lot.

Slide 142

Slide 142 text

@holly_cummins #IBM but if you do have to write boring code … gen AI can help a lot. gen AI can help a lot.

Slide 143

Slide 143 text

@holly_cummins #IBM how do you know if you’re doing it right?

Slide 144

Slide 144 text

#IBM @holly_cummins we can measure “time at the computer!”

Slide 145

Slide 145 text

#IBM @holly_cummins we can measure “time at the computer!” desks are not the only place value is created

Slide 146

Slide 146 text

#IBM @holly_cummins we can measure “time at the computer!” desks are not the only place value is created

Slide 147

Slide 147 text

#IBM @holly_cummins

Slide 148

Slide 148 text

#IBM @holly_cummins 14% took showers speci fi cally for the purpose of coming up with ideas

Slide 149

Slide 149 text

#IBM @holly_cummins I am most productive while - showering - running

Slide 150

Slide 150 text

#IBM @holly_cummins I am most productive while - showering - running this slide was written while running

Slide 151

Slide 151 text

@holly_cummins #IBM → 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

Slide 152

Slide 152 text

@holly_cummins #IBM

Slide 153

Slide 153 text

@holly_cummins #IBM but what if you’re not debugging-in-your-head while running?

Slide 154

Slide 154 text

@holly_cummins #IBM but what if you’re not debugging-in-your-head while running? what if you’re feeding chocolate

Slide 155

Slide 155 text

@holly_cummins #IBM 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?

Slide 156

Slide 156 text

@holly_cummins #IBM

Slide 157

Slide 157 text

@holly_cummins #IBM we work in a creative industry

Slide 158

Slide 158 text

@holly_cummins #IBM we work in a creative industry play helps creativity

Slide 159

Slide 159 text

#IBM @holly_cummins creativity brings us joy

Slide 160

Slide 160 text

@holly_cummins #IBM productivity happiness

Slide 161

Slide 161 text

@holly_cummins #IBM it’s not a trade-off. productivity happiness

Slide 162

Slide 162 text

@holly_cummins #IBM it’s not a trade-off. productivity happiness it’s a double-win.

Slide 163

Slide 163 text

@holly_cummins #IBM ours is the only profession where “lazy” is a compliment

Slide 164

Slide 164 text

@holly_cummins #IBM we need to make it a profession where “happy” is also a compliment

Slide 165

Slide 165 text

#IBM @holly_cummins

Slide 166

Slide 166 text

#IBM @holly_cummins the new paradigms

Slide 167

Slide 167 text

#IBM @holly_cummins the new paradigms - joy has business value

Slide 168

Slide 168 text

#IBM @holly_cummins the new paradigms - joy has business value - get rid of dumb work

Slide 169

Slide 169 text

#IBM @holly_cummins the new paradigms - joy has business value - get rid of dumb work - if you can’t get rid of the work, make computers do the work

Slide 170

Slide 170 text

#IBM @holly_cummins the new paradigms - 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

Slide 171

Slide 171 text

#IBM @holly_cummins the new paradigms - 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!)

Slide 172

Slide 172 text

#IBM @holly_cummins the new paradigms - 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

Slide 173

Slide 173 text

@holly_cummins #IBM slides https://hollycummins.com/developer-joy-paradigm-lsdd/ @hollycummins.com