Slide 1

Slide 1 text

1 IBM TechCon 2026 Session D11
 Developer Journey: Accelerating Developer Productivity
 Holly Cummins

Slide 2

Slide 2 text

developer journey: accelerating developer productivity Holly Cummins Senior Technical Staff Member IBM

Slide 3

Slide 3 text

@holly_cummins #IBM

Slide 4

Slide 4 text

@holly_cummins #IBM true story (from the internet)

Slide 5

Slide 5 text

@holly_cummins #IBM true story (from the internet) paying bonuses for lines of code

Slide 6

Slide 6 text

@holly_cummins #IBM

Slide 7

Slide 7 text

@holly_cummins #IBM for (var i = 0; i < 10; i++) { // code }

Slide 8

Slide 8 text

@holly_cummins #IBM for (var i = 0; i < 10; i++) { // code } for ( var i = 0; i < 10; i++ ) { // code }

Slide 9

Slide 9 text

@holly_cummins #IBM the team made comments prettier

Slide 10

Slide 10 text

@holly_cummins #IBM the team made comments prettier __ .__ .__ .__ __ _/ |_| |__ |__| ______ |__| ______ _____ ____ ____ _____ _____ ____ _____/ |_ \ __\ | \| |/ ___/ | |/ ___/ \__ \ _/ ___\/ _ \ / \ / \_/ __ \ / \ __\ | | | Y \ |\___ \ | |\___ \ / __ \_ \ \__( <_> ) Y Y \ Y Y \ ___/| | \ | |__| |___| /__/____ > |__/____ > (____ / \___ >____/|__|_| /__|_| /\___ >___| /__| \/ \/ \/ \/ \/ \/ \/ \/ \/

Slide 11

Slide 11 text

@holly_cummins #IBM the experiment lasted one day

Slide 12

Slide 12 text

@holly_cummins #IBM

Slide 13

Slide 13 text

@holly_cummins #IBM productivity can be hard to measure

Slide 14

Slide 14 text

@holly_cummins #IBM productivity can be hard to measure but we know what it feels like

Slide 15

Slide 15 text

@holly_cummins #IBM it feels good

Slide 16

Slide 16 text

@holly_cummins #IBM

Slide 17

Slide 17 text

@holly_cummins #IBM why are you smiling?

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

#IBM @holly_cummins joy has business value.

Slide 24

Slide 24 text

#IBM @holly_cummins the science bit

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 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 29

Slide 29 text

#IBM @holly_cummins

Slide 30

Slide 30 text

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

Slide 31

Slide 31 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.pdf

Slide 32

Slide 32 text

#IBM @holly_cummins how can we make development feel good?

Slide 33

Slide 33 text

#IBM @holly_cummins inner & outer loop development

Slide 34

Slide 34 text

#IBM @holly_cummins inner & outer loop development Developer

Slide 35

Slide 35 text

#IBM @holly_cummins inner & outer loop development Developer

Slide 36

Slide 36 text

#IBM @holly_cummins inner & outer loop development Inner loop Developer Test Build / Package Code Push Debug

Slide 37

Slide 37 text

#IBM @holly_cummins inner & outer loop development Production Inner loop Developer Test Build / Package Code Push Debug

Slide 38

Slide 38 text

#IBM @holly_cummins inner & outer loop development Production Inner loop Developer Test Build / Package Code Push Debug

Slide 39

Slide 39 text

#IBM @holly_cummins inner & outer loop development Production Inner loop Developer Test Build / Package Code Push Debug

Slide 40

Slide 40 text

#IBM @holly_cummins inner & outer loop development Production Inner loop Developer Test Build / Package Code Push Debug

Slide 41

Slide 41 text

#IBM @holly_cummins inner & outer loop development Production Inner loop Outer loop Developer Test Code Review Build Deploy Security Tests Compliance Build / Package Code Push Debug

Slide 42

Slide 42 text

#IBM @holly_cummins inner & outer loop development Pull/Merge Request Production Inner loop Outer loop Developer Test Code Review Build Deploy Security Tests Compliance Build / Package Code Push Debug

Slide 43

Slide 43 text

#IBM @holly_cummins inner & outer loop development Pull/Merge Request Production Inner loop Outer loop Developer Test Code Review Build Deploy Security Tests Compliance Build / Package Code Push Debug

Slide 44

Slide 44 text

#IBM @holly_cummins inner & outer loop development Pull/Merge Request Production Inner loop Outer loop Developer Test Code Review Build Deploy Security Tests Compliance Build / Package Code Push Debug

Slide 45

Slide 45 text

#IBM @holly_cummins inner & outer loop development Pull/Merge Request Production Inner loop Outer loop Developer Test Code Review Build Deploy Security Tests Compliance Build / Package Code Push Debug

Slide 46

Slide 46 text

#IBM @holly_cummins what makes a good inner loop?

Slide 47

Slide 47 text

#IBM @holly_cummins -fast feedback what makes a good inner loop?

Slide 48

Slide 48 text

#IBM @holly_cummins -fast feedback -low cognitive load what makes a good inner loop?

Slide 49

Slide 49 text

#IBM @holly_cummins -fast feedback -low cognitive load -low setup costs what makes a good inner loop?

Slide 50

Slide 50 text

#IBM @holly_cummins -fast feedback -low cognitive load -low setup costs -fast start -live reload what makes a good inner loop?

Slide 51

Slide 51 text

#IBM @holly_cummins -fast feedback -low cognitive load -low setup costs -fast start -live reload -expressive APIs what makes a good inner loop?

Slide 52

Slide 52 text

#IBM @holly_cummins it’s all about quick feedback loops

Slide 53

Slide 53 text

#IBM @holly_cummins

Slide 54

Slide 54 text

#IBM @holly_cummins websphere liberty quarkus

Slide 55

Slide 55 text

#IBM @holly_cummins websphere liberty quarkus small memory footprint

Slide 56

Slide 56 text

#IBM @holly_cummins websphere liberty quarkus small memory footprint ✔

Slide 57

Slide 57 text

#IBM @holly_cummins websphere liberty quarkus small memory footprint ✔ ✔

Slide 58

Slide 58 text

#IBM @holly_cummins websphere liberty quarkus small memory footprint ✔ ✔ fast start

Slide 59

Slide 59 text

#IBM @holly_cummins websphere liberty quarkus small memory footprint ✔ ✔ fast start ✔

Slide 60

Slide 60 text

#IBM @holly_cummins websphere liberty quarkus small memory footprint ✔ ✔ fast start ✔ ✔

Slide 61

Slide 61 text

#IBM @holly_cummins websphere liberty quarkus small memory footprint ✔ ✔ fast start ✔ ✔ web console

Slide 62

Slide 62 text

#IBM @holly_cummins websphere liberty quarkus small memory footprint ✔ ✔ fast start ✔ ✔ web console ✔

Slide 63

Slide 63 text

#IBM @holly_cummins websphere liberty quarkus small memory footprint ✔ ✔ fast start ✔ ✔ web console ✔ ✔

Slide 64

Slide 64 text

#IBM @holly_cummins websphere liberty quarkus small memory footprint ✔ ✔ fast start ✔ ✔ web console ✔ ✔ live reload

Slide 65

Slide 65 text

#IBM @holly_cummins websphere liberty quarkus small memory footprint ✔ ✔ fast start ✔ ✔ web console ✔ ✔ live reload ✔

Slide 66

Slide 66 text

#IBM @holly_cummins websphere liberty quarkus small memory footprint ✔ ✔ fast start ✔ ✔ web console ✔ ✔ live reload ✔ ✔

Slide 67

Slide 67 text

#IBM @holly_cummins websphere liberty quarkus small memory footprint ✔ ✔ fast start ✔ ✔ web console ✔ ✔ live reload ✔ ✔ support for standards

Slide 68

Slide 68 text

#IBM @holly_cummins websphere liberty quarkus small memory footprint ✔ ✔ fast start ✔ ✔ web console ✔ ✔ live reload ✔ ✔ support for standards ✔

Slide 69

Slide 69 text

#IBM @holly_cummins websphere liberty quarkus small memory footprint ✔ ✔ fast start ✔ ✔ web console ✔ ✔ live reload ✔ ✔ support for standards ✔ ✔

Slide 70

Slide 70 text

#IBM @holly_cummins why developers are like clouds

Slide 71

Slide 71 text

#IBM @holly_cummins Demo: Dev Services

Slide 72

Slide 72 text

@holly_cummins #IBM let’s talk about quarkus

Slide 73

Slide 73 text

#IBM @holly_cummins

Slide 74

Slide 74 text

live coding

Slide 75

Slide 75 text

live coding less dev time wasted waiting for full build + launch cycles

Slide 76

Slide 76 text

#IBM @holly_cummins

Slide 77

Slide 77 text

#IBM @holly_cummins easy… right?

Slide 78

Slide 78 text

#IBM @holly_cummins

Slide 79

Slide 79 text

#IBM @holly_cummins what about external dependencies?

Slide 80

Slide 80 text

#IBM @holly_cummins what about external dependencies? -database

Slide 81

Slide 81 text

#IBM @holly_cummins what about external dependencies? -database -messaging system

Slide 82

Slide 82 text

#IBM @holly_cummins what about external dependencies? -database -messaging system -observability stack

Slide 83

Slide 83 text

#IBM @holly_cummins https://testcontainers.org

Slide 84

Slide 84 text

#IBM @holly_cummins Dev Services ❤

Slide 85

Slide 85 text

#IBM @holly_cummins Demo: Dev Services

Slide 86

Slide 86 text

#IBM @holly_cummins

Slide 87

Slide 87 text

#IBM @holly_cummins

Slide 88

Slide 88 text

boilerplate code

Slide 89

Slide 89 text

@holly_cummins #IBM

Slide 90

Slide 90 text

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

Slide 91

Slide 91 text

@holly_cummins #IBM context costs

Slide 92

Slide 92 text

@holly_cummins #IBM human-in-the-loop code review costs

Slide 93

Slide 93 text

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

Slide 94

Slide 94 text

@holly_cummins #IBM Pull/Merge Request Outer loop Code Review Build Deploy Security Tests Compliance

Slide 95

Slide 95 text

@holly_cummins #IBM https://www.cjroth.com/blog/2026-02-18-building-an-elite-engineering-culture pr review time increased 91% in high AI-adoption teams

Slide 96

Slide 96 text

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

Slide 97

Slide 97 text

@holly_cummins #IBM the dream

Slide 98

Slide 98 text

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

Slide 99

Slide 99 text

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

Slide 100

Slide 100 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 101

Slide 101 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 102

Slide 102 text

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

Slide 103

Slide 103 text

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

Slide 104

Slide 104 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 105

Slide 105 text

#IBM @holly_cummins testcontainers integration … without quarkus quarkus

Slide 106

Slide 106 text

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

Slide 107

Slide 107 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 108

Slide 108 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 109

Slide 109 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 110

Slide 110 text

@holly_cummins #IBM of course … MCP

Slide 111

Slide 111 text

@holly_cummins #IBM no matter how you create it … code doesn’t count unless it gets to prod

Slide 112

Slide 112 text

#IBM @holly_cummins Pull/Merge Request Production Inner loop Outer loop Developer Test Code Review Build Deploy Security Tests Compliance Build / Package Code Push Debug

Slide 113

Slide 113 text

#IBM @holly_cummins Pull/Merge Request Production Inner loop Outer loop Developer Test Code Review Build Deploy Security Tests Compliance Build / Package Code Push Debug code doesn’t count unless it gets to prod

Slide 114

Slide 114 text

@holly_cummins #IBM security manageability observability

Slide 115

Slide 115 text

#IBM @holly_cummins Demo: Dev Services

Slide 116

Slide 116 text

@holly_cummins #IBM the bigger picture

Slide 117

Slide 117 text

@holly_cummins #IBM the perils of toil

Slide 118

Slide 118 text

#IBM @holly_cummins get rid of boring stuff

Slide 119

Slide 119 text

#IBM @holly_cummins it’s probably waste get rid of boring stuff

Slide 120

Slide 120 text

#IBM @holly_cummins it’s probably waste get rid of boring stuff

Slide 121

Slide 121 text

@holly_cummins #IBM

Slide 122

Slide 122 text

@holly_cummins #IBM repetitive

Slide 123

Slide 123 text

@holly_cummins #IBM meaningless repetitive

Slide 124

Slide 124 text

@holly_cummins #IBM meaningless repetitive

Slide 125

Slide 125 text

@holly_cummins #IBM low-value meaningless repetitive

Slide 126

Slide 126 text

@holly_cummins #IBM low-value meaningless repetitive repetitive

Slide 127

Slide 127 text

@holly_cummins #IBM low-value meaningless repetitive repetitive repetitive

Slide 128

Slide 128 text

@holly_cummins #IBM low-value meaningless repetitive repetitive repetitive

Slide 129

Slide 129 text

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

Slide 130

Slide 130 text

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

Slide 131

Slide 131 text

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

Slide 132

Slide 132 text

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

Slide 133

Slide 133 text

@holly_cummins #IBM meetings

Slide 134

Slide 134 text

@holly_cummins #IBM manual handoffs

Slide 135

Slide 135 text

@holly_cummins #IBM fiddly setups

Slide 136

Slide 136 text

@holly_cummins #IBM boilerplate code

Slide 137

Slide 137 text

#IBM @holly_cummins we can do development better (and everyone wins)

Slide 138

Slide 138 text

67 QUESTIONS? Take the survey before heading to the next session.