CINXE.COM
If Architectural Experimentation Is So Great, Why Aren’t You Doing It? - InfoQ
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <!-- Google Optimize Anti-flicker snippet (recommended) --> <style>.async-hide { opacity: 0 !important} </style> <style>.promo{background:#222528;position:fixed;z-index:1001!important;left:0;top:0;right:0;max-height:48px;min-height:48px;padding-top:0!important;padding-bottom:0!important}.promo,.promo p{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.promo p{font-size:.8125rem;line-height:1rem;color:#fff;margin-bottom:0;margin-top:0;margin:0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;font-weight:700}@media only screen and (max-width:650px){.promo p{font-size:.6875rem}}.promo span{overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.promo a{color:#fff!important;text-decoration:underline!important}.promo a.btn{background:#d0021b;padding:7px 20px;text-decoration:none!important;font-weight:700;margin-left:10px;margin-right:10px;white-space:nowrap;border-radius:5px}@media only screen and (max-width:650px){.promo a.btn{font-size:.6875rem;padding:7px 10px}}.promo.container{padding-top:8px;padding-bottom:8px}@media only screen and (min-width:1050px){.promo.container{padding-top:0;padding-bottom:0}}.promo .actions{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.promo .actions__left{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.promo .actions__right{-ms-flex-preferred-size:40px;flex-basis:40px;margin-top:0;margin-bottom:0;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.promo.hidden{display:none}.promo.show{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.promo.show .container__inner{-webkit-box-flex:1;-ms-flex:1;flex:1}.promo.fixed{position:fixed}.promo.show+header.header{margin-top:48px}.header{background:#fff;-webkit-box-shadow:0 1px 0 #dde2e5;box-shadow:0 1px 0 #dde2e5}.header .actions__left,.header__bottom__events{max-width:100%!important;margin:0}.header .header__events-all{margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}.header .header__events-all .header__event-slot{-webkit-box-flex:1;-ms-flex:1 100%;flex:1 100%;border-right:1px solid #dde2e5;margin-top:3px;margin-bottom:3px;padding-left:15px;text-align:left;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-right:5px;min-width:300px}.header .header__events-all .header__event-slot:hover{text-decoration:none!important}.header .header__events-all .header__event-slot img{min-width:40px;height:40px}.header .header__events-all .header__event-slot div{margin-left:10px}.header .header__events-all .header__event-slot span{font-weight:700!important;font-size:.75rem;margin-bottom:0!important;margin-top:0;display:block;line-height:1.125rem;text-align:left}.header .header__events-all .header__event-slot p{font-weight:400;font-size:.625rem;line-height:130%!important;color:#495057!important;margin:0}@media only screen and (min-width:1050px){.header .header__events-all .header__event-slot p{font-size:.625rem}}.header .header__events-all .header__event-slot:first-child{padding-left:0}.header .header__events-all .header__event-slot:last-child{padding-right:0;border-right:0}@media only screen and (min-width:1050px){.header__bottom,.header__middle,.header__top{position:relative;white-space:nowrap}}.header__top{padding:10px 0}@media only screen and (min-width:800px){.header__top{padding:5px 0}}.header__bottom{padding:5px 0;z-index:29;max-width:100%}.header__bottom a{font-size:.8125rem}.header__bottom .trending{margin-left:0;margin-right:0}.header__bottom .actions{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.header__bottom .actions__left{max-width:calc(100% + 8px)}@media only screen and (min-width:800px){.header__bottom .actions__left{max-width:calc(100% + 24px)}}.header__bottom .actions__right{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:none}@media only screen and (min-width:1050px){.header__bottom .actions__right{display:-webkit-box;display:-ms-flexbox;display:flex}}.header__middle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}@media only screen and (min-width:1050px){.header__middle{-ms-flex-wrap:nowrap;flex-wrap:nowrap}}.header__top .actions__left{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center}@media only screen and (min-width:1050px){.header__top .actions__right{max-width:430px}}.no-style.header__nav li:nth-child(3){font-weight:700}.no-style.header__nav li:nth-child(3) a{color:#0e5ef1!important}.header__bottom__events::after{background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),to(#fff));background:linear-gradient(90deg,rgba(255,255,255,0) 0,#fff 100%);content:'';position:absolute;height:60px;right:10px;width:25px}@media only screen and (min-width:1050px){.header__bottom__events::after{display:none}}.contribute-link{font-weight:400;font-size:.6875rem;color:#000!important;position:relative;padding-left:10px}.contribute-link:hover{color:#00791d!important;text-decoration:none!important}.contribute-link::before{content:'';width:1px;height:12px;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:rgba(0,0,0,.1);left:-1px}.my-0{margin-top:0!important;margin-bottom:0!important}.header__desc.my-0{margin-left:0}.header__bottom__events .actions__left{max-width:100%!important;overflow-x:scroll;-ms-overflow-style:none;scrollbar-width:none;display:block;scroll-behavior:smooth;min-width:100%}.header__bottom__events .actions__left::-webkit-scrollbar{display:none}.header__bottom__events .actions__left:-webkit-scrollbar-thumb{background:#fff}.logo{line-height:1rem}.header{position:relative;z-index:41;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.header .input:focus,.header input[type=password]:focus,.header input[type=text]:focus{border:1px solid #00791d}.header a:not(.button):not(.login__action):not(.active){text-decoration:none;color:#222}.header a:not(.button):not(.login__action):not(.active):hover{text-decoration:underline;color:#222}.header__items{display:none;-ms-flex-wrap:wrap;flex-wrap:wrap}@media only screen and (min-width:1050px){.header__items{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.header__items nav{position:relative;background:0 0;padding:0;left:0;top:0;line-height:inherit;display:block;-webkit-box-shadow:none;box-shadow:none;max-width:100%;max-height:80px}}.header__items>div{width:100%;margin-bottom:32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}@media only screen and (min-width:552px){.header__items>div:not(:nth-last-child(-n+2)){margin-bottom:32px}}@media only screen and (min-width:552px) and (max-width:1050px){.header__items>div{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-ms-flex-preferred-size:calc(99.7% * 1/2 - (32px - 32px * 1/2));flex-basis:calc(99.7% * 1/2 - (32px - 32px * 1/2));max-width:calc(99.7% * 1/2 - (32px - 32px * 1/2));width:calc(99.7% * 1/2 - (32px - 32px * 1/2))}.header__items>div:nth-child(1n){margin-right:32px;margin-left:0}.header__items>div:last-child{margin-right:0}.header__items>div:nth-child(2n){margin-right:0;margin-left:auto}}@media only screen and (min-width:800px) and (max-width:1050px){.header__items>div{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-ms-flex-preferred-size:calc(99.7% * 1/4 - (32px - 32px * 1/4));flex-basis:calc(99.7% * 1/4 - (32px - 32px * 1/4));max-width:calc(99.7% * 1/4 - (32px - 32px * 1/4));width:calc(99.7% * 1/4 - (32px - 32px * 1/4))}.header__items>div:nth-child(1n){margin-right:32px;margin-left:0}.header__items>div:last-child{margin-right:0}.header__items>div:nth-child(4n){margin-right:0;margin-left:auto}}@media only screen and (min-width:1050px){.header__items>div{margin-bottom:0!important;margin-right:0!important;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}.header__items .language__switcher{display:none}.header__items .language__switcher .li-nav.active>a,.header__items .language__switcher>li.active>a{color:#fff!important}.header__items .language__switcher .li-nav.active>a:hover,.header__items .language__switcher>li.active>a:hover{color:#fff!important;background:#0e5ef1}.header__items .language__switcher .li-nav:hover>a,.header__items .language__switcher>li:hover>a{color:#fff}.header+main{display:block;min-height:210px;-webkit-transition:margin .15s ease;transition:margin .15s ease;margin-top:0!important}.header--hide .header+main{margin-top:50px}.header--hide .header__toggle{opacity:0;top:20px;visibility:hidden}.header--hide .header__logo{max-height:0}.header--hide .header__middle,.header--hide .header__top{max-height:0;overflow:hidden;padding-top:0;padding-bottom:0;border-color:transparent}.header--hide .header__bottom .vue-portal-target{top:3px;right:0;bottom:auto;left:auto;position:absolute}.header__middle,.header__top{-webkit-transition:all .15s ease;transition:all .15s ease}.header__middle{border-bottom:1px solid rgba(0,0,0,.1);z-index:33}.header__middle .vue-portal-target{width:100%}@media only screen and (min-width:1050px){.header__middle .vue-portal-target{display:none}}@media only screen and (min-width:1050px){.header__middle{line-height:5.75rem;text-align:left;padding:0;z-index:30}.header__middle .widget__heading{display:none}}.header__top>.actions__left{display:none}@media only screen and (min-width:1050px){.header__top>.actions__left{display:-webkit-box;display:-ms-flexbox;display:flex}}.header__top>.actions__right{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-right:0;margin-top:0;margin-bottom:0;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.header__top>.actions__right .dropdown__holder{width:calc(100vw - 16px);max-height:80vh}@media only screen and (min-width:600px){.header__top>.actions__right .dropdown__holder{width:auto}}.header__top>.actions__right>*{margin:0}.header__top>.actions__right .search{display:none}@media only screen and (min-width:1050px){.header__top>.actions__right>*{display:-webkit-box;display:-ms-flexbox;display:flex;white-space:nowrap}.header__top>.actions__right .search{display:block}}.header__top .user__login{display:block}.header__top .user__login>.button,.header__top .user__login>button{border-top-right-radius:0;border-bottom-right-radius:0}@media only screen and (min-width:1050px){.header__top{position:relative;right:auto;width:100%}}.header__logo{max-width:165px;position:absolute;top:8px;overflow:hidden;-webkit-transition:all .1s ease;transition:all .1s ease;z-index:32;line-height:2.25rem;height:36px;width:100px;margin-left:50px;-ms-flex-preferred-size:190px;flex-basis:190px}@media only screen and (min-width:800px){.header__logo{top:4px}}@media only screen and (min-width:1050px){.header__logo{position:relative;top:0;overflow:visible;margin-right:20px;margin-left:0;line-height:3.125rem;height:50px}.header__logo>*{width:165px}}@media only screen and (min-width:1280px){.header__logo{margin-right:30px}}.header__desc,.header__more>button{text-transform:capitalize;color:#666;letter-spacing:0;font-size:0;font-weight:400;line-height:1.5rem;vertical-align:top;font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI Variable","Segoe UI",system-ui,ui-sans-serif,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";-webkit-transition:font-size .15s ease-in-out;transition:font-size .15s ease-in-out}@media only screen and (min-width:1050px){.header__desc,.header__more>button{font-size:.6875rem}}.header__desc{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;position:relative;width:auto}.header__topics{white-space:nowrap;float:right;position:relative}.header__topics *{display:inline-block;vertical-align:top}.header__topics a{font-size:.8125rem}@media only screen and (min-width:1050px){.header__topics{float:none}}.header__more{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:top}.header__more:before{left:-12px}.header__more:after,.header__more:before{content:'';width:1px;height:12px;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:rgba(0,0,0,.1)}.header__more:after{right:-12px}.header__more:hover{cursor:pointer;color:rgba(0,0,0,.75)}.header__user{display:inline-block;vertical-align:top;white-space:nowrap;margin-left:8px}@media only screen and (min-width:1050px){.header__user{margin-left:0}}.header__user>div{display:inline-block;vertical-align:top}.header__user-nav a:not(.button){text-transform:uppercase;font-size:.75rem;font-weight:600}.header__user-nav a:not(.button):not(.active){opacity:.5}.header__user-nav a:not(.button):not(.active):hover{opacity:.75}.header__user-nav a:not(.button):hover{text-decoration:none}.header__user-nav a:not(.button).active{color:#222;cursor:default;text-decoration:none}.header__user-nav a:not(.button):before{margin-right:0}.header__user-nav a:not(.button):not(:last-child){margin-right:16px}@media only screen and (min-width:1050px){.header__user-nav a:not(.button):not(:last-child){margin-right:32px}}@media only screen and (min-width:1050px){.header__user-nav+.header__topics{margin-left:56px}}.header__search{display:none;vertical-align:top;margin-right:0}@media only screen and (min-width:1050px){.header__search{display:inline-block}}.header__search,.header__user{line-height:inherit}.header__nav{border-bottom:1px solid rgba(0,0,0,.1)}@media only screen and (min-width:800px){.header__nav{border-bottom:0}}.header__nav .button{margin-left:0}.header__nav .button__more{margin-right:20px}.header__nav .li-nav,.header__nav>li{-webkit-transition:all .15s ease;transition:all .15s ease}@media only screen and (min-width:1050px){.header__nav .li-nav,.header__nav>li{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle;position:static;border:none;min-height:65px}.header__nav .li-nav:hover.has--subnav .nav .li-nav,.header__nav .li-nav:hover.has--subnav .nav>li,.header__nav>li:hover.has--subnav .nav .li-nav,.header__nav>li:hover.has--subnav .nav>li{white-space:normal}.header__nav .li-nav:hover.has--subnav .nav__subnav,.header__nav>li:hover.has--subnav .nav__subnav{opacity:1;top:100%;visibility:visible;-webkit-transition-delay:.25s;transition-delay:.25s}.header__nav .li-nav:hover.has--subnav .nav__category,.header__nav>li:hover.has--subnav .nav__category{width:100%}.header__nav .li-nav:hover.has--subnav .nav__category:after,.header__nav .li-nav:hover.has--subnav .nav__category:before,.header__nav>li:hover.has--subnav .nav__category:after,.header__nav>li:hover.has--subnav .nav__category:before{-webkit-transition-delay:.25s;transition-delay:.25s;opacity:1}}@media only screen and (min-width:1080px){.header__nav .li-nav:not(:last-child),.header__nav>li:not(:last-child){margin-right:23px;margin-left:23px}}@media only screen and (min-width:1280px){.header__nav .li-nav:not(:last-child),.header__nav>li:not(:last-child){margin-right:23px;margin-left:23px}}@media only screen and (min-width:1338px){.header__nav .li-nav:not(:last-child),.header__nav>li:not(:last-child){margin-right:23px;margin-left:23px}}.header__nav .li-nav>a,.header__nav>li>a{font-size:.875rem;line-height:1.5rem;padding:12px 0;color:#000;display:inline-block;max-width:100%;position:relative;z-index:61;white-space:normal}@media only screen and (min-width:1050px){.header__nav .li-nav>a,.header__nav>li>a{padding:8px 0 0;font-weight:700}}.header__nav .li-nav>a:after,.header__nav .li-nav>a:before,.header__nav>li>a:after,.header__nav>li>a:before{content:'';position:absolute;bottom:-1px;left:50%;width:0;height:0;opacity:0;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-style:solid;border-width:0 5px 5px 5px;-webkit-transition:opacity .15s ease-in-out;transition:opacity .15s ease-in-out;border-color:transparent transparent #fff transparent}.header__nav .li-nav>a:before,.header__nav>li>a:before{left:50%;bottom:0;border-width:0 6px 6px 6px;border-color:transparent transparent #f5f7f8 transparent}@media only screen and (min-width:1050px){.header__nav .li-nav>a,.header__nav>li>a{font-size:1rem}}@media only screen and (min-width:1800px){.header__nav .li-nav>a,.header__nav>li>a{font-size:1.125rem}}.header--open{overflow:hidden}@media only screen and (min-width:600px){.header--open{overflow:visible}}.header--open .content-items{max-height:215px;margin:12px 0 24px}.header--open .search{margin-top:16px;display:block}.header--open .header__toggle:before{z-index:10}.header--open .header__toggle>span:nth-child(1){top:50%;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.header--open .header__toggle>span:nth-child(2){opacity:0}.header--open .header__toggle>span:nth-child(3){top:50%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.header--open .header__items,.header--open .header__items .language__switcher{display:-webkit-box;display:-ms-flexbox;display:flex}.header--open .header__top{z-index:100;position:absolute;left:0;right:8px;background:#fff}@media only screen and (min-width:800px){.header--open .header__top{right:20px}}.header--open .header__top .search{display:none}.header--open .header__logo{z-index:101}.header--open .header__middle{padding-top:60px}.header--open .header__bottom{display:none}.header--open .header__container{max-height:90vh;overflow-x:hidden;overflow-y:auto}@media only screen and (min-width:1050px){.header--open .header__container{overflow:visible}}.header .subnav{position:absolute;-webkit-box-shadow:0 5px 25px 1px rgba(0,0,0,.15);box-shadow:0 5px 25px 1px rgba(0,0,0,.15);background:#fff;visibility:hidden;line-height:1.75rem;max-width:100%;width:100%;left:0;opacity:0;overflow:hidden;border:1px solid #f5f7f8;border-radius:2px;-webkit-transition:all .15s ease-in-out;transition:all .15s ease-in-out;top:105%;z-index:60;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.header .subnav .subnav__categories{-webkit-box-flex:0;-ms-flex:0 1 280px;flex:0 1 280px;padding:24px 0;background:#f5f7f8;margin-right:0!important}.header .subnav .subnav__categories>li{display:block;font-size:.9375rem;padding:2px 48px 2px 24px}.header .subnav .subnav__categories>li a{display:block;font-weight:700}.header .subnav .subnav__categories>li:hover{background:#e1e1e1}.header .subnav .subnav__heading{margin-bottom:20px}.header .subnav .subnav__content{position:relative;-ms-flex-item-align:start;align-self:flex-start;padding:24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}@media only screen and (min-width:1050px){.header .subnav .subnav__content{padding-left:32px;padding-right:32px;margin:0 auto;-webkit-box-flex:1;-ms-flex:1 1 600px;flex:1 1 600px}}.header .subnav .subnav__content .heading__container{-ms-flex-preferred-size:100%;flex-basis:100%}.header .subnav .subnav__content:before{content:'';position:absolute;left:0;top:0;bottom:-100%;width:1px;background:rgba(0,0,0,.1)}.languagesEdition .active{font-weight:700}.header__more.dropdown:after{content:'';display:inline-block;vertical-align:middle;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;background-repeat:no-repeat;background-position:center;margin-bottom:2px;width:7px;height:7px;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease;background-color:#fff!important;background-size:contain}.header__more.dropdown button{color:#000!important;margin-right:-20px;padding-right:20px;z-index:1000}.header__more.dropdown .dropdown__holder{width:165px}.header__more.dropdown .dropdown__content{padding:13px;padding-top:5px;padding-bottom:5px}.header__more.dropdown .languagesEdition li{border-bottom:1px solid #e6e6e6}.header__more.dropdown .languagesEdition li:last-child{border:0}.logo__data{display:none;color:#666;font-size:.6875rem}@media only screen and (min-width:1050px){.logo__data{display:block;line-height:.8125rem}}.container{padding-left:12px;padding-right:12px;margin:0 auto;min-width:320px;-webkit-transition:padding .15s ease-in-out;transition:padding .15s ease-in-out}@media only screen and (min-width:600px){.container{padding-left:16px;padding-right:16px}}@media only screen and (min-width:800px){.container{padding-left:20px;padding-right:20px}}@media only screen and (min-width:1250px){.container{padding-left:60px;padding-right:60px}}@media only screen and (min-width:1400px){.container{padding-left:20px;padding-right:20px}}.container.white{background:#fff}.container__inner{max-width:1290px;margin:0 auto;-webkit-transition:max-width .15s ease-out;transition:max-width .15s ease-out}.search{display:block;position:relative;z-index:33;width:100%;max-width:100%;margin:0}.search:before{position:absolute;top:50%;right:24px;-webkit-transform:translateY(-50%);transform:translateY(-50%);margin-right:0;z-index:34}.search__bar{display:block;border-radius:2px;position:relative;z-index:33}.search__bar #search{margin-bottom:0;max-width:100%;background:#fff}.search__go{top:50%;right:0;bottom:0;left:auto;position:absolute;-webkit-transform:translateY(-50%);transform:translateY(-50%);z-index:32;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:36px;height:36px;line-height:2.25rem;-webkit-box-shadow:none;box-shadow:none;display:block;background:0 0;border:0;font-size:0}@media only screen and (min-width:600px){.search__go{z-index:35}}.header #search,.search__go:hover{cursor:pointer}.header #search{height:36px;position:relative;max-width:100%;background-color:#f5f7f8!important}@media only screen and (min-width:600px){.header #search{font-size:.8125rem;min-width:165px;max-width:100%;opacity:1}}.header #search:hover{cursor:auto}@media only screen and (min-width:1050px){.header #search{margin-left:auto;border-top-right-radius:0;border-bottom-right-radius:0;border-right:0}.header #search:focus{min-width:215px}}.header #search:focus{cursor:auto}.header #search .field__desc{display:none}.header #searchForm{width:100%;margin-top:8px}.header #searchForm:before{right:8px}@media only screen and (min-width:600px){.header #searchForm{margin-top:16px}}@media only screen and (min-width:1050px){.header #searchForm{margin-top:0}}</style> <script>(function(a,s,y,n,c,h,i,d,e){s.className+=' '+y;h.start=1*new Date; h.end=i=function(){s.className=s.className.replace(RegExp(' ?'+y),'')}; (a[n]=a[n]||[]).hide=h;setTimeout(function(){i();h.end=null},c);h.timeout=c; })(window,document.documentElement,'async-hide','dataLayer',4000, {'GTM-W9GJ5DL':true});</script> <script type="text/javascript"> var loggedIn = false; if (loggedIn) { var userCountryId = ''; } </script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('config', 'G-VMVPD4D2JY'); //CookieControl tool recomendation // Call the default command before gtag.js or Tag Manager runs to // adjust how the tags operate when they run. Modify the defaults // per your business requirements and prior consent granted/denied, e.g.: gtag('consent', 'default', { 'ad_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': 'denied' }); if((typeof loggedIn != "undefined") && loggedIn){ window.dataLayer.push({'logged_in': 'true'}); } else { window.dataLayer.push({'logged_in': 'false'}); } window.dataLayer.push({'show_queryz': ''}); </script> <!-- Google Tag Manager --> <script> var gtmProfile="GTM-W9GJ5DL"; (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer', gtmProfile);</script> <!-- End Google Tag Manager --> <title>If Architectural Experimentation Is So Great, Why Aren’t You Doing It? - InfoQ</title> <link rel="canonical" href="https://www.infoq.com/articles/architectural-experimentation-insurance/"/> <link rel="alternate" href="https://www.infoq.com/articles/architectural-experimentation-insurance/" hreflang="en"/> <link rel="alternate" href="https://www.infoq.com/articles/architectural-experimentation-insurance/" hreflang="x-default" /> <meta http-equiv="pragma" content="no-cache" /> <meta http-equiv="cache-control" content="private,no-cache,no-store,must-revalidate" /> <meta http-equiv="expires" content="0" /> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="copyright" content="© 2006 C4Media" /> <meta name="google-site-verification" content="0qInQx_1WYOeIIbxnh7DnXlw1XOxNgAYakO2k4GhNnY" /> <meta name="msapplication-TileColor" content="#ffffff"/> <meta name="msapplication-TileImage" content="/styles/static/images/logo/logo.jpg"/> <meta property="wb:webmaster" content="3eac1729a8bbe046" /> <meta content="width=device-width,initial-scale=1" name="viewport"> <meta http-equiv="X-UA-Compatible" content="IE=10, IE=edge"> <link rel="stylesheet" type="text/css" media="screen" href="https://cdn.infoq.com/statics_s1_20250228123444/styles/style.css"/> <link rel="stylesheet" type="text/css" media="print" href="https://cdn.infoq.com/statics_s1_20250228123444/styles/print.css"/> <link rel="preload" type="text/css" href="https://cdn.infoq.com/statics_s1_20250228123444/styles/style_en.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <link rel="preload" href="https://cdn.infoq.com/statics_s1_20250228123444/styles/icons.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <link rel="preload" type="text/css" media="screen" href="https://cdn.infoq.com/statics_s1_20250228123444/styles/style_extra.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <noscript> <link rel="stylesheet" type="text/css" href="https://cdn.infoq.com/statics_s1_20250228123444/styles/style_en.css"/> <link rel="stylesheet" href="https://cdn.infoq.com/statics_s1_20250228123444/styles/icons.css"> <link rel="stylesheet" type="text/css" media="screen" href="https://cdn.infoq.com/statics_s1_20250228123444/styles/style_extra.css"/> </noscript> <link rel="stylesheet" type="text/css" href="https://cdn.infoq.com/statics_s1_20250228123444/styles/fonts/font.css"/> <link rel="shortcut icon" href="https://cdn.infoq.com/statics_s1_20250228123444/favicon.ico" type="image/x-icon" /> <link rel="apple-touch-icon" href="https://cdn.infoq.com/statics_s1_20250228123444/apple-touch-icon.png"/> <script type="text/javascript"> var device='desktop'; var InfoQConstants = {}; InfoQConstants.language = 'en'; InfoQConstants.countryCode = ''; InfoQConstants.pageUrl = (typeof window.location != 'undefined' && window.location && typeof window.location.href != 'undefined' && window.location.href) ? window.location.href : "URL_UNAVAILABLE"; InfoQConstants.cet='Hi0KZQuTTuvFpEMd'; InfoQConstants.userDetectedCountryCode = 'SG'; InfoQConstants.bpadb = 'i4ZlGrs9yWqYZFocHkFl'; </script> <script type="text/javascript" src="https://cdn.infoq.com/statics_s1_20250228123444/scripts/combinedJs.min.js"></script> <script type="text/javascript"> var JSi18n = JSi18n || {}; // define only if not already defined JSi18n.error='Error'; JSi18n.login_unverifiedAccount='Unverified account'; JSi18n.contentSummary_showPresentations_1=''; JSi18n.contentSummary_showPresentations_2=''; JSi18n.contentSummary_showPresentations_3=''; JSi18n.contentSummary_showInterviews_1=''; JSi18n.contentSummary_showInterviews_2=''; JSi18n.contentSummary_showInterviews_3=''; JSi18n.contentSummary_showMinibooks_1=''; JSi18n.contentSummary_showMinibooks_2=''; JSi18n.login_sendingRequest='Sending request ...'; JSi18n.bookmark_saved='<q> Saved </q>'; JSi18n.bookmark_error='<q style=color:black;> Error </q>'; JSi18n.categoryManagement_showpopup_viewAllLink_viewAllPrefix='View All'; JSi18n.categoryManagement_showpopup_viewAllLink_viewAllSuffix=''; JSi18n.categoryManagement_showpopup_includeExcludeLink_Exclude='Exclude'; JSi18n.categoryManagement_showpopup_includeExcludeLink_Include='Include'; JSi18n.login_invalid_email='Please specify a valid email'; JSi18n.login_email_not_found = 'No user found with that email'; JSi18n.content_datetime_format='MMM dd, yyyy'; // used by frontend JSi18n.FE = { labels: { follow: "Follow", followTopic: "Follow Topic", unfollow: "Unfollow", unfollowTopic: "Unfollow Topic", following: "Following", followers: "Followers", like: "Like", liked: "Liked", authors: "Peers", users : "Users", topics: "Topics", hide: "Hide Item", hidden: "%s was hidden on your profile page.", undo: "Undo", showLess: "Show less", showMore: "Show more", moreAuthors: "And %s more", bookmarked: "Content Bookmarked", unbookmarked: "Content Unbookmarked", characterLimit: "Characters Remaining" } } var usersInPage = JSON.parse('[{\"id\":\"62671158\",\"ref\":\"author-Monica-Beckwith\",\"url\":\"\/profile\/Monica-Beckwith\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Monica Beckwith\",\"bio\":\"Java Champion, Monica Beckwith is a Java performance engineer. She currently works on improving OpenJDK's HotSpot VM at Microsoft. Her past experiences include working with Arm, Oracle\/Sun and AMD; optimizing the JVM for server class systems. Monica was voted a JavaOne Rock Star speaker and was the performance lead for Garbage First Garbage Collector (G1 GC). You can follow Monica on twitter @mon_beck\",\"followers\":1717,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20250228123444\/images\/profiles\/QhDv7pXEUK1sdLsYArFmnLxecH4rYhAc.jpg\"},{\"id\":\"126598266\",\"ref\":\"author-Pierre-Pureur\",\"url\":\"\/profile\/Pierre-Pureur\",\"followedByCurrentUser\":false,\"minibio\":\"Experienced Software Architect\",\"name\":\"Pierre Pureur\",\"bio\":\"Pierre Pureur is an experienced software architect, with extensive innovation and application development background, vast exposure to the financial services industry, broad consulting experience and comprehensive technology infrastructure knowledge. His past roles include serving as Chief Enterprise Architect for a major financial services company, leading large architecture teams, managing large-scale concurrent application development projects and directing innovation initiatives, as well as developing strategies and business plans. He is coauthor of the books \\\"Continuous Architecture in Practice: Scalable Software Architecture in the Age of Agility and DevOps\\\"(2021) and \\\"Continuous Architecture: Sustainable Architecture in an Agile and Cloud-Centric World\\\" (2015) and has published many articles and presented at multiple software architecture conferences on this topic.\u00A0\",\"followers\":206,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20250228123444\/images\/profiles\/22c27753414b3827cb473ede92e13489.jpeg\"},{\"id\":\"45723890\",\"ref\":\"author-Rags-Srinivas\",\"url\":\"\/profile\/Rags-Srinivas\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Rags Srinivas\",\"bio\":\"Raghavan "Rags" Srinivas (@ragss) works as an Architect\/Developer Evangelist goaled with helping developers build highly scalable and available systems. As an OpenStack advocate and solutions architect at Rackspace he was constantly challenged from low level infrastructure to high level application issues. His general focus area is in distributed systems, with a specialization in Cloud Computing and Big Data. He worked on Hadoop, HBase and NoSQL during its early stages. He has spoken on a variety of technical topics at conferences around the world, written for developer portals, conducted and organized Hands-on Labs and taught graduate and online classes in the evening. Rags brings with him over 25 years of hands-on software development and over 15 years of architecture and technology evangelism experience. He has evangelized and influenced the architecture of a number of emerging technology areas. He is also a repeat JavaOne rock star speaker award winner. Rags holds a Masters degree in Computer Science from the Center of Advanced Computer Studies at the University of Louisiana at Lafayette. He likes to hike, run and generally be outdoors but most of all loves to eat.\",\"followers\":265,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20250228123444\/images\/profiles\/t4nyfgw1THkp4wMZ9EZ59RGJx8Hf9Rk8.jpg\"},{\"id\":\"87551248\",\"ref\":\"author-Steef~Jan-Wiggers\",\"url\":\"\/profile\/Steef~Jan-Wiggers\",\"followedByCurrentUser\":false,\"minibio\":\"Cloud Queue Lead Editor\",\"name\":\"Steef-Jan Wiggers\",\"bio\":\"Steef-Jan Wiggers is one of InfoQ's senior cloud editors and works as an Principal Consultant Cloud\/DevOps at Team Rockstars IT in The Netherlands. His current technical expertise focuses on integration platform implementations, Azure DevOps, AI and Azure Platform Solution Architectures. Steef-Jan is a regular speaker at conferences and user groups and writes for InfoQ. Furthermore, Microsoft has recognized him as Microsoft Azure MVP for the past fifteen years.\",\"followers\":700,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20250228123444\/images\/profiles\/BhZx03k3Hj0pZVXmTzGqItwZxtJ06oIb.jpeg\"},{\"id\":\"80977916\",\"ref\":\"author-Thomas-Betts\",\"url\":\"\/profile\/Thomas-Betts\",\"followedByCurrentUser\":false,\"minibio\":\"Laureate Application Architect at Blackbaud\",\"name\":\"Thomas Betts\",\"bio\":\"Thomas Betts is the Lead Editor for Architecture and Design at InfoQ, a co-host of the InfoQ Podcast, and a Laureate Software Architect at Blackbaud.\\r\\n\\r\\nFor over two decades, his focus has always been on providing software solutions that delight his customers. He has worked in a variety of industries, including social good, retail, finance, health care, defense and travel.\\r\\n\\r\\nThomas lives in Denver with his wife and son, and they love hiking and otherwise exploring beautiful Colorado.\",\"followers\":976,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20250228123444\/images\/profiles\/pSqI6HrU3k9rmmVjwS34OHG0bOMYiE6a.jpg\"},{\"id\":\"125035682\",\"ref\":\"author-Kurt-Bittner\",\"url\":\"\/profile\/Kurt-Bittner\",\"followedByCurrentUser\":false,\"minibio\":\"Independent Author\",\"name\":\"Kurt Bittner\",\"bio\":\"Kurt Bittner has more than 30 years of experience delivering working software in short, feedback-driven cycles. He has helped a wide variety of organizations adopt agile software delivery practices, including large banking, insurance, manufacturing, and retail organizations, as well as large government agencies. He has worked for or with large software delivery organizations including Oracle, HP, IBM, and Microsoft. He is also former technology industry analyst with Forrester Research, and has written widely on topics related to agile teaming and leadership. \",\"followers\":197,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20250228123444\/images\/profiles\/3789fc0e548a79744225f15083ab938c.jpg\"},{\"id\":\"72028228\",\"ref\":\"author-Sergio-De-Simone\",\"url\":\"\/profile\/Sergio-De-Simone\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Sergio De Simone\",\"bio\":\"<b>Sergio De Simone<\/b> is a software engineer. Sergio has been working as a software engineer for over twenty five years across a range of different projects and companies, including such different work environments as Siemens, HP, and small startups. For the last 10+ years, his focus has been on development for mobile platforms and related technologies. He is currently working for BigML, Inc., where he leads iOS and macOS development.\",\"followers\":629,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20250228123444\/images\/profiles\/NovciOoQOAYWqYqRQBFo97SuMm0xbUiC.jpg\"},{\"id\":\"126467140\",\"ref\":\"author-Renato-Losio\",\"url\":\"\/profile\/Renato-Losio\",\"followedByCurrentUser\":false,\"minibio\":\"Cloud Expert | AWS Data Hero \",\"name\":\"Renato Losio\",\"bio\":\"Renato has extensive experience as a cloud architect, tech lead, and cloud services specialist. Currently, he lives in Berlin and works remotely as a principal cloud architect. His primary areas of interest include cloud services and relational databases. He is an editor at InfoQ and a recognized AWS Data Hero. You can connect with him on LinkedIn.\",\"followers\":646,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20250228123444\/images\/profiles\/ptroF8HdI2vWXm0NDaKeS0JdiPxMOAra.jpg\"},{\"id\":\"126464202\",\"ref\":\"author-Johan-Janssen\",\"url\":\"\/profile\/Johan-Janssen\",\"followedByCurrentUser\":false,\"minibio\":\"Architect at ASML\",\"name\":\"Johan Janssen\",\"bio\":\"Architect at ASML, loves to share knowledge mainly around Java. Spoke at conferences such as Devoxx, Oracle Code One, Devnexus, and many more. Assisted conferences by participating in program committees and invented and organized JVMCON. Received the JavaOne Rock Star and Oracle Code One Star awards. Wrote various articles both for digital and printed media. Maintainer of various Java JDK\/JRE packages for Chocolatey with around 100 thousand downloads a month.\",\"followers\":401,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20250228123444\/images\/profiles\/Fb4eZ0mtvMf6MhsmBIhsUVueV4xAs2FD.jpg\"},{\"id\":\"39485652\",\"ref\":\"author-Daniel-Bryant\",\"url\":\"\/profile\/Daniel-Bryant\",\"followedByCurrentUser\":false,\"minibio\":\"InfoQ News Manager | Building Platforms at Syntasso\",\"name\":\"Daniel Bryant\",\"bio\":\"Daniel Bryant is the news manager at InfoQ and the emeritus chair of QCon London. He is also a platform engineer and head of product marketing at Syntasso. Daniel's technical expertise focuses on \u2018DevOps\u2019 tooling, cloud\/container platforms, and microservice implementations. He is a long-time coder and Java Champion who has contributed to several open source projects. Daniel also writes for InfoQ, O\u2019Reilly, and The New Stack and regularly presents at international conferences such as KubeCon, QCon, and JavaOne. In his copious amounts of free time, he enjoys running, reading, and travelling.\",\"followers\":2595,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20250228123444\/images\/profiles\/tSe5dczMaSGtRUm18VkTR2tcF4W3SogA.jpg\"},{\"id\":\"63268344\",\"ref\":\"author-Chris-Swan\",\"url\":\"\/profile\/Chris-Swan\",\"followedByCurrentUser\":false,\"minibio\":\"Engineer, Atsign\",\"name\":\"Chris Swan\",\"bio\":\"Chris Swan is an Engineer at <a href=\\\"https:\/\/atsign.com\\\" rel=\\\"nofollow\\\">Atsign<\/a>, building the atPlatform, a technology that is putting people in control of their data and removing the frictions and surveillance associated with today\u2019s Internet. He was previously a Fellow at DXC Technology where he held various CTO roles. Before that he held CTO and Director of R&D roles at Cohesive Networks, UBS, Capital SCF and Credit Suisse, where he worked on app servers, compute grids, security, mobile, cloud, networking and containers. Chris co-hosts the <a href=\\\"https:\/\/techdebtburndown.com\/\\\" rel=\\\"nofollow\\\">Tech Debt Burndown Podcast<\/a> and is a Dart Google Developer Expert (<a href=\\\"https:\/\/developers.google.com\/community\/experts\\\" rel=\\\"nofollow\\\">GDE<\/a>).\",\"followers\":1763,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20250228123444\/images\/profiles\/8PE76nOujWAoCM8yqLn9Hfv2HqW3VlIP.jpg\"},{\"id\":\"4927376\",\"ref\":\"author-Karsten-Silz\",\"url\":\"\/profile\/Karsten-Silz\",\"followedByCurrentUser\":false,\"minibio\":\"Full-Stack Java Developer & Contractor\",\"name\":\"Karsten Silz\",\"bio\":\"Karsten Silz has worked as a full-stack Java developer (Spring Boot, Angular, Flutter) for 26 years in Europe and the US. In 2004, he co-founded a software product start-up in the US. Karsten led product development for 13 years and left after the company was sold successfully. Since 2003, he has also worked as a contractor. He co-founded the SaaS start-up "Your Home in Good Hands" as CTO in the UK in 2020.\",\"followers\":306,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20250228123444\/images\/profiles\/p6zmOdOcqXiRj09iiZNeDZap7f0IglQW.jpg\"},{\"id\":\"343314\",\"ref\":\"author-Jonathan-Allen\",\"url\":\"\/profile\/Jonathan-Allen\",\"followedByCurrentUser\":false,\"minibio\":\"Software Architect\",\"name\":\"Jonathan Allen\",\"bio\":\"Jonathan Allen got his start working on MIS projects for a health clinic in the late 90's, bringing them up from Access and Excel to an enterprise solution by degrees. After spending five years writing automated trading systems for the financial sector, he became a consultant on a variety of projects including the UI for a robotic warehouse, the middle tier for cancer research software, and the big data needs of a major real estate insurance company. In his free time he enjoys studying and writing about martial arts from the 16th century.\\r\\n\",\"followers\":1733,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20250228123444\/images\/profiles\/Wk_C09_mzwK23YkTkKMXResJv3LKUN5D.jpg\"},{\"id\":\"114725059\",\"ref\":\"author-Holly-Cummins\",\"url\":\"\/profile\/Holly-Cummins\",\"followedByCurrentUser\":false,\"minibio\":\"Senior Principal Software Engineer, Red Hat\",\"name\":\"Holly Cummins\",\"bio\":\"Holly Cummins is a Senior Principal Software Engineer on the Red Hat Quarkus team. Before joining Red Hat, Holly was a long time IBMer. In her time at IBM, Holly has been a full-stack javascript developer, a WebSphere Liberty build architect, a client-facing consultant, a JVM performance engineer, and an innovation leader. During her time in the IBM Garage, Holly led projects for enormous banks, tiny startups, and everything in between. Holly has used the power of cloud to understand climate risks, count fish, help a blind athlete run ultra-marathons in the desert solo, and invent stories (although not at all the same time). Holly is also a Java Champion, author, and regular keynote speaker. You can follow her on twitter at @holly_cummins or at hollycummins.com.\\r\\n\\r\\n\\r\\nBefore joining IBM, Holly completed a PhD in Quantum Computation.\\r\\n\",\"followers\":459,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20250228123444\/images\/profiles\/cRsuGlFgKyGmGfEHvafpMO63CxbrEm22.jpg\"}]'); var topicsInPage = JSON.parse('[{\"name\":\"Architecture & Design\",\"id\":\"6816\",\"followers\":9544,\"url\":\"\/architecture-design\",\"followedByCurrentUser\":false},{\"name\":\"Culture & Methods\",\"id\":\"6817\",\"followers\":3732,\"url\":\"\/culture-methods\",\"followedByCurrentUser\":false},{\"name\":\"AI, ML & Data Engineering\",\"id\":\"16690\",\"followers\":5164,\"url\":\"\/ai-ml-data-eng\",\"followedByCurrentUser\":false},{\"name\":\".NET Core\",\"id\":\"15683\",\"followers\":7351,\"url\":\"\/Net-Core\",\"followedByCurrentUser\":false},{\"name\":\"Java9\",\"id\":\"7097\",\"followers\":5023,\"url\":\"\/Java9\",\"followedByCurrentUser\":false},{\"name\":\"Machine Learning\",\"id\":\"5449\",\"followers\":13397,\"url\":\"\/MachineLearning\",\"followedByCurrentUser\":false},{\"name\":\"Microservices\",\"id\":\"15274\",\"followers\":20719,\"url\":\"\/microservices\",\"followedByCurrentUser\":false},{\"name\":\"Minimum Viable Architecture\",\"id\":\"15595\",\"followers\":22,\"url\":\"\/minimum-viable-architecture\",\"followedByCurrentUser\":false},{\"name\":\"DevOps\",\"id\":\"6043\",\"followers\":4749,\"url\":\"\/Devops\",\"followedByCurrentUser\":false},{\"name\":\"Architecture\",\"id\":\"1389\",\"followers\":3186,\"url\":\"\/architecture\",\"followedByCurrentUser\":false},{\"name\":\"Reactive Programming\",\"id\":\"15453\",\"followers\":11593,\"url\":\"\/reactive-programming\",\"followedByCurrentUser\":false},{\"name\":\"Development\",\"id\":\"6815\",\"followers\":3810,\"url\":\"\/development\",\"followedByCurrentUser\":false}]'); var userContentLikesInPage = []; var userCommentsLikesInPage = []; var currentUserId = 2; </script> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "NewsArticle", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://www.infoq.com/articles/architectural-experimentation-insurance/" }, "headline": "If Architectural Experimentation Is So Great, Why Aren’t You Doing It?", "image": ["https://res.infoq.com/articles/architectural-experimentation-insurance/en/smallimage/architectural-experimentation-thumbnail-1740472356165.jpg" ], "datePublished": "2025-02-28", "dateModified": "2025-02-28", "author": [ { "@type": "Person", "name": "Pierre Pureur" }, { "@type": "Person", "name": "Kurt Bittner" } ], "publisher": { "@type": "Organization", "name": "InfoQ", "logo": { "@type": "ImageObject", "url": "https://assets.infoq.com/resources/en/infoQ-logo-big.jpg" } }, "description": "When done properly, architectural experimentation reduces the cost of undoing bad decisions. So why aren't teams using this tool more often?" } </script> <meta name="ifq:pageType" content="ARTICLE_PAGE"/> <script type="text/javascript"> InfoQConstants.pageType = 'ARTICLE_PAGE'; </script> <meta property="og:type" content="website" /> <meta property="og:image" content="https://res.infoq.com/articles/architectural-experimentation-insurance/en/headerimage/architectural-experimentation-header-1740472356165.jpg"/> <meta property="twitter:image" content="https://res.infoq.com/articles/architectural-experimentation-insurance/en/card_header_image/architectural-experimentation-twitter-card-1740472356165.jpg"/> <meta property="og:title" content="If Architectural Experimentation Is So Great, Why Aren’t You Doing It? "/> <meta property="og:description" content="Architectural experimentation sounds like a great idea, yet it does not seem to be used very frequently. In this article, we will explore some of the reasons why teams don’t use this powerful tool more often, and what they can do about leveraging that tool for successful outcomes." /> <meta property="og:site_name" content="InfoQ"/> <meta property="og:url" content="https://www.infoq.com/articles/architectural-experimentation-insurance/"/> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:title" content="If Architectural Experimentation Is So Great, Why Aren’t You Doing It? "/> <meta name="twitter:description" content="Architectural experimentation sounds like a great idea, yet it does not seem to be used very frequently. In this article, we will explore some of the reasons why teams don’t use this powerful tool more often, and what they can do about leveraging that tool for successful outcomes." /> <link rel="image_src" href="https://res.infoq.com/articles/architectural-experimentation-insurance/en/headerimage/architectural-experimentation-header-1740472356165.jpg"/> <link rel="stylesheet" href="https://cdn.infoq.com/statics_s1_20250228123444/styles/prism.css"/> <meta name="keywords" content="architectural experimentation insurance,Architecture & Design,Minimum Viable Architecture,Architecture,"/> <meta name="description" content="When done properly, architectural experimentation reduces the cost of undoing bad decisions. So why aren't teams using this tool more often?"/> <meta name="tprox" content="1740733200000" /> <script type="text/javascript"> $(function() { var box = $('.related_sponsors'); if (box.length === 0) { return; } var nextSibling = $(box).next(); if ($('#lowerFullwidthVCR').length === 0) { moveLowerInThePage(box); return; } if (blockElement(nextSibling)) { moveLowerInThePage(box); return; } while (!blockElement($(nextSibling).next())) { nextSibling = $(nextSibling).next(); if (firstLowerThanSecond(nextSibling, box)) { return; } } moveLowerInThePage(box); function blockElement(elem) { if ($(elem).prop('tagName') === 'BLOCKQUOTE' || $(elem).prop('tagName') === 'IMG' || $(elem).prop('tagName') === 'PRE' || ($(elem).prop('tagName') === 'P' && $(elem).children().length === 1 && $(elem).children('img').length === 1)) { return true; } return false; } function firstLowerThanSecond(elem1, elem2) { var elem1BottomYCoordinate = $(elem1).offset().top + $(elem1).height() var elem2BottomYCoordinate = $(elem2).offset().top + $(elem2).height(); if (elem1BottomYCoordinate > elem2BottomYCoordinate) { return true; } return false; } function moveLowerInThePage(box) { if ($('#lowerFullwidthVCR').length !== 0) { $('#lowerFullwidthVCR').replaceWith(box); } $(box).removeClass('stacked'); } }); </script> <script type="text/javascript" src="https://cdn.infoq.com/statics_s1_20250228123444/scripts/relatedVcr.min.js"></script> <script type="application/javascript"> var communityIds = "2498"; var topicIds = "4250,876"; VCR.loadAllVcrs(communityIds, topicIds); </script> <script type="text/javascript" src="https://cdn.infoq.com/statics_s1_20250228123444/scripts/infoq.js"></script> <script type="text/javascript"> document.addEventListener('DOMContentLoaded', function() { if (!window || !window.infoq) return infoq.init() }) </script> </head> <body > <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-W9GJ5DL" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <div class="intbt"> <a href="/int/bt/" title="bt">BT</a> </div> <script type="text/javascript"> var allCountries = [{"id":3,"name":"Afghanistan"},{"id":244,"name":"Åland"},{"id":6,"name":"Albania"},{"id":61,"name":"Algeria"},{"id":13,"name":"American Samoa"},{"id":1,"name":"Andorra"},{"id":9,"name":"Angola"},{"id":5,"name":"Anguilla"},{"id":11,"name":"Antarctica"},{"id":4,"name":"Antigua and Barbuda"},{"id":12,"name":"Argentina"},{"id":7,"name":"Armenia"},{"id":16,"name":"Aruba"},{"id":15,"name":"Australia"},{"id":14,"name":"Austria"},{"id":17,"name":"Azerbaijan"},{"id":31,"name":"Bahamas"},{"id":24,"name":"Bahrain"},{"id":20,"name":"Bangladesh"},{"id":19,"name":"Barbados"},{"id":35,"name":"Belarus"},{"id":21,"name":"Belgium"},{"id":36,"name":"Belize"},{"id":26,"name":"Benin"},{"id":27,"name":"Bermuda"},{"id":32,"name":"Bhutan"},{"id":29,"name":"Bolivia"},{"id":254,"name":"Bonaire, Sint Eustatius, and Saba"},{"id":18,"name":"Bosnia and Herzegovina"},{"id":34,"name":"Botswana"},{"id":33,"name":"Bouvet Island"},{"id":30,"name":"Brazil"},{"id":104,"name":"British Indian Ocean Territory"},{"id":28,"name":"Brunei Darussalam"},{"id":23,"name":"Bulgaria"},{"id":22,"name":"Burkina Faso"},{"id":25,"name":"Burundi"},{"id":114,"name":"Cambodia"},{"id":46,"name":"Cameroon"},{"id":37,"name":"Canada"},{"id":52,"name":"Cape Verde"},{"id":121,"name":"Cayman Islands"},{"id":40,"name":"Central African Republic"},{"id":207,"name":"Chad"},{"id":45,"name":"Chile"},{"id":47,"name":"China"},{"id":53,"name":"Christmas Island"},{"id":38,"name":"Cocos (Keeling) Islands"},{"id":48,"name":"Colombia"},{"id":116,"name":"Comoros"},{"id":39,"name":"Congo (Democratic Republic)"},{"id":41,"name":"Congo (People\u0027s Republic)"},{"id":44,"name":"Cook Islands"},{"id":49,"name":"Costa Rica"},{"id":43,"name":"Cote D\u0027Ivoire"},{"id":97,"name":"Croatia"},{"id":51,"name":"Cuba"},{"id":253,"name":"Curaçao"},{"id":54,"name":"Cyprus"},{"id":55,"name":"Czech Republic"},{"id":58,"name":"Denmark"},{"id":57,"name":"Djibouti"},{"id":59,"name":"Dominica"},{"id":60,"name":"Dominican Republic"},{"id":213,"name":"East Timor"},{"id":62,"name":"Ecuador"},{"id":64,"name":"Egypt"},{"id":203,"name":"El Salvador"},{"id":87,"name":"Equatorial Guinea"},{"id":66,"name":"Eritrea"},{"id":63,"name":"Estonia"},{"id":68,"name":"Ethiopia"},{"id":72,"name":"Falkland Islands (Malvinas)"},{"id":74,"name":"Faroe Islands"},{"id":71,"name":"Fiji"},{"id":70,"name":"Finland"},{"id":75,"name":"France"},{"id":80,"name":"French Guiana"},{"id":170,"name":"French Polynesia"},{"id":208,"name":"French Southern Territories"},{"id":76,"name":"Gabon"},{"id":84,"name":"Gambia"},{"id":79,"name":"Georgia"},{"id":56,"name":"Germany"},{"id":81,"name":"Ghana"},{"id":82,"name":"Gibraltar"},{"id":88,"name":"Greece"},{"id":83,"name":"Greenland"},{"id":78,"name":"Grenada"},{"id":86,"name":"Guadeloupe"},{"id":91,"name":"Guam"},{"id":90,"name":"Guatemala"},{"id":249,"name":"Guernsey"},{"id":85,"name":"Guinea"},{"id":92,"name":"Guinea-Bissau"},{"id":93,"name":"Guyana"},{"id":98,"name":"Haiti"},{"id":95,"name":"Heard Island and McDonald Islands"},{"id":96,"name":"Honduras"},{"id":94,"name":"Hong Kong"},{"id":99,"name":"Hungary"},{"id":107,"name":"Iceland"},{"id":103,"name":"India"},{"id":100,"name":"Indonesia"},{"id":106,"name":"Iran"},{"id":105,"name":"Iraq"},{"id":101,"name":"Ireland"},{"id":245,"name":"Isle of Man"},{"id":102,"name":"Israel"},{"id":108,"name":"Italy"},{"id":109,"name":"Jamaica"},{"id":111,"name":"Japan"},{"id":250,"name":"Jersey"},{"id":110,"name":"Jordan"},{"id":122,"name":"Kazakhstan"},{"id":112,"name":"Kenya"},{"id":115,"name":"Kiribati"},{"id":243,"name":"Kosovo"},{"id":120,"name":"Kuwait"},{"id":113,"name":"Kyrgyzstan"},{"id":123,"name":"Laos"},{"id":132,"name":"Latvia"},{"id":124,"name":"Lebanon"},{"id":129,"name":"Lesotho"},{"id":128,"name":"Liberia"},{"id":133,"name":"Libya"},{"id":126,"name":"Liechtenstein"},{"id":130,"name":"Lithuania"},{"id":131,"name":"Luxembourg"},{"id":143,"name":"Macau"},{"id":139,"name":"Macedonia"},{"id":137,"name":"Madagascar"},{"id":151,"name":"Malawi"},{"id":153,"name":"Malaysia"},{"id":150,"name":"Maldives"},{"id":140,"name":"Mali"},{"id":148,"name":"Malta"},{"id":138,"name":"Marshall Islands"},{"id":145,"name":"Martinique"},{"id":146,"name":"Mauritania"},{"id":149,"name":"Mauritius"},{"id":238,"name":"Mayotte"},{"id":152,"name":"Mexico"},{"id":73,"name":"Micronesia"},{"id":136,"name":"Moldova"},{"id":135,"name":"Monaco"},{"id":142,"name":"Mongolia"},{"id":246,"name":"Montenegro"},{"id":147,"name":"Montserrat"},{"id":134,"name":"Morocco"},{"id":154,"name":"Mozambique"},{"id":141,"name":"Myanmar"},{"id":155,"name":"Namibia"},{"id":164,"name":"Nauru"},{"id":163,"name":"Nepal"},{"id":161,"name":"Netherlands"},{"id":8,"name":"Netherlands Antilles"},{"id":156,"name":"New Caledonia"},{"id":166,"name":"New Zealand"},{"id":160,"name":"Nicaragua"},{"id":157,"name":"Niger"},{"id":159,"name":"Nigeria"},{"id":165,"name":"Niue"},{"id":158,"name":"Norfolk Island"},{"id":118,"name":"North Korea"},{"id":144,"name":"Northern Mariana Islands"},{"id":162,"name":"Norway"},{"id":167,"name":"Oman"},{"id":173,"name":"Pakistan"},{"id":180,"name":"Palau"},{"id":178,"name":"Palestinian Territory"},{"id":168,"name":"Panama"},{"id":171,"name":"Papua New Guinea"},{"id":181,"name":"Paraguay"},{"id":169,"name":"Peru"},{"id":172,"name":"Philippines"},{"id":176,"name":"Pitcairn"},{"id":174,"name":"Poland"},{"id":179,"name":"Portugal"},{"id":177,"name":"Puerto Rico"},{"id":182,"name":"Qatar"},{"id":183,"name":"Reunion"},{"id":184,"name":"Romania"},{"id":185,"name":"Russian Federation"},{"id":186,"name":"Rwanda"},{"id":193,"name":"Saint Helena"},{"id":117,"name":"Saint Kitts and Nevis"},{"id":125,"name":"Saint Lucia"},{"id":251,"name":"Saint Martin"},{"id":175,"name":"Saint Pierre and Miquelon"},{"id":229,"name":"Saint Vincent and the Grenadines"},{"id":247,"name":"Saint-Barthélemy"},{"id":236,"name":"Samoa"},{"id":198,"name":"San Marino"},{"id":202,"name":"Sao Tome and Principe"},{"id":187,"name":"Saudi Arabia"},{"id":199,"name":"Senegal"},{"id":248,"name":"Serbia"},{"id":189,"name":"Seychelles"},{"id":197,"name":"Sierra Leone"},{"id":192,"name":"Singapore"},{"id":252,"name":"Sint Maarten"},{"id":196,"name":"Slovakia"},{"id":194,"name":"Slovenia"},{"id":188,"name":"Solomon Islands"},{"id":200,"name":"Somalia"},{"id":239,"name":"South Africa"},{"id":89,"name":"South Georgia and the South Sandwich Islands"},{"id":119,"name":"South Korea"},{"id":255,"name":"South Sudan"},{"id":67,"name":"Spain"},{"id":127,"name":"Sri Lanka"},{"id":190,"name":"Sudan"},{"id":201,"name":"Suriname"},{"id":195,"name":"Svalbard and Jan Mayen"},{"id":205,"name":"Swaziland"},{"id":191,"name":"Sweden"},{"id":42,"name":"Switzerland"},{"id":204,"name":"Syria"},{"id":220,"name":"Taiwan"},{"id":211,"name":"Tajikistan"},{"id":221,"name":"Tanzania"},{"id":210,"name":"Thailand"},{"id":209,"name":"Togo"},{"id":212,"name":"Tokelau"},{"id":216,"name":"Tonga"},{"id":218,"name":"Trinidad and Tobago"},{"id":215,"name":"Tunisia"},{"id":217,"name":"Turkey"},{"id":214,"name":"Turkmenistan"},{"id":206,"name":"Turks and Caicos Islands"},{"id":219,"name":"Tuvalu"},{"id":223,"name":"Uganda"},{"id":222,"name":"Ukraine"},{"id":2,"name":"United Arab Emirates"},{"id":77,"name":"United Kingdom"},{"id":224,"name":"United States Minor Outlying Islands"},{"id":226,"name":"Uruguay"},{"id":225,"name":"USA"},{"id":227,"name":"Uzbekistan"},{"id":234,"name":"Vanuatu"},{"id":228,"name":"Vatican City (Holy See)"},{"id":230,"name":"Venezuela"},{"id":233,"name":"Vietnam"},{"id":231,"name":"Virgin Islands (British)"},{"id":232,"name":"Virgin Islands (U.S.)"},{"id":235,"name":"Wallis and Futuna"},{"id":65,"name":"Western Sahara"},{"id":237,"name":"Yemen"},{"id":241,"name":"Zaire"},{"id":240,"name":"Zambia"},{"id":242,"name":"Zimbabwe"}]; var gdprCountriesIds = [196,194,191,184,179,174,161,148,132,131,130,108,101,99,97,88,77,75,70,67,63,58,56,55,54,37,23,21,14]; </script> <section data-nosnippet class="section container subscribe-box hidden"> <div class="container__inner"> <div class="actions"> <div class="actions__left"> <h2>InfoQ Software Architects' Newsletter</h2> <span><p>A monthly overview of things you need to know as an architect or aspiring architect.</p> <p><a href="https://www.infoq.com/software-architects-newsletter#placeholderPastIssues">View an example</a></p> </span> <div class="newsletter__subscribe"> <form class="form gdpr" name="dataCollectCampaignNewsletterForm" id="dataCollectCampaignNewsletterForm" action="#" onsubmit="dataCollectNewsletter.saveSubscription(); return false;"> <div class="field newsletter__mail input__text input__no-label input__medium email"> <label for="email-dataCollectnewsletter-infoq" class="label field__label">Enter your e-mail address</label> <input id="email-dataCollectnewsletter-infoq" name="footerNewsletterEmail" placeholder="Enter your e-mail address" class="input field__input" type="email"/> <input type="text" name="emailH" id="input_email_h_d" aria-required="false" style="display:none !important" tabindex="-1" autocomplete="off"/> <input type="hidden" id="fnt_d" name="fnt_d" value="Hi0KZQuTTuvFpEMd"/> <input type="hidden" id="dataCollectNewsletterType" name="dataCollectNewsletterType" value="regular"/> <input type="hidden" id="cmpi_d" name="cmpi_d" value="4"/> </div> <div class="hidden"> <span class="input__select field country"> <label for="input-dataCollect-newsletter-country" class="label field__label">Select your country</label> <select id="input-dataCollect-newsletter-country" class="select field__input"> <option value="" class="select__option">Select a country</option> </select> <p class="input__message field__desc"></p> </span> <span class="input__checkbox field hidden"> <input type="checkbox" id="gdpr-consent-campaign"> <label for="gdpr-consent-campaign" class="label"><span>I consent to InfoQ.com handling my data as explained in this <a href="https://www.infoq.com/privacy-notice">Privacy Notice</a>.</span></label> </span> </div> <input type="submit" role="button" value="Subscribe" class="button button__medium button__red" onclick="return dataCollectNewsletter.validateEmail('Invalid email address');"/> </form> <p class="meta"> <a href="/privacy-notice/" target="_blank">We protect your privacy.</a> </p> <span class="success" style="display:none;" id="dataCollectNewsletterMessage"></span> </div> </div> <div class="actions__right"> <button aria-label="Close" class="close closeBox button button__unstyled button__icon icon icon__close-black icon--only">Close</button> </div> </div> </div> </section> <script type="text/javascript"> var dataCollectNewsletter = new Newsletter('Enter your e-mail address', 'email-dataCollectnewsletter-infoq', 'dataCollectNewsletterType','dataCollectNewsletterMessage', 'fnt_d', 'input_email_h_d', 'input-dataCollect-newsletter-country', 'cmpi_d','popup_all_pages'); </script> <div class="infoq" id="infoq"> <!-- ####### SITE START ######### --> <section class="section container promo hidden"> <div class="container__inner"> <div class="actions"> <div class="actions__left"> <p> <span>InfoQ Dev Summit Boston (June 9-10, 2025): Actionable advice on critical development priorities from active, senior software developers. </span> <a class="btn" href="/url/pb/67be92fa-655a-4ec2-9dc1-f52c5f1888cb/" target="_blank" rel="nofollow"> Register Now </a> </p> </div> <div class="actions__right"> <button aria-label="Close" class="close button button__unstyled button__icon icon icon__close-white icon--only close-top-promo">Close </button> </div> </div> </div> </section> <header class="header"> <button aria-label="Toggle Navigation" tabindex="0" class="burger header__toggle button">Toggle Navigation <span></span><span></span><span></span></button> <div class="header__container container"> <div class="container__inner"> <div data-nosnippet class="actions header__top"> <div class="actions__left"> <p class="header__desc my-0"> Facilitating the Spread of Knowledge and Innovation in Professional Software Development </p> <div class="button__dropdown dropdown header__more my-0 dropdown__center"> <button aria-label="English edition" class="button button__unstyled button__small">English edition </button> <div class="dropdown__holder"> <!----> <div class="dropdown__content"> <ul class="no-style dropdown__nav languagesEdition"> <li class="active"><a href="#" onclick="return false;">English edition</a></li> <li><a href="https://www.infoq.cn">Chinese edition</a></li> <li><a href="/jp/">Japanese edition</a></li> <li><a href="/fr/">French edition</a></li> </ul> </div> <!----> </div> </div> <a class="my-0 contribute-link" role="button" href="/write-for-infoq/" title="Write for InfoQ"> Write for InfoQ </a> </div> <div class="actions__right"> <div> <form id="searchForm" name="search-form" action="/search.action" enctype="multipart/form-data" class="search icon__search icon icon__green"> <div class="field search__bar input__text input__no-label input__small"> <label for="search" class="label field__label">Search</label> <input name="queryString" type="text" id="search" value="" placeholder="Search" class="input field__input"> <input type="hidden" name="page" value="1"/> <input type="hidden" size="15" name="searchOrder"> </div> <input value="Search" type="submit" class="search__go"> </form> </div> <div class="button__dropdown dropdown user__login"> <button aria-label="Sign Up / Login" class="button button__small button__green button__arrow arrow__true button__icon icon icon__user icon--only">Sign Up / Login</button> <div class="dropdown__holder"> <div class="dropdown__content"> <div class="login__dropdown"> <div class="login__module"> <div class="login__username"> <form id="login-form" data-vv-scope="login" class="login__form form" action="/login.action"> <input type="hidden" id="loginWidgetOrigin" name="loginWidgetOrigin" value="mainLogin"/> <input type="hidden" name="fromP13N" id="isP13n" value="false"/> <input type="hidden" name="fromP13NId" id="p13n-id" value=""/> <input type="hidden" name="fromP13NType" id="p13n-type" value=""/> <div class="field form__row input__text input__small" data-vv-as="Email" data-vv-scope="login"> <label for="email" class="label field__label">Email</label> <input type="text" id="email" placeholder="" class="input field__input" name="username"> </div> <div class="field form__row input__password input__small" data-vv-as="Password" data-vv-scope="login"> <label for="password" class="label field__label">Password</label> <input type="password" id="password" placeholder="" class="input field__input" name="password"> <p data-message="resultMessage"></p> </div> <input type="submit" value="Login" class="form__row button button__medium button__green"> <div class="login__actions"> <button aria-label="Forgot password ?" class="forgot button button__unstyled">Forgot password ?</button> </div> </form> <form id="forgot-password-form" data-vv-scope="forgot" class="forgot__form form" action="/resetpasswordinit.action" onsubmit="UserActions_Login.showMessage($(this),JSi18n.login_sendingRequest);"> <div data-vv-as="Email" data-vv-scope="forgot" class="field form__row input__text input__small"> <label for="forgotten_email" class="label field__label">InfoQ Account Email</label> <input id="forgotten_email" name="email" placeholder="" class="input field__input" type="text" onkeyup="UserActions_ResetPass.checkInputStatus('forgotten_email','forgotPassMessage',JSi18n.login_invalid_email,'submit_resetPass');"> <p id="forgotPassMessage" data-message="resultMessage"></p> </div> <input type="submit" id="submit_resetPass" value="Send Recovery Email" class="button button__medium button__green" onclick="return UserActions_ResetPass.checkInputStatus('forgotten_email','forgotPassMessage',JSi18n.login_invalid_email,'submit_resetPass');"> <p class="login__actions"> <button aria-label="Back to login" class="back-to-login button button__unstyled">Back to login</button> </p> </form> <form id="email-revalidation-form" data-vv-scope="revalidation" class="revalidation__form form" action="/reactivate.action" onsubmit="UserActions_Login.showMessage($(this),JSi18n.login_sendingRequest);"> <div data-vv-as="Email" data-vv-scope="revalidation" class="field form__row input__text input__small"> <label for="revalidated_email" class="label field__label">Resend Activation</label> <input id="revalidated_email" name="email" placeholder="" class="input field__input" type="text" onkeyup="UserActions_ResetPass.checkInputStatus('revalidated_email','emailRevalidMessage',JSi18n.login_invalid_email,'submit_resetPass');"> <p id="emailRevalidMessage" data-message="resultMessage"></p> </div> <input type="submit" value="Resend" class="button button__medium button__green" onclick="return UserActions_ResetPass.checkInputStatus('revalidated_email','emailRevalidMessage',JSi18n.login_invalid_email,'submit_resetPass');"> <p class="login__actions"> <button id="show-login" aria-label="Back to login" class="back-to-login button button__unstyled">Back to login</button> </p> </form> </div> <div class="login__social"> <h4 class="heading">Login with:</h4> <div class="social__connect form__row login__socials"> <a href="/social/googleLogin.action?fl=login" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__medium button__gray button__icon icon icon__google" title="Login with Google">Google</a> <a href="/social/liveLogin.action?fl=login" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__medium button__icon icon icon__microsoft" title="Login with Microsoft">Microsoft</a> <a href="/twitter-info" class="button button__medium button__icon icon icon__twitter" title="Login with Twitter">Twitter</a> <a href="/social/facebookLogin.action?fl=login" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__medium button__icon icon icon__fb" title="Login with Facebook">Facebook</a> </div> </div> <div class="login__signup"> <h4 class="heading">Don't have an InfoQ account?</h4> <a href="/reginit.action?" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__medium button__green">Sign Up</a> </div> </div> </div> </div> </div> </div> </div> </div> <div class="header__middle"> <div class="logo header__logo"> <a href="/" class="logo__symbol active"> Logo - Back to homepage </a> </div> <div class="content-items"> <a href="/news/" class="icon icon__news">News</a> <a href="/articles/" class="icon icon__articles">Articles</a> <a href="/presentations/" class="icon icon__presentations">Presentations</a> <a href="/podcasts/" class="icon icon__podcasts">Podcasts</a> <a href="/minibooks/" class="icon icon__guides">Guides</a> </div> <div class="header__items columns"> <div> <h3 class="widget__heading">Topics</h3> <nav class="nav header__nav topics" data-trk-ref="header_personas"> <div class="has--subnav li-nav"> <a href="/development/" title="Development" class="nav__category">Development</a> <div class="nav__subnav subnav"> <ul class="subnav__categories no-style"> <li><a href="/java/" title="Java">Java</a></li> <li><a href="/kotlin/" title="Kotlin">Kotlin</a></li> <li><a href="/dotnet/" title=".Net">.Net</a></li> <li><a href="/c_sharp/" title="C#">C#</a></li> <li><a href="/swift/" title="Swift">Swift</a></li> <li><a href="/golang/" title="Go">Go</a></li> <li><a href="/rust/" title="Rust">Rust</a></li> <li><a href="/javascript/" title="JavaScript">JavaScript</a></li> </ul> <div class="subnav__content" data-id="6815"> <div class="heading__container actions"> <div class="actions__left"> <h3 class="heading section__heading">Featured in Development</h3> </div> </div> <ul data-size="large" data-horizontal="true" data-tax="" taxonomy="articles" class="cards no-style"> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/presentations/noise-tips">Practical Benchmarking: How To Detect Performance Changes in Noisy Results</a> </h4> <p class="card__excerpt">Matt Fleming provides tips for understanding noise, where it comes, and techniques for fighting it, plus some anecdotes and real-life examples from the world of open-source.</p> <div class="card__footer"></div> </div> <a href="/presentations/noise-tips" class="card__header"> <img loading="lazy" alt="Practical Benchmarking: How To Detect Performance Changes in Noisy Results" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/presentations/noise-tips/en/smallimage/matt-fleming-small-1738315572061.jpeg" class="card__image"/> </a> </div> </li> </ul> <a href="/development/" class="button__more button button__large button__arrow arrow__right">All in development</a> </div> </div> </div> <div class="has--subnav li-nav"> <a href="/architecture-design/" title="Architecture & Design" class="nav__category">Architecture & Design</a> <div class="nav__subnav subnav"> <ul class="subnav__categories no-style"> <li><a href="/architecture/" title="Architecture">Architecture</a></li> <li><a href="/enterprise-architecture/" title="Enterprise Architecture">Enterprise Architecture</a></li> <li><a href="/performance-scalability/" title="Scalability/Performance">Scalability/Performance</a></li> <li><a href="/design/" title="Design">Design</a></li> <li><a href="/Case_Study/" title="Case Studies">Case Studies</a></li> <li><a href="/microservices/" title="Microservices">Microservices</a></li> <li><a href="/servicemesh/" title="Service Mesh">Service Mesh</a></li> <li><a href="/DesignPattern/" title="Patterns">Patterns</a></li> <li><a href="/Security/" title="Security">Security</a></li> </ul> <div class="subnav__content" data-id="6816"> <div class="heading__container actions"> <div class="actions__left"> <h3 class="heading section__heading">Featured in Architecture & Design</h3> </div> </div> <ul data-size="large" data-horizontal="true" data-tax="" taxonomy="articles" class="cards no-style"> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/articles/architectural-experimentation-insurance">If Architectural Experimentation Is So Great, Why Aren’t You Doing It?</a> </h4> <p class="card__excerpt">Architectural experimentation sounds like a great idea, yet it does not seem to be used very frequently. In this article, we will explore some of the reasons why teams don’t use this powerful tool more often, and what they can do about leveraging that tool for successful outcomes.</p> <div class="card__footer"></div> </div> <a href="/articles/architectural-experimentation-insurance" class="card__header"> <img loading="lazy" alt="If Architectural Experimentation Is So Great, Why Aren’t You Doing It?" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/architectural-experimentation-insurance/en/smallimage/architectural-experimentation-thumbnail-1740472356165.jpg" class="card__image"/> </a> </div> </li> </ul> <a href="/architecture-design/" class="button__more button button__large button__arrow arrow__right">All in architecture-design</a> </div> </div> </div> <div class="has--subnav li-nav"> <a href="/ai-ml-data-eng/" title="AI Infrastructure" class="nav__category">AI Infrastructure</a> <div class="nav__subnav subnav"> <ul class="subnav__categories no-style"> <li><a href="/bigdata/" title="Big Data">Big Data</a></li> <li><a href="/machinelearning/" title="Machine Learning">Machine Learning</a></li> <li><a href="/nosql/" title="NoSQL">NoSQL</a></li> <li><a href="/database/" title="Database">Database</a></li> <li><a href="/data-analytics/" title="Data Analytics">Data Analytics</a></li> <li><a href="/streaming/" title="Streaming">Streaming</a></li> </ul> <div class="subnav__content" data-id="16690"> <div class="heading__container actions"> <div class="actions__left"> <h3 class="heading section__heading">Featured in AI, ML & Data Engineering</h3> </div> </div> <ul data-size="large" data-horizontal="true" data-tax="" taxonomy="articles" class="cards no-style"> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/articles/secure-ai-powered-early-detection-system">Secure AI-Powered Early Detection System for Medical Data Analysis & Diagnosis</a> </h4> <p class="card__excerpt">In this article, author discusses the techniques for securing AI applications in healthcare with an use case of early detection system for medical data analysis & diagnosis. The proposed layered architecture includes application components to support secure computation, ai modeling, governance and compliance, and monitoring and auditing.</p> <div class="card__footer"></div> </div> <a href="/articles/secure-ai-powered-early-detection-system" class="card__header"> <img loading="lazy" alt="Secure AI-Powered Early Detection System for Medical Data Analysis & Diagnosis" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/secure-ai-powered-early-detection-system/en/smallimage/designing-architecture-ai-models-thumbnail-1740475990469.jpg" class="card__image"/> </a> </div> </li> </ul> <a href="/ai-ml-data-eng/" class="button__more button button__large button__arrow arrow__right">All in ai-ml-data-eng</a> </div> </div> </div> <div class="has--subnav li-nav"> <a href="/culture-methods/" title="Culture & Methods" class="nav__category">Culture & Methods</a> <div class="nav__subnav subnav"> <ul class="subnav__categories no-style"> <li><a href="/agile/" title="Agile">Agile</a></li> <li><a href="/diversity/" title="Diversity">Diversity</a></li> <li><a href="/leadership/" title="Leadership">Leadership</a></li> <li><a href="/lean/" title="Lean/Kanban">Lean/Kanban</a></li> <li><a href="/personal-growth/" title="Personal Growth">Personal Growth</a></li> <li><a href="/scrum/" title="Scrum">Scrum</a></li> <li><a href="/sociocracy/" title="Sociocracy">Sociocracy</a></li> <li><a href="/software_craftsmanship/" title="Software Craftmanship">Software Craftmanship</a></li> <li><a href="/team-collaboration/" title="Team Collaboration">Team Collaboration</a></li> <li><a href="/testing/" title="Testing">Testing</a></li> <li><a href="/ux/" title="UX">UX</a></li> </ul> <div class="subnav__content" data-id="6817"> <div class="heading__container actions"> <div class="actions__left"> <h3 class="heading section__heading">Featured in Culture & Methods</h3> </div> </div> <ul data-size="large" data-horizontal="true" data-tax="" taxonomy="articles" class="cards no-style"> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/podcasts/resilience-observability-automation">Resilience, Observability and Unintended Consequences of Automation</a> </h4> <p class="card__excerpt">In this podcast, Shane Hastie, the Lead Editor for Culture & Methods, spoke to Courtney Nash about her research on the unintended consequences of automation in software systems, the importance of learning from incidents, and maintaining human expertise in complex systems.</p> <div class="card__footer"></div> </div> <a href="/podcasts/resilience-observability-automation" class="card__header"> <img loading="lazy" alt="Resilience, Observability and Unintended Consequences of Automation" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/podcasts/resilience-observability-automation/en/smallimage/engineering-culture-podcast-thumbnail-1740403416752.jpg" class="card__image"/> </a> </div> </li> </ul> <a href="/culture-methods/" class="button__more button button__large button__arrow arrow__right">All in culture-methods</a> </div> </div> </div> <div class="has--subnav li-nav"> <a href="/devops/" class="nav__category">DevOps</a> <div class="nav__subnav subnav"> <ul class="subnav__categories no-style"> <li><a href="/infrastructure/" title="Infrastructure">Infrastructure</a></li> <li><a href="/continuous_delivery/" title="Continuous Delivery">Continuous Delivery</a></li> <li><a href="/automation/" title="Automation">Automation</a></li> <li><a href="/containers/" title="Containers">Containers</a></li> <li><a href="/cloud-computing/" title="Cloud">Cloud</a></li> <li><a href="/observability/" title="Observability">Observability</a></li> </ul> <div class="subnav__content" data-id="6043"> <div class="heading__container actions"> <div class="actions__left"> <h3 class="heading section__heading">Featured in DevOps</h3> </div> </div> <ul data-size="large" data-horizontal="true" data-tax="" taxonomy="articles" class="cards no-style"> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/presentations/devsecops-ai">Efficient DevSecOps Workflows with a Little Help from AI</a> </h4> <p class="card__excerpt">Michael Friedrich tells a story about experienced pain points, wasted hours debugging and solving, and learning how a little help from AI makes DevSecOps workflows efficient again.</p> <div class="card__footer"></div> </div> <a href="/presentations/devsecops-ai" class="card__header"> <img loading="lazy" alt="Efficient DevSecOps Workflows with a Little Help from AI" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/presentations/devsecops-ai/en/smallimage/MichaelFriedrich-small-1734515745316.jpg" class="card__image"/> </a> </div> </li> </ul> <a href="/devops/" class="button__more button button__large button__arrow arrow__right">All in devops</a> </div> </div> </div> <div class="li-nav"> <a rel="noreferrer noopener" href="https://events.infoq.com/" class="nav__category" title="Events" target="_blank">Events</a> </div> </nav> </div> <div> <h3 class="widget__heading">Helpful links</h3> <ul class="no-style header__nav"> <li> <a href="/about-infoq" title="About InfoQ"> About InfoQ </a> </li> <li> <a href="/infoq-editors" title="InfoQ Editors"> InfoQ Editors </a> </li> <li> <a href="/write-for-infoq" title="Write for InfoQ"> Write for InfoQ </a> </li> <li> <a href="/about-c4media" title="About C4Media"> About C4Media </a> </li> <li> <a rel="noreferrer noopener" href="https://c4media.com/diversity" title="Diversity" target="_blank">Diversity</a> </li> </ul> </div> <div> <h3 class="widget__heading">Choose your language</h3> <ul class="language__switcher no-style"> <li class="active"><a href="#" onclick="return false;" title="InfoQ English">En</a></li> <li><a href="https://www.infoq.cn">中文</a></li> <li><a href="/jp/">日本</a></li> <li><a href="/fr/">Fr</a></li> </ul> </div> </div> </div> <div data-nosnippet class="actions header__bottom header__bottom__events"> <div class="actions__left"> <div class="header__events-all"> <a href="https://qconlondon.com/?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_qlondon25" rel="nofollow" target="_blank" class="header__event-slot"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvbG9uZG9uLXRvcC11cGRhdGVkMi5qcGciLCJlZGl0cyI6IHsid2VicCI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvbG9uZG9uLXRvcC11cGRhdGVkMi5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvbG9uZG9uLXRvcC11cGRhdGVkMi5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" loading="lazy" width="40px" height="40px" alt="QCon London - image"></picture> <div> <span>QCon London</span> <p>Discover emerging trends, insights, and real-world best practices in software development & tech leadership. Join now.</p> </div> </a> <a href="https://devsummit.infoq.com/conference/boston2025?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_idsboston25" rel="nofollow" target="_blank" class="header__event-slot"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvSW5mb1FEZXZTdW1taXQtdG9wLmpwZyIsImVkaXRzIjogeyJ3ZWJwIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvSW5mb1FEZXZTdW1taXQtdG9wLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvSW5mb1FEZXZTdW1taXQtdG9wLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" loading="lazy" width="40px" height="40px" alt="InfoQ Dev Summit Boston - image"></picture> <div> <span>InfoQ Dev Summit Boston</span> <p>Learn how senior software developers are solving the challenges you face. Register now with early bird tickets.</p> </div> </a> <a href="https://devsummit.infoq.com/conference/munich2025?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_idsmunich25" rel="nofollow" target="_blank" class="header__event-slot"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvSURTLU11bmljaC10b3AuanBnIiwiZWRpdHMiOiB7IndlYnAiOiB7ICJxdWFsaXR5Ijo4MH19fQ==" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvSURTLU11bmljaC10b3AuanBnIiwiZWRpdHMiOiB7ImpwZWciOiB7ICJxdWFsaXR5Ijo4MH19fQ==" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvSURTLU11bmljaC10b3AuanBnIiwiZWRpdHMiOiB7ImpwZWciOiB7ICJxdWFsaXR5Ijo4MH19fQ==" loading="lazy" width="40px" height="40px" alt="InfoQ Dev Summit Munich - image"></picture> <div> <span>InfoQ Dev Summit Munich</span> <p>Learn practical solutions to today's most pressing software challenges. Register now with early bird tickets.</p> </div> </a> <a href="https://qconsf.com/?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_qsf25" rel="nofollow" target="_blank" class="header__event-slot"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvU0YtdG9wLmpwZyIsImVkaXRzIjogeyJ3ZWJwIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvU0YtdG9wLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvU0YtdG9wLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" loading="lazy" width="40px" height="40px" alt="QCon San Francisco - image"></picture> <div> <span>QCon San Francisco</span> <p>Explore insights, real-world best practices and solutions in software development & leadership. Register now.</p> </div> </a> </div> </div> <!----> </div> </div> </div> </header> <!-- ####### CONTENT START ######### --> <main> <article data-type="article" class="article"> <section class="section container white"> <div class="container__inner"> <p class="crumbs"> <span data-nosnippet><a href="/" title="InfoQ Homepage">InfoQ Homepage</a></span> <span data-nosnippet><a href="/articles" title="Articles">Articles</a></span> <span data-nosnippet class="active">If Architectural Experimentation Is So Great, Why Aren’t You Doing It?</span> </p> <div class="actions"> <div class="actions__left"> <div class="article__category architecture-design"> <a href="/architecture-design/" class="article__tag box--info" title="Architecture & Design"> Architecture & Design </a> </div> </div> <div class="actions__right"> <div data-nosnippet class="notice"> <div class="box--warning"> <a target="_blank" rel="nofollow" href="https://devsummit.infoq.com/conference/munich2025?utm_source=infoq&utm_medium=referral&utm_campaign=infoqyellowbox_idsmunich25 ">InfoQ Dev Summit Munich (October 15-16): Explore proven strategies for optimizing your software development approach. </a> </div> </div> </div> </div> <div class="actions heading__container article__heading"> <div class="actions__left"> <h1 class="heading"> If Architectural Experimentation Is So Great, Why Aren’t You Doing It? </h1> </div> </div> <script type="text/javascript"> $("#translated_"+InfoQConstants.userDetectedCountryCode.toLowerCase()).show(); </script> <div class="columns article__explore"> <div class="article__main" data-col="4/6"> <div class="article__metadata metadata"> <p class="article__readTime date">Feb 28, 2025<span class="dot"></span> 9 min read </p> <div class="widget article__authors"> <div> <p class="meta">by</p> <ul class="no-style authors"> <li data-id="author-Pierre-Pureur"> <p class="meta author__bio"> <a href="/profile/Pierre-Pureur/" class="avatar author__avatar" aria-label="Pierre Pureur"></a> <span class="author__name"> <a href="/profile/Pierre-Pureur/" class="author__link">Pierre Pureur</a> </span> </p> </li> <li data-id="author-Kurt-Bittner"> <p class="meta author__bio"> <a href="/profile/Kurt-Bittner/" class="avatar author__avatar" aria-label="Kurt Bittner"></a> <span class="author__name"> <a href="/profile/Kurt-Bittner/" class="author__link">Kurt Bittner</a> </span> </p> </li> </ul> </div> <div> <p class="meta">reviewed by</p> <ul class="no-style authors"> <li data-id="author-Thomas-Betts"> <p class="meta author__bio"> <a href="/profile/Thomas-Betts/" class="avatar author__avatar" aria-label="Thomas Betts"></a> <span class="author__name"> <a href="/profile/Thomas-Betts/" class="author__link">Thomas Betts</a> </span> </p> </li> </ul> </div> </div> <div data-nosnippet class="cta_write_infoq"> <h4>Write & Win: InfoQ Contest</h4> <strong>Join the contest to:</strong> <span style="line-height: 1.6; margin-bottom: 5px;"> <ul style="margin: 0;"> <li style="margin-bottom: 0">Win a conference ticket</li> <li style="margin-bottom: 0">Boost your profile</li> <li style="margin-bottom: 0">Help the community</li> </ul> </span> <a href="https://bit.ly/4bkSdpH" target="_blank">Send your article proposal</a> </div> </div> <div class="article__content"> <div class="actions__left actions__sidebar article__actions"> <script type="application/javascript"> var playing = false; function ttsPlaying(content_url) { if (loggedIn && !playing) { gtag('event', 'GA4_EVENT', { 'category': 'tts', 'action': 'play', 'label': content_url }); playing = true; } } </script> <div id="audio-overlay" role="button" tabindex="0" aria-label="Click to open audio player" class="audio-overlay-main"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none"> <path d="M3.33337 2L12.6667 8L3.33337 14V2Z" fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path> </svg> <span class="audio-overlay-main-text">Listen to this article - <span id="total-length">0:00</span></span> </div> <div id="audio-player-container" role="region" aria-label="Audio player" class="hidden audio-player-container-main"> <div id="status-announcer" aria-live="polite" class="sr-only">Audio ready to play</div> <div> <audio id="audio-player" preload="metadata" aria-hidden="true" class="hidden" onplaying="ttsPlaying('/articles/architectural-experimentation-insurance');"> <source src="" type="audio/mpeg"> Your browser does not support the audio element. </audio> <div class="play-container"> <button id="play-button" aria-label="Play audio" aria-pressed="false" class="play-button-main"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none"> <path d="M3.33337 2L12.6667 8L3.33337 14V2Z" fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </button> <div class="audio-container"> <div class="audio-controls"> <span id="current-time" role="timer" class="audio-timer">0:00</span> <div id="progress-container" role="slider" aria-label="Audio progress" aria-valuemin="0" aria-valuemax="100" aria-valuenow="NaN" tabindex="0" class="audio-progress-container" aria-valuetext="0:00 of NaN:NaN"> <div class="custom-progress-container"> <div id="progress-bar" class="custom-progress-bar"></div> <div id="progress-handle" class="opacity-0 custom-progress-handle"></div> </div> <div class="audio-progress-wrapper"> <div id="progress-bar" class="audio-progress-bar"></div> <div id="progress-handle" class="opacity-0 audio-progress-handle"></div> </div> </div> <span id="duration" role="timer" class="audio-timer">0:00</span> <div class="flex gap-2 items-center"> <button id="volume-button" aria-label="Toggle mute" type="button" class="custom-volume-button"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-muted-foreground-custom"> <polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon> <path d="M15.54 8.46a5 5 0 0 1 0 7.07"></path> <path d="M19.07 4.93a10 10 0 0 1 0 14.14"></path> </svg> </button> <div id="volume-slider" role="slider" aria-label="Volume" aria-valuemin="0" aria-valuemax="100" aria-valuenow="100" tabindex="0" class="custom-slider"> <div class="audio-progress-wrapper"> <div id="volume-bar" class="custom-volume-bar"></div> <div id="volume-handle" class="custom-volume-handle"></div> </div> </div> </div> <div class="custom-relative-wrapper"> <button id="speed-button" type="button" aria-label="Playback speed settings" class="custom-speed-button"> <svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="custom-speed-button-icon"> <path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"> </path> <circle cx="12" cy="12" r="3"></circle> </svg> </button> <div id="speed-menu" role="menu" aria-orientation="vertical" aria-labelledby="speed-button" class="hidden custom-speed-menu"><button role="menuitem" tabindex="0" data-speed="1" data-active="true" class="custom-speed-menu-item">Normal</button><button role="menuitem" tabindex="0" data-speed="1.25" class="custom-speed-menu-item">1.25x</button><button role="menuitem" tabindex="0" data-speed="1.5" class="custom-speed-menu-item">1.5x</button></div> </div> </div> </div> </div> </div> </div> <button id="toggleLikeContent" class="icon button button__icon like button__gray icon__like" aria-label="Like">Like</button> <div class="bookmarkReading"> <button id="bookmarkBtn" data-ref="bookmarkPage" aria-label="Read later" class="login button__gray button button__icon icon icon__bookmark icon--only"> </button> <!-- new dropdown rading list --> <div class="my-0 button__dropdown dropdown reading_list dropdown__center" id="showBookmarks"> <button aria-label="Reading list" class="button button__unstyled button__small"></button> <div class="dropdown__holder"> <div class="dropdown__content"> <ul class="no-style dropdown__nav"> <li class="active"><a href="/showbookmarks.action">Reading list</a></li> </ul> </div> </div> </div> <div id="toastContainer" class="toast-none toast-hide"> <div class="toast"><span></span></div> </div> </div> <script type="text/javascript"> if(loggedIn){ $('#showBookmarks').css('display', 'flex'); } function performBookmark() { Bookmarks.toggleBookmark('articles', 'architectural-experimentation-insurance'); } infoq.event.on('bookmarkRequested', function(e) { Bookmarks.toggleBookmark('articles', 'architectural-experimentation-insurance'); }); infoq.event.on("loaded", function(){ if(loggedIn){ var href = window.location.href; if(href.indexOf("#bookmarkPage") != -1){ $('#bookmarkBtn').click(); } } }); $(document).ready(function() { if(Bookmarks.isContentBookmarked == 'true'){ $('#bookmarkBtn').addClass('button__green'); $('#bookmarkBtn').removeClass('button__gray'); }else{ $('#bookmarkBtn').removeClass('button__green'); $('#bookmarkBtn').addClass('button__gray'); } }); </script> </div> <div class="article__data"> <div class="takeaways"> <h3 class="icon icon__takeaways heading">Key Takeaways</h3> <ul> <li>Selling yourself and your stakeholders on doing architectural experiments is hard, despite the significant benefits of this approach; you like to think that your decisions are good but when it comes to architecture, you don’t know what you don’t know.</li> <li>Stakeholders don’t like to spend money on things they see as superfluous, and they usually see running experiments as simply "playing around". You have to show them that experimentation saves money in the long run by making better-informed decisions.</li> <li>These better decisions also reduce the overall amount of work you need to do by reducing costly rework.</li> <li>You may think that you are already experimenting by doing Proofs of Concept (POCs). Architectural experiments and POCs have different purposes. A POC helps validate that a business opportunity is worth pursuing, while an architectural experiment tests some parts of the solution to validate that it will support business goals.</li> <li>Sometimes, architectural experiments need to be run in the customer’s environment because there is no way to simulate real-world conditions. This sounds frightening, but techniques can be used to roll back the experiments quickly if they start to go badly.<br /> </li> </ul> <div class="separator separator__three-dots center"></div> </div> <p>As we stated in a previous <a href="https://www.infoq.com/articles/architecture-experimentation">article</a>, being wrong is sometimes inevitable in software architecting; if you are never wrong, you are not challenging yourself enough, and you are not learning. The essential thing is to test our decisions as much as possible with experiments that challenge our assumptions and to construct the system in such a way that when our decisions are incorrect the system does not fail catastrophically.</p> <p>Architectural experimentation sounds like a great idea, yet it does not seem to be used very frequently. In this article, we will explore some of the reasons why teams don’t use this powerful tool more often, and what they can do about leveraging that tool for successful outcomes.</p> <h2>First, selling architectural experimentation to yourself is hard</h2> <p>After all, you probably already feel that you don’t have enough time to do the work you need to do, so how are you going to find time to run experiments?</p> <div class="clear"></div> <script type="text/javascript"> var uriMapping = "articles"; var showVcr = "false"; var fillWithVcr = "true"; var sponsorshipsJson = "{"links":[{"styleName":"pdf","style":"PDF","text":"9 Principles for Improving Cloud Resilience - Download Free Report (By Gartner)","id":"4cd2e6a3-253b-46c5-bea7-a641a217bb26","target":"https://www.infoq.com/vendorcontent/show.action?vcr=c394113e-92a5-4785-a3db-326a4ca4684b&utm_source=infoq&utm_medium=RSC&utm_campaign=vcr_fixed_link","active":true}]}"; var sponsoredLinks = $.parseJSON($("<div/>").html(sponsorshipsJson).text()).links; var numberOfSponsoredVcrIds = sponsoredLinks != null ? sponsoredLinks.length : 0; var maxItems = 5 - numberOfSponsoredVcrIds; var intervalVcrSponsorship = setInterval(function() { if (window.vcrsLoaded) { clearInterval(intervalVcrSponsorship); if(showVcr || fillWithVcr) { if(fillWithVcr) { for(var index in window.vcrList) { if(VCR.isVcrSponsored(sponsoredLinks, window.vcrList[index])) { VCR.addToExcludedList(window.vcrList[index]); } } } var vcrs = VCR.getByTopicsAndCommunities(window.vcrList, topicIds, communityIds, maxItems, false, null); if (vcrs != null && vcrs.length > 0 || (sponsoredLinks != null && sponsoredLinks.length > 0)) { VCR.addToExcludedList(vcrs); var $widget = jQuery('.related__vc'); getCommonElements(vcrs, uriMapping, "EMBEDDED"); $widget.css("display", "flex"); } else { var $widget = jQuery('.related__vc'); $widget.remove(); } } window.contentVcrFinished = true; // search for infoq.event.on("contentVcrFinished",... to see how/where it is used infoq.event.trigger("contentVcrFinished"); } }, 200); </script> <input type="hidden" name="" value="2498" id="cont_item_primary_topic"/> <div class="related__group related__vc nocontent f_rvcbox" data-trk-view="true" data-trk-impr="true" data-place="EMBEDDED" style="display: flex" > <ul class="no-style rvc__list"> <h4 class="heading">Related Sponsored Content</h4> <div class="f_rvcList"></div> <li> <span class="icon rvc__icon icon__small icon__pdf"></span> <h5 class="rvc__title"> <a href="/url/f/4cd2e6a3-253b-46c5-bea7-a641a217bb26/" class="rvc__link" rel="nofollow"> 9 Principles for Improving Cloud Resilience - Download Free Report (By Gartner) </a> </h5> </li> </ul> <div class="related__prsp f_sponsorship" data-trk-view="true" data-place="EMBEDDED" data-trk-impr="true" jsh="{"topic":"Architecture","id":"999b3bed-b010-4184-aa98-7cb5ba75aae2","title":"Akka TS Core 01/01/2025 - 06/30/2025"}"> <h4 class="heading">Related Sponsor</h4> <a href="/url/f/563ea786-4425-4e8a-9f27-29af3816b68e/" target="_blank" rel="nofollow"> <img loading="lazy" src="https://imgopt.infoq.com//fit-in/290x500/filters:quality(100)/filters:no_upscale()/sponsorship/topic/999b3bed-b010-4184-aa98-7cb5ba75aae2/AkkaLogoRSB2-1734601591399.png" class="related__img" alt="Related sponsor icon"/> </a> <div class="related__desc"> <p style="clear: both; padding: 10px 0 0 0;"><b>Build and run apps that react to change.</b> Responsive by design, Akka apps are elastic, agile, and resilient. <b><a href="/url/f/72db937d-f1e5-4201-9e0d-29c8535c51d5/" target="_blank" rel="nofollow">Learn more</a>.</b></p> </div> </div> </div> <p>You need to experiment for a simple reason: you don’t know what the solution needs to be because you don’t know what you don’t know. This is an uncomfortable feeling that no one really wants to talk about. Bringing these issues into the open stimulates healthy discussion that shape the architecture, but before you can have them you need data.</p> <p>One of the forces to overcome in these discussions is confirmation bias, or the belief that you already know what the solution is. Experimentation helps you to challenge your assumptions to reach a better solution. The problem is, as the saying goes, "the truth will set you free, but first it will make you miserable". Examples of this include:</p> <ul> <li>Experimentation may expose that solutions that have worked for you in the past may not work for the system you are working on now.</li> <li>It may expose you to the fact that some "enterprise standards" won’t work for your problem, forcing you to explain why you aren’t using them.</li> <li>It may expose that some assertions made by "experts" or important stakeholders are not true.</li> </ul> <p>Let’s consider a typical situation: you have made a commitment to deliver an MVP, although the scope is usually at least a little "flexible" or "elastic"; the scope is always a compromise. But the scope is also, usually, more optimistic and you rarely have the resources to confidently achieve it. From an architectural perspective you have to make decisions, but you don’t have enough information to be completely confident in them; you are making a lot of assumptions.</p> <div id="lowerFullwidthVCR"></div> <p>You <em>could</em>, and usually do, hope that your architectural decisions are correct and simply focus on delivering the MVP. If you are wrong, the failure could be catastrophic. If you are willing to take this risk you may want to keep your resumé updated.</p> <p>Your alternative is to take out an "insurance policy" of sorts by running experiments that will tell you whether your decisions are correct without resorting to catastrophic failure. Like an insurance policy, you will spend a small amount to protect yourself, but you will prevent a much greater loss.</p> <h2>Next, selling stakeholders on architectural experimentation is a challenge</h2> <p>As we mentioned in an earlier <a href="https://www.infoq.com/articles/effective-architecture-conversations">article</a>, getting stakeholder buy-in for architectural decisions is important - they control the money, and if they think you’re not spending it wisely they’ll cut you off. Stakeholders are, typically, averse to having you do work they don’t think has value, so you have to sell them on why you are spending time running architectural experiments.</p> <p>Architectural experimentation is important for two reasons: For functional requirements, MVPs are essential to confirm that you understand what customers really need. Architectural experiments do the same for technical decisions that support the MVP; they confirm that you understand how to satisfy the quality attribute requirements for the MVP.</p> <p>Architectural experiments are also important because they help to reduce the cost of the system over time. This has two parts: you will reduce the cost of developing the system by finding better solutions, earlier, and by not going down technology paths that won’t yield the results you want. Experimentation also pays for itself by reducing the cost of maintaining the system over time by finding more robust solutions.</p> <p>Ultimately running experiments is about saving money - reducing the cost of development by spending less on developing solutions that won’t work or that will cost too much to support. You can’t run experiments on every architectural decision and eliminate the cost of all unexpected changes, but you can run experiments to reduce the risk of being wrong about the most critical decisions. While stakeholders may not understand the technical aspects of your experiments, they can understand the monetary value.</p> <p>Of course running experiments is not free - they take time and money away from developing things that stakeholders want. But, like an insurance policy that costs the amount of premiums but protects you from much greater losses, experiments protect you from the effects of costly mistakes.</p> <p>Selling them on the need to do experiments can be especially challenging because it raises questions, in their minds anyway, about whether you know what you are doing. Aren’t you supposed to have all the answers already?</p> <p>The reality is that you don’t know everything you would like to know; developing software is a field that requires lifelong learning: technology is always changing, creating new opportunities and new trade-offs in solutions. Even when technology is relatively static, the problems you are trying to solve, and therefore their solutions, are always changing as well. No one can know everything and so experimentation is essential. As a result, the value of knowledge and experience is not in knowing everything up-front but in being able to ask the right questions.</p> <h2>You also never have enough time or money to run architectural experiments</h2> <p>Every software development effort we have ever been involved in has struggled to find the time and money to deliver the full scope of the initiative, as envisioned by stakeholders. Assuming this is true for you and your teams, how can you possibly add experimentation to the mix?</p> <p>The short answer is that not everything the stakeholders "want" is useful or necessary. The challenge is to find out what is useful and necessary before you spend time developing it. Investing in requirements reviews turns out not to be very useful; in many cases, the requirement sounds like a good idea until the stakeholders or customers actually see it.</p> <p>This is where MVPs can help improve architectural decisions by identifying functionality that doesn’t need to be supported by the architecture, which doubly reduces work. Using MVPs to figure out work that doesn’t need to be done makes room to run experiments about both value and architecture. Identifying scope and architectural work that isn’t necessary "pays" for the experiments that help to identify the work that isn’t needed.</p> <p>For example, some MVP experiments will reveal that a "must do" requirement isn’t really needed, and some architectural experiments will reveal that a complex and costly solution can be replaced with something much simpler to develop and support. Architectural decisions related to that work are also eliminated.</p> <p>The same is true for architectural experiments: they may reveal that a complex solution isn’t needed because a simpler one exists, or perhaps that an anticipated problem will never occur. Those experiments reduce the work needed to deliver the solution.</p> <p>Experiments sometimes reveal unanticipated scope when they uncover a new customer need, or that an anticipated architectural solution needs more work. On the whole, however, we have found that reductions in scope identified by experiments outweigh the time and money increases.</p> <p>At the start of the development work, of course, you won’t have any experiments to inform your decisions. You’re going to have to take it on faith that experimentation will identify extra work to pay for those first experiments; after that, the supporting evidence will be clear.</p> <h2>Then you think you’re already running architectural experiments, but you’re not</h2> <p>You may be running POCs and believe that you are running architectural experiments. POCs can be useful but they are not the same as architectural experiments or even MVPs. In our experience, POCs are hopefully interesting demonstrations of an idea but they lack the rigor needed to test a hypothesis. MVPs and architectural experiments are <a href="https://www.infoq.com/articles/architecture-experimentation/">intensely focused</a> on what they are testing and how.</p> <p>Some people may feel that because they run integration, system, regression, or load tests, they are running architectural experiments. Testing is important, but it comes too late to avoid over-investing based on potentially incorrect decisions. Testing usually only occurs once the solution is built, whereas experimentation occurs early to inform decisions whether the team should continue down a particular path. In addition, testing verifies the characteristics of a system but it is not designed to explicitly test hypotheses, which is a fundamental aspect of experimentation.</p> <h2>Finally, you can’t get the feedback you need without exposing customers to the experiments</h2> <p>Some conditions under which you need to evaluate your decisions can’t be simulated; only real-world conditions will expose potentially flawed assumptions. In these cases, you will need to run experiments directly with customers.</p> <p>This sounds scary, and it can be, but your alternative is to make a decision and hope for the best. In this case, you are still exposing the customer to a potentially severe risk, but without the careful controls of an experiment. In some sense, people do this all the time without knowing it, when they assume that our decisions are correct without testing them, but the consequences can be catastrophic.</p> <p>Experimentation allows us to be explicit about what hypothesis we are evaluating with our experiment and limits the impact of the experiment by focusing on specific evaluation criteria. Explicit experimentation helps us to devise ways to quickly abort the experiment if it starts to fail. For this, we may use techniques that support reliable, fast releases, with the ability to roll back, or techniques like A/B testing.</p> <p>As an example, consider the case where you want to evaluate whether a LLM-based chatbot can reduce the cost of staffing a call center. As an experiment, you could deploy the chatbot to a subset of your customers to see if it can correctly answer their questions. If it does, call center volume should go down, but you should also evaluate customer satisfaction to make sure that they are not simply giving up in frustration and going to another competitor with better support. If the chatbot is not effective, it can be easily turned off while you evaluate your next decision.</p> <h2>Conclusion</h2> <p>In a perfect world, we wouldn’t need to experiment; we would have perfect information and all of our decisions would be correct. Unfortunately, that isn’t reality.</p> <p>Experiments are paid for by reducing the cost, in money and time, of undoing bad decisions. They are an insurance policy that costs a little up-front but reduces the cost of the unforeseeable. In software architecture, the unforeseeable is usually related to unexpected behavior in a system, either because of unexpected customer behavior, including loads or volumes of transactions, but also because of interactions between different parts of the system.</p> <p>Using architectural experimentation isn’t easy despite some very significant benefits. You need to sell yourself first on the idea, then sell it to your stakeholders, and neither of these is an easy sell. Running architectural experiments requires time and probably money, and both of these are usually in short supply when attempting to deliver an MVP. But in the end, experimentation leads to better outcomes overall: lower-cost systems that are more resilient and sustainable.</p> <div class="author-section-full"> <!-- main wrapper for authors section --> <h2>About the Authors</h2> <!-- section title --> <div class="author" data-id="author-Pierre-Pureur"> <!-- main wrapper for each author --> <a href="/profile/Pierre-Pureur/" class="avatar author__avatar" aria-label="Pierre Pureur"> </a> <div class="content-author"> <h4><strong>Pierre Pureur</strong></h4> <div class="show-author-bio"> <p> <!-- author bio will be inserted by frontend --> </p> <span> <div class="icon button-icon icon__plus-circle"></div><span class="show-more">Show more</span><span class="show-less">Show less</span> </span> </div> </div> </div> <div class="author" data-id="author-Kurt-Bittner"> <!-- main wrapper for each author --> <a href="/profile/Kurt-Bittner/" class="avatar author__avatar" aria-label="Kurt Bittner"> </a> <div class="content-author"> <h4><strong>Kurt Bittner</strong></h4> <div class="show-author-bio"> <p> <!-- author bio will be inserted by frontend --> </p> <span> <div class="icon button-icon icon__plus-circle"></div><span class="show-more">Show more</span><span class="show-less">Show less</span> </span> </div> </div> </div> </div> </div> <div id="zoom-container"></div> <input type="hidden" name="" value="Thank you for your review!" id="cr_messages_submitSuccess"/> <input type="hidden" name="" value="Rating is required" id="cr_messages_ratingRequired"/> <input type="hidden" name="" value="If Architectural Experimentation Is So Great, Why Aren’t You Doing It?" id="cr_item_title"/> <input type="hidden" name="" value="Pierre Pureur,Kurt Bittner" id="cr_item_author"/> <input type="hidden" name="" value="http://www.infoq.com/articles/architectural-experimentation-insurance/" id="cr_item_url"/> <input type="hidden" name="" value="articles" id="cr_item_ctype"/> <input type="hidden" name="" value="en" id="cr_item_lang"/> <input type="hidden" name="" value="1740733200000" id="cr_item_published_time"/> <input type="hidden" name="" value="2498" id="cr_item_primary_topic"/> <script type="text/javascript"> ContentRating.readMessages(); ContentRating.readContentItem(); </script> <form class="box__border box form rate contentRatingWidget"> <h3 class="heading">Rate this Article</h3> <div class="criterias"> <div class="crit" id="relevance_fieldset"> <div class="crit__name">Adoption</div> <span class="stars"> <input type="radio" id="relevance-star5" name="rating-relevance" value="5" /><label class="star" for="relevance-star5" title="Innovator"></label> <input type="radio" id="relevance-star4" name="rating-relevance" value="4" /><label class="star" for="relevance-star4" title="Early adopter"></label> <input type="radio" id="relevance-star3" name="rating-relevance" value="3" /><label class="star" for="relevance-star3" title="Early majority"></label> <input type="radio" id="relevance-star2" name="rating-relevance" value="2" /><label class="star" for="relevance-star2" title="Late majority"></label> <input type="radio" id="relevance-star1" name="rating-relevance" value="1" /><label class="star" for="relevance-star1" title="Laggards"></label> </span> <span class="stars__total"></span> </div> <div class="crit" id="style_fieldset"> <div class="crit__name">Style</div> <span class="stars"> <input type="radio" id="style-star5" name="rating-style" value="5" /><label class="star" for="style-star5" title="Exceptional"></label> <input type="radio" id="style-star4" name="rating-style" value="4" /><label class="star" for="style-star4" title="Good"></label> <input type="radio" id="style-star3" name="rating-style" value="3" /><label class="star" for="style-star3" title="Average"></label> <input type="radio" id="style-star2" name="rating-style" value="2" /><label class="star" for="style-star2" title="Acceptable"></label> <input type="radio" id="style-star1" name="rating-style" value="1" /><label class="star" for="style-star1" title="Poor"></label> </span> <span class="stars__total"></span> </div> </div> </form> <div class="reviews tabs contentRatingWidget"> <div id="editorReview" class="tab" data-title="Editor Review"> <form class="box__border form contentRatingWidget" onsubmit="return false;"> <span class="field input__textarea" aria-required="false"> <textarea id="editor_input" placeholder="Click to leave your review..." name="textarea" value="" class="field__input"></textarea> <p class="input__message field__desc serverCallFeedback"></p> </span> <input class="button button__large submit_rating" type="submit" value="Submit"/> </form> </div> <div id="chiefEditorReview" class="tab" data-title="Chief Editor Action"> <form class="box__border form contentRatingWidget" onsubmit="return false;"> <span class="field input__textarea"> <textarea id="chiefEditor_input" placeholder="Chief Editor action..." value="" class="field__input"></textarea> <p class="input__message field__desc serverCallFeedback"></p> </span> <div class="actions"> <div class="actions__left"> <input class="button button__large submit_rating" type="submit" value="Submit"/> </div> <div class="actions__right"> <span class="field input__checkbox input--small"> <input type="checkbox" id="auth-checkbox" /> <label class="label" for="auth-checkbox"><span></span> Author Contacted</label> </span> </div> </div> </form> </div> </div> <script type="text/javascript"> if (!InfoQConstants.editorUser || InfoQConstants.editorUser == 'false') { $('.contentRatingWidget').remove(); } else { if (InfoQConstants.chiefEditor !== 'undefined' && InfoQConstants.chiefEditor == 'false') { $('#chiefEditorReview').remove(); } } </script> <div class="widget article__fromTopic topics"> <div class="widget__head related__for-topic" data-id="15595" data-trk-ref="content_primary_topic"> <h4 class="heading related__heading"> This content is in the <a href='/minimum-viable-architecture/'>Minimum Viable Architecture</a> topic </h4> </div> <h5 class="heading related__inline">Related Topics:</h5> <ul class="no-style topics related__topics topics__small" data-trk-ref="content_related_topic"> <li data-id="6816"> <a href="/architecture-design/" class="button related__topic button__small button__black">Architecture & Design</a> </li> <li data-id="15595"> <a href="/minimum-viable-architecture/" class="button related__topic button__small button__black">Minimum Viable Architecture</a> </li> <li data-id="1389"> <a href="/architecture/" class="button related__topic button__small button__black">Architecture</a> </li> </ul> </div> </div> <script type="text/javascript"> $(document).ready(function() { $.ajax({ url: "/api/recommendationlinks.action", contentType: "application/x-www-form-urlencoded; charset=utf-8", type: 'POST', data: { "primaryTopicAlias": "architecture-design", "topicIds": "4250,876", "title": "If Architectural Experimentation Is So Great, Why Aren’t You Doing It?", "contentPath": "/articles/architectural-experimentation-insurance", "language": "en" }, success: displayRelatedEditorial, async: false }); }); function displayRelatedEditorial(data) { $('.related__editorial h4').text("Related Editorial"); if (data && data.length > 0) { if(data[0].fromEs) { //change title and tracking params var box_title="Architecture & Design"; //replace html entity since it conflicts with style box_title=box_title.replace("&","&"); $('.related__editorial h4').text("Popular in " + box_title); } for (var i = 0; i < data.length; i++) { if (i === 5) { break; } if (data[i].url.indexOf("/articles/architectural-experimentation-insurance") !== -1) { console.log("Removing the current item from list..."); continue; } var theLinkURL = data[i].url; if(!theLinkURL.endsWith("/")) { theLinkURL = theLinkURL + "/"; } var link = $('<li><h5 class="rvc__title"><a title="" href="' + theLinkURL + '/">' + data[i].title + '</a></h5></li>'); $('.related__editorial ul').append(link); } $('.related__editorial').show(); displayWidget = true; }else{ $('.related__editorial').parent("li").remove(); } if(displayWidget==true){ $('.related__group').attr("data-cols", $('.related__group').find(">li").length); $('.related__group').css("display", "flex"); } } </script> <ul class="no-style related__group nocontent cards"> <li> <div class="related__editorial"> <h4 class="heading">Related Editorial</h4> <ul></ul> </div> </li> <li class="bg-gray is-movable"> <div class="related__prsp"> <h4 class="heading">Popular across InfoQ</h4> <ul> <li> <h5 class="rvc__title"> <a href="/news/2025/02/microsoft-majorana-quantum-chip/" class="rvc__link"> Microsoft Unveils the First Topological Quantum Chip Majorana 1 </a> </h5> </li> <li> <h5 class="rvc__title"> <a href="/news/2025/02/docker-bake-ga/" class="rvc__link"> Farewell to Build Scripts as Docker Bake Goes GA </a> </h5> </li> <li> <h5 class="rvc__title"> <a href="/news/2025/02/kube-resource-orchestrator/" class="rvc__link"> Cloud Giants Collaborate on New Kubernetes Resource Management Tool </a> </h5> </li> <li> <h5 class="rvc__title"> <a href="/podcasts/facilitating-software-architecture/" class="rvc__link"> Facilitating Software Architecture with Andrew Harmel-Law </a> </h5> </li> <li> <h5 class="rvc__title"> <a href="/news/2025/02/monzo-stand-in/" class="rvc__link"> How Monzo Bank Built a Cost-Effective, Unorthodox Backup System to Ensure Resilient Banking </a> </h5> </li> <li> <h5 class="rvc__title"> <a href="/news/2025/02/java-news-roundup-feb17-2025/" class="rvc__link"> Java News Roundup: NetBeans 25, Payara Platform, Hibernate Reactive, Gradle </a> </h5> </li> </ul> </div> </li> </ul> <div class="relative box box__border survey_box"> <a href="https://docs.google.com/forms/d/e/1FAIpQLSe1eTmbPtZjCTF633sHH3Q6e2C84Psu565lCfXBDrWJuLi69w/viewform" target="_blank" class="text-left"> <img src="https://cdn.infoq.com/statics_s1_20250228123444/styles/static/images/ui/contribute/article-contest.svg" loading="lazy" alt="Survey Image"> <h2 class="h2 text-green text-left">Write Your Way to a QCon or InfoQ Dev Summit!</h2> <p class="text-left">Join the InfoQ article competition to win a complimentary ticket to QCon or InfoQ Dev Summit! We're seeking in-depth technical articles written by software developers for software developers.</p> <span class="button__more button button__large">Send your proposal</span> </a> <div class="survey-image"><img src="https://cdn.infoq.com/statics_s1_20250228123444/styles/static/images/ui/contribute/article-contest-image.webp" loading="lazy" alt="Survey Image Cover"></div> </div> </div> <div class="article__more f_article_rightbar" data-col="2/6"> <script type="text/javascript"> window.finishedRightbarVcr = false; var _gaq = _gaq || []; var recomJson ="[{"topicsIds":null,"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/architecture-experimentation/en/smallimage/software-architecture-logo-small-1734346008461.jpg","contentType":"articles","date":1734433200000,"title":"Software Architecture and the Art of Experimentation","authorsList":["Pierre Pureur","Kurt Bittner"],"url":"/articles/architecture-experimentation","itemPath":"/articles/architecture-experimentation","score":2},{"topicsIds":null,"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/mva-dilemma-experiments/en/smallimage/to-dare-or-not-logo-small-1730966342573.jpg","contentType":"articles","date":1731488400000,"title":"To Dare or Not to Dare: the MVA Dilemma","authorsList":["Pierre Pureur","Kurt Bittner"],"url":"/articles/mva-dilemma-experiments","itemPath":"/articles/mva-dilemma-experiments","score":2},{"topicsIds":null,"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/technical-debt-your-friend/en/smallimage/how-to-make-tehnical-debt-small-logo-1725015085842.jpg","contentType":"articles","date":1725958800000,"title":"How to Make Technical Debt Your Friend","authorsList":["Pierre Pureur","Kurt Bittner"],"url":"/articles/technical-debt-your-friend","itemPath":"/articles/technical-debt-your-friend","score":2},{"topicsIds":null,"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/infoq-articles-contest-2025/en/smallimage/article-contest-2025-thumbnail-image-1739792870025.jpg","contentType":"articles","date":1739797200000,"title":"2025 Article Contest: Win Your Conference Ticket","authorsList":["InfoQ"],"url":"/articles/infoq-articles-contest-2025","itemPath":"/articles/infoq-articles-contest-2025","score":1},{"topicsIds":null,"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/architecture-modernization/en/smallimage/Camila-Crispim-small-1728646740436.jpg","contentType":"presentations","date":1733324160000,"title":"Evolving Your Architecture: Essential Steps and Tools for Modernization","authorsList":["Camilla Crispim"],"url":"/presentations/architecture-modernization","itemPath":"/presentations/architecture-modernization","score":1},{"topicsIds":null,"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/enhancing-test-architecture/en/smallimage/test-architecture-logo-small-1733138640859.jpg","contentType":"articles","date":1733302800000,"title":"Reaching Your Automatic Testing Goals by Enhancing Your Test Architecture","authorsList":["James Westfall"],"url":"/articles/enhancing-test-architecture","itemPath":"/articles/enhancing-test-architecture","score":1},{"topicsIds":null,"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/architectural-intelligence/en/smallimage/architectural-intelligence-small-1732294547540.jpg","contentType":"articles","date":1732611600000,"title":"Architectural Intelligence – the Next AI","authorsList":["Thomas Betts"],"url":"/articles/architectural-intelligence","itemPath":"/articles/architectural-intelligence","score":1},{"topicsIds":null,"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/architecture-llm/en/smallimage/NischalHP-small-1724394495924.jpg","contentType":"presentations","date":1729003020000,"title":"Mind Your Language Models: an Approach to Architecting Intelligent Systems","authorsList":["Nischal HP"],"url":"/presentations/architecture-llm","itemPath":"/presentations/architecture-llm","score":1},{"topicsIds":null,"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/cell-based-architecture-2024-series/en/smallimage/small-series-logo-1728400245988.jpg","contentType":"articles","date":1728907200000,"title":"Article Series: Cell-Based Architectures: How to Build Scalable and Resilient Systems","authorsList":["Rafal Gancarz"],"url":"/articles/cell-based-architecture-2024-series","itemPath":"/articles/cell-based-architecture-2024-series","score":1},{"topicsIds":null,"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/functional-programming-web-app/en/smallimage/functional-programming-web-applications-1727857921289.jpg","contentType":"articles","date":1728032400000,"title":"How Functional Programming Can Help You Write Efficient, Elegant Web Applications","authorsList":["Uberto Barbini"],"url":"/articles/functional-programming-web-app","itemPath":"/articles/functional-programming-web-app","score":1},{"topicsIds":null,"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/data-products/en/smallimage/Danilo-Sato-small-1723545718638.jpeg","contentType":"presentations","date":1726734600000,"title":"Architecting for Data Products","authorsList":["Danilo Sato"],"url":"/presentations/data-products","itemPath":"/presentations/data-products","score":1},{"topicsIds":null,"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/backstage-plugin/en/smallimage/PiaNilsson-MikeLewis-small-1721474709600.jpg","contentType":"presentations","date":1725550920000,"title":"Everything is a Plugin: How the Backstage Architecture Helps Platform Teams at Spotify and beyond Spread Ownership and Deliver Value","authorsList":["Pia Nilsson","Mike Lewis"],"url":"/presentations/backstage-plugin","itemPath":"/presentations/backstage-plugin","score":1},{"topicsIds":null,"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/noise-tips/en/smallimage/matt-fleming-small-1738315572061.jpeg","contentType":"presentations","date":1741084080000,"title":"Practical Benchmarking: How To Detect Performance Changes in Noisy Results","authorsList":["Matt Fleming"],"url":"/presentations/noise-tips","itemPath":"/presentations/noise-tips","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1741082400000,"title":"Azure AI Foundry Labs: A hub For The latest AI research and Experiments at Microsoft","authorsList":["Steef-Jan Wiggers"],"url":"/news/2025/03/azure-ai-foundry-labs","itemPath":"/news/2025/03/azure-ai-foundry-labs","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1741081200000,"title":"Google Cloud Launches Gen AI Toolbox for Databases","authorsList":["Robert Krzaczyński"],"url":"/news/2025/03/gen-ai-toolbox","itemPath":"/news/2025/03/gen-ai-toolbox","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1741028400000,"title":"AWS CDK Introduces Garbage Collection to Remove Outdated Assets","authorsList":["Renato Losio"],"url":"/news/2025/03/aws-cdk-garbage-collection","itemPath":"/news/2025/03/aws-cdk-garbage-collection","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1741021200000,"title":"Flux v2.5 Release: Expanding GitOps Capabilities with CEL Integration and GitHub App Auth","authorsList":["Claudio Masolo"],"url":"/news/2025/03/flux-gitops-release","itemPath":"/news/2025/03/flux-gitops-release","score":0},{"topicsIds":null,"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/secure-ai-powered-early-detection-system/en/smallimage/designing-architecture-ai-models-thumbnail-1740475990469.jpg","contentType":"articles","date":1740999600000,"title":"Secure AI-Powered Early Detection System for Medical Data Analysis & Diagnosis","authorsList":["Mahesh Vaijainthymala Krishnamoorthy"],"url":"/articles/secure-ai-powered-early-detection-system","itemPath":"/articles/secure-ai-powered-early-detection-system","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1740994500000,"title":"Java News Roundup: Stable Values, Spring Modulith, Open Liberty, Quarkus, JReleaser, Gradle","authorsList":["Michael Redlich"],"url":"/news/2025/03/java-news-roundup-feb24-2025","itemPath":"/news/2025/03/java-news-roundup-feb24-2025","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1740994200000,"title":"Meta Enhances Download Your Information Tool with Data Logs","authorsList":["Aditya Kulkarni"],"url":"/news/2025/03/meta-suports-data-logs","itemPath":"/news/2025/03/meta-suports-data-logs","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1740992400000,"title":".NET Aspire 9.1 Improves Dashboard Features","authorsList":["Edin Kapić"],"url":"/news/2025/03/net-aspire-91-dashboard","itemPath":"/news/2025/03/net-aspire-91-dashboard","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1740927600000,"title":"IBM Granite 3.2 Brings New Vision Language Model, Chain of Thought Reasoning, Improved TimeSeries","authorsList":["Sergio De Simone"],"url":"/news/2025/03/ibm-granite-3-2","itemPath":"/news/2025/03/ibm-granite-3-2","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1740822360000,"title":"How a Manual Remediation for a Phishing URL Took down Cloudflare R2","authorsList":["Renato Losio"],"url":"/news/2025/03/cloudflare-incident-r2","itemPath":"/news/2025/03/cloudflare-incident-r2","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1740808800000,"title":"GitLab Introduces Advanced Vulnerability Tracking to Tackle Code Volatility and Double Reporting","authorsList":["Aditya Kulkarni"],"url":"/news/2025/03/gitlab-vulnerability-tracking","itemPath":"/news/2025/03/gitlab-vulnerability-tracking","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1740758400000,"title":"Cloud Giants Collaborate on New Kubernetes Resource Management Tool","authorsList":["Matt Saunders"],"url":"/news/2025/02/kube-resource-orchestrator","itemPath":"/news/2025/02/kube-resource-orchestrator","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1740754800000,"title":"Microsoft Releases BioEmu-1: a Deep Learning Model for Protein Structure Prediction","authorsList":["Robert Krzaczyński"],"url":"/news/2025/02/microsoft-bioemu-1","itemPath":"/news/2025/02/microsoft-bioemu-1","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1740736800000,"title":"Google Cloud Introduces Quantum-Safe Digital Signatures in Cloud KMS to Future-Proof Data Security","authorsList":["Steef-Jan Wiggers"],"url":"/news/2025/02/quantum-safe-signatures-gcp-kms","itemPath":"/news/2025/02/quantum-safe-signatures-gcp-kms","score":0},{"topicsIds":null,"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/ai-agents-infrastructure/en/smallimage/shurtibhat-thumbnail-1740040892049.jpg","contentType":"presentations","date":1740734400000,"title":"Pioneering the Future: Advancing Infrastructure for AI Agents","authorsList":["Shruti Bhat"],"url":"/presentations/ai-agents-infrastructure","itemPath":"/presentations/ai-agents-infrastructure","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1740731400000,"title":"Microsoft Launches Visual Studio 2022 v17.13 with AI-Powered Enhancements and Improved Debugging","authorsList":["Robert Krzaczyński"],"url":"/news/2025/02/visual-studio-2022-v1713","itemPath":"/news/2025/02/visual-studio-2022-v1713","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1740655380000,"title":"Ensuring Security without Harming Software Development Productivity","authorsList":["Ben Linders"],"url":"/news/2025/02/security-software-development","itemPath":"/news/2025/02/security-software-development","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1740650400000,"title":"Microsoft Unveils the First Topological Quantum Chip Majorana 1","authorsList":["Steef-Jan Wiggers"],"url":"/news/2025/02/microsoft-majorana-quantum-chip","itemPath":"/news/2025/02/microsoft-majorana-quantum-chip","score":0},{"topicsIds":null,"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/navigators/en/smallimage/ShawnaMartellDanFike-smalll-1738152290501.jpg","contentType":"presentations","date":1740646560000,"title":"Navigators: Decentralizing Decisions and Empowering ICs at Carta","authorsList":["Shawna Martell","Dan Fike"],"url":"/presentations/navigators","itemPath":"/presentations/navigators","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1740607200000,"title":"Opengrep Forks Semgrep to Liberate Rulesets After License Change","authorsList":["Matt Saunders"],"url":"/news/2025/02/semgrep-forked-opengrep","itemPath":"/news/2025/02/semgrep-forked-opengrep","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1740567600000,"title":"GitHub Copilot Extensions Integrate IDEs with External Services","authorsList":["Sergio De Simone"],"url":"/news/2025/02/github-copilot-extensions","itemPath":"/news/2025/02/github-copilot-extensions","score":0},{"topicsIds":null,"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/aws-ai-generative-tools/en/smallimage/Olalekan-Elesin-small-1738072840629.jpg","contentType":"presentations","date":1740557940000,"title":"Elevate Developer Experience with Generative AI Capabilities on AWS","authorsList":["Olalekan Elesin"],"url":"/presentations/aws-ai-generative-tools","itemPath":"/presentations/aws-ai-generative-tools","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1740492000000,"title":"Google DeepMind’s AlphaGeometry2 AI Achieves Gold-Medal Math Olympiad Performance","authorsList":["Anthony Alford"],"url":"/news/2025/02/deepmind-alphageom2","itemPath":"/news/2025/02/deepmind-alphageom2","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1740484800000,"title":"AWS Introduces Centralized Root Access Management for Organizations","authorsList":["Craig Risi"],"url":"/news/2025/02/aws-centralized-root-access","itemPath":"/news/2025/02/aws-centralized-root-access","score":0},{"topicsIds":null,"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/zero-trust-devsecops/en/smallimage/ashish-rajan-small-1738148760241.jpeg","contentType":"presentations","date":1740470400000,"title":"A Zero Trust Future for Applications: Practical Implementation and Pitfalls","authorsList":["Ashish Rajan"],"url":"/presentations/zero-trust-devsecops","itemPath":"/presentations/zero-trust-devsecops","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1740412800000,"title":"Go 1.24 Brings Generic Type Aliases, Weak Pointers, Improved Finalizers, and More","authorsList":["Sergio De Simone"],"url":"/news/2025/02/go-1-24-generic-aliases","itemPath":"/news/2025/02/go-1-24-generic-aliases","score":0},{"topicsIds":null,"imageStoragePath":null,"contentType":"news","date":1740411000000,"title":"Perplexity Unveils Deep Research: AI-Powered Tool for Advanced Analysis","authorsList":["Robert Krzaczyński"],"url":"/news/2025/02/perplexity-deep-research","itemPath":"/news/2025/02/perplexity-deep-research","score":0}]"; var whitepaperVcrsJson = null; var topicSponsorshipJson = "{"iconLink":"/url/f/563ea786-4425-4e8a-9f27-29af3816b68e/","iconHref":"https://imgopt.infoq.com//fit-in/275x500/filters:quality(100)/filters:no_upscale()/sponsorship/topic/999b3bed-b010-4184-aa98-7cb5ba75aae2/AkkaLogoRSB2-1734601591399.png","id":"5018938b-16e5-4e58-bd23-18ad274a20f4"}"; var vcrOptionalListJson = null; /* do not delete these two, as they are used further in the code */ var contentDatetimeFormat='MMM dd, yyyy'; var contentUriMapping="articles"; JSi18n.relatedRightbar_relatedContent='Related Content'; JSi18n.relatedRightbar_sponsoredContent='Related Sponsored Content'; JSi18n.relatedRightbar_sponsoredBy='Sponsored by'; var topicIds = "4250,876"; var communityIds = "2498"; var company = "Akka"; // this event is fired by frontend once all the necessary things have been done(mobile display, moving vcr boxes around when needed...) var canStartTrackingCustomRightbar = false; infoq.event.on('loaded', function(e) { canStartTrackingCustomRightbar = true; }); var intervalRightbar = setInterval(function() { if (window.vcrsLoaded) { clearInterval(intervalRightbar); if(company != null && company != "") { whitepaperVcrsJson = VCR.filterByCompany(company, window.vcrList); } else { whitepaperVcrsJson = VCR.getByTopicsAndCommunities(window.vcrList, topicIds, communityIds, 5, false, null); } vcrOptionalListJson = VCR.getByTopicsAndCommunities(window.vcrList, topicIds, communityIds, 10, true, null); VCR.displayCustomRightbar(recomJson, whitepaperVcrsJson, topicSponsorshipJson); VCR.displayCustomRightbarOptionalVcrWidget(vcrOptionalListJson); window.finishedRightbarVcr = true; } }, 200); // these two events can happen one before another async(no precedence any can be first or second). Make sure tracking starts when both happened var intervalTrackingRightbar = setInterval(function() { if(canStartTrackingCustomRightbar && window.finishedRightbarVcr){ clearInterval(intervalTrackingRightbar); VCR.doTrackingCustomRightbar(); } }, 200); </script> <noscript> <div class="widget related__content article__widget"> <h3 class="widget__heading">Related Content</h3> <ul class="no-style cards" data-horizontal="true" data-size="xs" data-tax=""> </ul> </div> </noscript> <div class="newsletter widget" data-bg="infoq"> <h3 class="heading"><strong>The InfoQ</strong> Newsletter</h3> <p class="intro"> A round-up of last week’s content on InfoQ sent out every Tuesday. Join a community of over 250,000 senior developers. <a target="_blank" href="https://assets.infoq.com/newsletter/regular/en/newsletter_sample/newsletter_sample.html">View an example</a> </p> <div class="newsletter__subscribe"> <form class="form gdpr" id="floatingNewsletterForm" action="#" onsubmit="floatingNewsletterForm.saveSubscription(); return false;"> <div class="field input__text input__no-label input__medium newsletter__mail email"> <label class="field__label label" for="email-newsletter-infoq-guide">Enter your e-mail address</label> <input class="field__input input" id="email-newsletter-infoq-guide" placeholder="Enter your e-mail address" type="email"> <input type="text" name="emailH" id="input_floating_email_h" aria-required="false" style="display:none !important" tabindex="-1" autocomplete="off"> <input type="hidden" id="floating_fnt" name="fnt" value="Hi0KZQuTTuvFpEMd"/> <input type="hidden" id="floatingNewsletterType" name="footerNewsletterType" value="regular"/> <input type="hidden" id="cmpi_f" name="cmpi" value="1"/> </div> <div class="hidden"> <span class="input__select field country"> <label for="input-floating-newsletter-country" class="label field__label">Select your country</label> <select id="input-floating-newsletter-country" class="select field__input"> <option value="" class="select__option">Select a country</option> </select> <p class="input__message field__desc"></p> </span> <span class="input__checkbox field hidden"> <input type="checkbox" id="gdpr-consent-simple-floating-nl"> <label for="gdpr-consent-simple-floating-nl" class="label"><span>I consent to InfoQ.com handling my data as explained in this <a href="https://www.infoq.com/privacy-notice">Privacy Notice</a>.</span></label> </span> </div> <input class="button button__medium button__yellow" type="submit" role="button" value="Subscribe" onclick="return floatingNewsletterForm.validateEmail('Invalid email address');"> </form> <p class="meta"> <a href="/privacy-notice/" target="_blank">We protect your privacy.</a> </p> <span class="success" style="display:none;" id="floatingNewsletterEmailMessage"></span> </div> </div> <script type="text/javascript"> var floatingNewsletterForm = new Newsletter('Enter your e-mail address', 'email-newsletter-infoq-guide', 'floatingNewsletterType','floatingNewsletterEmailMessage', 'floating_fnt', 'input_floating_email_h', 'input-floating-newsletter-country','cmpi_f','floating_box'); </script> </div> </div> </div> </section> </article> <script type="text/javascript"> // global vars that can be used for this page, us ethis section to add more. var contentTitle = "If Architectural Experimentation Is So Great, Why Aren’t You Doing It?", contentPath = "/articles/architectural-experimentation-insurance", contentUUID = "1c69db01-9c8a-419a-952a-3b2ca881efab", authorUserCSVIds = "125035682,126598266"; </script> <script src="https://cdn.infoq.com/statics_s1_20250228123444/scripts/prism-build.js"></script> <script src="https://cdn.infoq.com/statics_s1_20250228123444/scripts/lib/MathJax/MathJax.js?config=TeX-AMS_HTML"></script> </main> <footer class="footer "> <section data-nosnippet class="section container"> <div class="container__inner"> <ul data-cols="5" class="no-style columns boxes topic__boxes"> <li class="development"> <div class="box__header"> <a class="t_all_footer_more-boxes-header" href="/development/">Development</a> </div> <div class="box__content"> <ul class="no-style box__list small"> <li> <h5><a class="t_all_footer_more-boxes-item" href="/presentations/noise-tips/" title="Practical Benchmarking: How To Detect Performance Changes in Noisy Results">Practical Benchmarking: How To Detect Performance Changes in Noisy Results</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/presentations/zero-trust-devsecops/" title="A Zero Trust Future for Applications: Practical Implementation and Pitfalls">A Zero Trust Future for Applications: Practical Implementation and Pitfalls</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/02/go-1-24-generic-aliases/" title="Go 1.24 Brings Generic Type Aliases, Weak Pointers, Improved Finalizers, and More">Go 1.24 Brings Generic Type Aliases, Weak Pointers, Improved Finalizers, and More</a></h5> </li> </ul> </div> </li> <li class="architecture-design"> <div class="box__header"> <a class="t_all_footer_more-boxes-header" href="/architecture-design/">Architecture & Design</a> </div> <div class="box__content"> <ul class="no-style box__list small"> <li> <h5><a class="t_all_footer_more-boxes-item" href="/articles/architectural-experimentation-insurance/" title="If Architectural Experimentation Is So Great, Why Aren&rsquo;t You Doing It?">If Architectural Experimentation Is So Great, Why Aren’t You Doing It?</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/02/monzo-stand-in/" title="How Monzo Bank Built a Cost-Effective, Unorthodox Backup System to Ensure Resilient Banking">How Monzo Bank Built a Cost-Effective, Unorthodox Backup System to Ensure Resilient Banking</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/podcasts/facilitating-software-architecture/" title="Facilitating Software Architecture with Andrew Harmel-Law">Facilitating Software Architecture with Andrew Harmel-Law</a></h5> </li> </ul> </div> </li> <li class="culture-methods"> <div class="box__header"> <a class="t_all_footer_more-boxes-header" href="/culture-methods/">Culture & Methods</a> </div> <div class="box__content"> <ul class="no-style box__list small"> <li> <h5><a class="t_all_footer_more-boxes-item" href="/podcasts/resilience-observability-automation/" title="Resilience, Observability and Unintended Consequences of Automation">Resilience, Observability and Unintended Consequences of Automation</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/02/security-software-development/" title="Ensuring Security without Harming Software Development Productivity">Ensuring Security without Harming Software Development Productivity</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/presentations/navigators/" title="Navigators: Decentralizing Decisions and Empowering ICs at Carta">Navigators: Decentralizing Decisions and Empowering ICs at Carta</a></h5> </li> </ul> </div> </li> <li class="ai-ml-data-eng"> <div class="box__header"> <a class="t_all_footer_more-boxes-header" href="/ai-ml-data-eng/">AI, ML & Data Engineering</a> </div> <div class="box__content"> <ul class="no-style box__list small"> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/03/huggingface-ultra-scale-playbook/" title="Hugging Face Publishes Guide on Efficient LLM Training Across GPUs">Hugging Face Publishes Guide on Efficient LLM Training Across GPUs</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/03/gen-ai-toolbox/" title="Google Cloud Launches Gen AI Toolbox for Databases">Google Cloud Launches Gen AI Toolbox for Databases</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/articles/secure-ai-powered-early-detection-system/" title="Secure AI-Powered Early Detection System for Medical Data Analysis &amp; Diagnosis">Secure AI-Powered Early Detection System for Medical Data Analysis & Diagnosis</a></h5> </li> </ul> </div> </li> <li class="devops"> <div class="box__header"> <a class="t_all_footer_more-boxes-header" href="/devops/">DevOps</a> </div> <div class="box__content"> <ul class="no-style box__list small"> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/03/aws-cdk-garbage-collection/" title="AWS CDK Introduces Garbage Collection to Remove Outdated Assets">AWS CDK Introduces Garbage Collection to Remove Outdated Assets</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/03/flux-gitops-release/" title="Flux v2.5 Release: Expanding GitOps Capabilities with CEL Integration and GitHub App Auth">Flux v2.5 Release: Expanding GitOps Capabilities with CEL Integration and GitHub App Auth</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/03/meta-suports-data-logs/" title="Meta Enhances Download Your Information Tool with Data Logs">Meta Enhances Download Your Information Tool with Data Logs</a></h5> </li> </ul> </div> </li> </ul> </div> </section> <section data-nosnippet class="container section section__newsletter"> <div class="columns container__inner"> <div class="newsletter" data-col="1/2" id="infoq-nl" > <h2 class="heading"> <strong>The InfoQ</strong> Newsletter </h2> <p class="intro">A round-up of last week’s content on InfoQ sent out every Tuesday. Join a community of over 250,000 senior developers. <a target="_blank" href="https://assets.infoq.com/newsletter/regular/en/newsletter_sample/newsletter_sample.html">View an example</a> </p> <ul class="newsletter__features"> <li>Get a quick overview of content published on a variety of innovator and early adopter technologies</li> <li>Learn what you don’t know that you don’t know</li> <li>Stay up to date with the latest information from the topics you are interested in</li> </ul> <div class="newsletter__subscribe"> <form class="form gdpr" name="footerNewsletterForm" id="footerNewsletterForm" action="#" onsubmit="footerNewsletter.saveSubscription(); return false;"> <div class="field newsletter__mail input__text input__no-label input__medium email"> <label for="email-newsletter-infoq" class="label field__label">Enter your e-mail address</label> <input id="email-newsletter-infoq" name="footerNewsletterEmail" placeholder="Enter your e-mail address" class="input field__input" type="email"/> <input type="text" name="emailH" id="input_email_h" aria-required="false" style="display:none !important" tabindex="-1" autocomplete="off"/> <input type="hidden" id="fnt" name="fnt" value="Hi0KZQuTTuvFpEMd"/> <input type="hidden" id="footerNewsletterType" name="footerNewsletterType" value="regular"/> <input type="hidden" id="cmpi" name="cmpi" value="1"/> </div> <div class="hidden"> <span class="input__select field country"> <label for="input-simple-newsletter-country" class="label field__label">Select your country</label> <select id="input-simple-newsletter-country" class="select field__input"> <option value="" class="select__option">Select a country</option> </select> <p class="input__message field__desc"></p> </span> <span class="input__checkbox field hidden"> <input type="checkbox" id="gdpr-consent-simple-nl"> <label for="gdpr-consent-simple-nl" class="label"><span>I consent to InfoQ.com handling my data as explained in this <a href="https://www.infoq.com/privacy-notice">Privacy Notice</a>.</span></label> </span> </div> <input type="submit" role="button" value="Subscribe" class="button button__medium button__red" onclick="return footerNewsletter.validateEmail('Invalid email address');"/> </form> <p class="meta"> <a href="/privacy-notice/" target="_blank">We protect your privacy.</a> </p> <span class="success" style="display:none;" id="footerNewsletterMessage"></span> </div> <script type="text/javascript"> var footerNewsletter = new Newsletter('Enter your e-mail address', 'email-newsletter-infoq', 'footerNewsletterType','footerNewsletterMessage', 'fnt', 'input_email_h', 'input-simple-newsletter-country', 'cmpi','footer_except_homepage'); </script> </div> <div data-col="1/2" data-bg="qconLondon" class="event__container"> <a href="https://qconlondon.com/?utm_source=infoq&utm_medium=referral&utm_campaign=largefooterad_qlondon25" target="_blank" class="qconplus__events-slider"> <div> <div class="logo-london"></div> <br> </div> <p class="intro"><ul><li><strong>Conference: April 7-9, 2025</strong></li><li><strong>Certification workshop: April 10, 2025</strong></li></ul> QCon London International Software Development Conference returns on April 7-10, 2025. Level-up on 15 major software and leadership topics including; The Tech of FinTech, AI & ML in Software Engineering, Modern Data Architectures, Engineering Productivity, The Path to Senior Engineering Leadership, Supply Chain Security, and more.</p> <p class="intro">Learn the emerging trends. Explore the use cases. Implement the best practices.<br><strong class="button button__green cta__button">Register Now</strong></p> </a> </div> </div> </section> <section data-nosnippet class="section container footer__subfooter align__left"> <div class="container__inner columns"> <div data-col="1/4" class="columns footer__links-wrap"> <div class="footer__links"> <a href="/" class="nuxt-link-exact-active active" title="Home">Home</a> <a href="/reginit.action" class="emphasis" title="Create account">Create account</a> <button aria-label="Login" class="login" data-ref="mainLogin">Login</button> <a rel="noreferrer noopener" href="http://qconferences.com/" target="_blank" title="QCon Conferences">QCon Conferences</a> <a rel="noreferrer noopener" href="https://events.infoq.com/" target="_blank">Events</a> <a href="/write-for-infoq/" title="Write for InfoQ">Write for InfoQ</a> <a href="/infoq-editors/" title="InfoQ Editors">InfoQ Editors</a> <a href="/about-infoq/" title="About InfoQ">About InfoQ</a> <a href="/about-c4media/" title="About C4Media">About C4Media</a> <a rel="noreferrer noopener" href="https://get.infoq.com/infoq-mediakit/" title="Media Kit" target="_blank"> Media Kit </a> <a href="https://devmarketing.c4media.com/?utm_source=infoq" title="InfoQ Developer Marketing Blog" target="_blank">InfoQ Developer Marketing Blog</a> <a rel="noreferrer noopener" href="https://c4media.com/diversity" title="Diversity" target="_blank">Diversity</a> </div> </div> <div data-col="1/4" class="events__list"> <h4 class="heading footer__heading">Events</h4> <ul class="qcons__list no-style"> <li><span class="icon event__type conference"></span> <div class="qcon__detail"> <h5 class="heading"> <a rel="noreferrer noopener" href="https://qconlondon.com/?utm_source=infoq&utm_medium=referral&utm_campaign=footer_qlondon25" target="_blank">QCon London</a> </h5> <span class="meta date">APRIL 7-10, 2025</span> </div> </li> <li><span class="icon event__type conference"></span> <div class="qcon__detail"> <h5 class="heading"> <a rel="noreferrer noopener" href="https://devsummit.infoq.com/conference/boston2025?utm_source=infoq&utm_medium=referral&utm_campaign=footer_idsboston25" target="_blank">InfoQ Dev Summit Boston</a> </h5> <span class="meta date">June 9-10, 2025</span> </div> </li> <li><span class="icon event__type conference"></span> <div class="qcon__detail"> <h5 class="heading"> <a rel="noreferrer noopener" href="https://devsummit.infoq.com/conference/munich2025?utm_source=infoq&utm_medium=referral&utm_campaign=footer_idsmunich25" target="_blank">InfoQ Dev Summit Munich</a> </h5> <span class="meta date">October 15-16, 2025</span> </div> </li> <li><span class="icon event__type conference"></span> <div class="qcon__detail"> <h5 class="heading"> <a rel="noreferrer noopener" href="https://qconsf.com/?utm_source=infoq&utm_medium=referral&utm_campaign=footer_qsf25" target="_blank">QCon San Francisco</a> </h5> <span class="meta date">November 17-21, 2025 / In-person</span> </div> </li> <li><span class="icon event__type conference"></span> <div class="qcon__detail"> <h5 class="heading"> <a rel="noreferrer noopener" href="#" target="_self" onclick="return false;">InfoQ Dev Summit New York</a> </h5> <span class="meta date">December, 2025 / In-person</span> </div> </li> </ul> </div> <div data-col="1/4" class="footer__social-wrap"> <h4 class="heading text-left footer__heading">Follow us on </h4> <div class="social__links columns social__links__row"> <a href="https://www.youtube.com/infoq"><span class="icon icon__large icon__social icon__youtube"></span><div><span class="social__count">Youtube</span><span class="social__followers">223K Followers</span></div></a> <a href="http://www.linkedin.com/company/infoq"><span class="icon icon__large icon__social icon__linkedin"></span><div><span class="social__count">Linkedin</span><span class="social__followers">21K Followers</span></div></a> <a href="#" id="footerNewsletterRssLink"><span class="icon icon__large icon__social icon__rss"></span><div><span class="social__count">RSS</span><span class="social__followers">19K Readers</span></div></a> <a rel="noreferrer noopener" href="http://twitter.com/infoq" target="_blank"><span class="icon icon__large icon__social icon__twitter"></span><div><span class="social__count">X</span><span class="social__followers">53.4k Followers</span></div></a> <a rel="noreferrer noopener" href="https://www.facebook.com/InfoQ-75911537320" target="_blank"><span class="icon icon__large icon__social icon__fb"></span><div><span class="social__count">Facebook</span><span class="social__followers">21K Likes</span></div></a> <a rel="noreferrer noopener" href="https://bsky.app/profile/infoq.com" target="_blank"><span class="icon icon__large icon__social icon__bluesky"></span><div><span class="social__count">Bluesky</span><span class="social__followers">New</span></div></a> <a rel="noreferrer noopener" href="https://www.amazon.com/dp/B07KMWGNNL" target="_blank"><span class="icon icon__large icon__social icon__alexa"></span><div><span class="social__count">Alexa</span><span class="social__followers">New</span></div></a> </div> </div> <div data-col="1/4" class="footer__stayin-wrap"> <h4 class="heading text-left footer__heading">Stay in the know</h4> <div class="stayIn_panel_container"> <a href="/podcasts/" class="stayIn_panel" target="_blank" rel="noreferrer noopener"><span>The InfoQ Podcast</span><picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLXBvZGNhc3QuanBnIiwiZWRpdHMiOiB7IndlYnAiOiB7ICJxdWFsaXR5Ijo4MH19fQ==" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLXBvZGNhc3QuanBnIiwiZWRpdHMiOiB7ImpwZWciOiB7ICJxdWFsaXR5Ijo4MH19fQ==" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLXBvZGNhc3QuanBnIiwiZWRpdHMiOiB7ImpwZWciOiB7ICJxdWFsaXR5Ijo4MH19fQ==" loading="lazy" width="65px" height="64px" alt="The InfoQ Podcast Logo - Stay in the know"></picture></a> <a href="/podcasts/#engineering_culture" class="stayIn_panel" target="_blank" rel="noreferrer noopener"><span>Engineering Culture Podcast</span><picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLXBvZGNhc3QtZW5naW5lZXJpbmctY3VsdHVyZS5qcGciLCJlZGl0cyI6IHsid2VicCI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLXBvZGNhc3QtZW5naW5lZXJpbmctY3VsdHVyZS5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLXBvZGNhc3QtZW5naW5lZXJpbmctY3VsdHVyZS5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" loading="lazy" width="65px" height="64px" alt="Engineering Culture Podcast Logo - Stay in the knoww"></picture></a> <a href="/software-architects-newsletter/" class="stayIn_panel" target="_blank" rel="noreferrer noopener"><span>The Software Architects' Newsletter</span><picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLWFyY2hpdGVjdC1uZXdzbGV0dGVyLmpwZyIsImVkaXRzIjogeyJ3ZWJwIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLWFyY2hpdGVjdC1uZXdzbGV0dGVyLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLWFyY2hpdGVjdC1uZXdzbGV0dGVyLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" loading="lazy" width="65px" height="64px" alt="The Software Architects' Newsletter Logo - Stay in the know"></picture></a> </div> </div> </div> </section> <section data-nosnippet class="container footer__bottom section white align__left"> <div class="container__inner columns"> <div data-col="2/3" class="column"> <div class="footer__contact contact columns"> <span data-col="1/6"> General Feedback <a href="mailto:feedback@infoq.com">feedback@infoq.com</a> </span> <span data-col="1/6"> Advertising <a href="mailto:sales@infoq.com">sales@infoq.com</a> </span> <span data-col="1/6"> Editorial <a href="mailto:editors@infoq.com">editors@infoq.com</a> </span> <span data-col="1/6"> Marketing <a href="mailto:marketing@infoq.com">marketing@infoq.com</a> </span> </div> </div> <div class="column" data-col="1/3"> <p class="footer__more"> InfoQ.com and all content copyright © 2006-2025 C4Media Inc.<br/> <a href="/privacy-notice" target="_blank">Privacy Notice</a>, <a href="/terms-and-conditions " target="_blank">Terms And Conditions</a>, <a href="/cookie-policy " target="_blank">Cookie Policy</a> </p> </div> </div> </section> </footer> <!-- ####### SITE END ######### --> </div> <div class="intbt"> <a href="/int/bt/" title="bt">BT</a> </div> <script type="text/javascript"> $.when(humanDetectionAsync()).then( function(status) { $.getScript("/scripts/__hd.ifq?hdt=Hi0KZQuTTuvFpEMd&ha=" + status); } ); </script> <script type="text/javascript"> var pageFullyLoaded = false; // this event is fired by frontend once all the necessary things have been done(mobile display, moving vcr boxes around when needed...) infoq.event.on('loaded', function(e) { pageFullyLoaded = true; }); infoq.event.on('pageWidthChanged', function(e) { // re-execute tracking vcr impressions when this event happens (it only happens when elements are added/removed from page) // doTrackVcrImpressions takes into account the data-trk-impr="true" if =false the element was already tracked. // this is needed when switching from mobile to desktop or when layout on mobile changes and desktop version is displayed. New elements become visible. Tracker.safeExec(Tracker.doTrackVcrImpressions); // these 2 need to be called also because we might be on a content page. In case we are not nothing happens VCR.doTrackingCustomRightbar(); VCR.doTrackingCustomRightbarForPresentations() }); //check to see if error page if(window.device !== undefined) { var intervalImpressions = setInterval(function() { var shouldTrack = false; // no vcr widgets on index pages if(window.isIndexPage) { if(window.sponsoredPodcastDone === undefined || window.sponsoredPodcastDone) { shouldTrack = true; } } else //on homepage, bottom widget + 2 native widgets if(InfoQConstants.pageType == "HOMEPAGE" && window.finishedVcrOptional1 && window.finishedRelatedVcr && (window.finishedVcrOptional2 === undefined || window.finishedVcrOptional2)) { shouldTrack = true; } else // rightbar widgets + native widgets + content vcr widgets if((InfoQConstants.pageType == "NEWS_PAGE" || InfoQConstants.pageType == "ARTICLE_PAGE") && ((window.finishedRightbarVcr || window.finishedRightbarVcr === undefined) && window.contentVcrFinished)) { shouldTrack = true; } else if ((InfoQConstants.pageType == "PRESENTATION_PAGE") && (window.contentVcrFinished || window.contentVcrFinished === undefined) && (window.finishedRightbarVcr || window.finishedRightbarVcr === undefined) ) { shouldTrack = true; } else // native widgets + content widgets if(window.contentVcrFinished && (window.finishedVcrOptional1 || window.finishedVcrOptional1 === undefined) && (window.finishedVcrOptional2 || window.finishedVcrOptional2 === undefined)) { shouldTrack = true; } // we start tracking only after the page is fully loaded, frontend signals that they finished everything related to page display. if(shouldTrack && pageFullyLoaded) { clearInterval(intervalImpressions); Tracker.safeExec(Tracker.doTrackVcrImpressions); // start tracking viewable impressions also only after everything is ready function callbackRouter(entries, observer) { var targets = new Array(); entries.forEach(function (entry) { var target = entry.target; if (target.dataset.trkView === 'false') return; if (entry.intersectionRatio > 0) { target.dataset.trkView = false; targets.push(target); } }); Tracker.doTrackViewableImpressions(targets); } var elementsForTrackingViewableImpressions = document.querySelectorAll('[data-trk-view="true"]') var observer = new IntersectionObserver(callbackRouter, { threshold: 0.3 }); elementsForTrackingViewableImpressions.forEach(observer.observe.bind(observer)); } }, 500); } $(document).ready(function () { // desktop notifications widget Tracker.encodeNotificationLinks($(".f_notificationWidget")); // mobile notifications widget Tracker.encodeNotificationLinks($(".h_notifications")); // desktop notifications page Tracker.encodeNotificationLinks($(".notification-page")); // mobile notifications page Tracker.encodeNotificationLinks($(".notifications_page")); }); </script> <script type="text/javascript"> if(window.location.hash){ var hash = window.location.hash.substring(1); if(hash == 'subscribe'){ $('html,body').animate({scrollTop: $('.ftxt3 > .newsletter').offset().top}, 'slow'); } } </script> <script type="text/javascript"> var newsletterSubscriptionURL ='/newsletter/subscribe.action'; DynamicLinks.updateRssLinks('XnLuCjIf6z9BHCGZ6Nd4R76O32258ENr'); ContentSummary.setSelectedTab('en'); //when user enters the main content area show default topics in the topics bar $("#content-wrapper").mouseenter(function() { showDefaultTopics(); }); Bookmarks.contentTitle = "If Architectural Experimentation Is So Great, Why Aren’t You Doing It?"; Bookmarks.apiUrl = '/widgets/bookmark.action'; Bookmarks.isContentBookmarked = "false"; </script> <script type="text/javascript"> var $buoop = {vs:{i:6,f:1,o:10.1,s:1}} $buoop.ol = window.onload; $(document).ready(function() { try {if ($buoop.ol) $buoop.ol();}catch (e) {} var e = document.createElement("script"); e.setAttribute("type", "text/javascript"); e.setAttribute("src", "https://cdn.infoq.com/statics_s1_20250228123444/scripts/lib/browser-update-org/update.js"); document.body.appendChild(e); }); </script> <script> !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window,document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '842388869148196'); fbq('track', 'PageView'); </script> <noscript> <img height="1" width="1" src="https://www.facebook.com/tr?id=842388869148196&ev=PageView&noscript=1"/> </noscript> <script type='text/javascript'> try { mixpanel.track('page viewed', { 'page name' : document.title, 'url' : window.location.pathname }); } catch(err) { } </script> <!-- Latest Version --> <script src="https://cc.cdn.civiccomputing.com/9/cookieControl-9.x.min.js" type="text/javascript"></script> <script> const config = { apiKey: '8910ea974a96ffb6f927952b4ae9b9b0cc3e5973', product: 'PRO_MULTISITE', // general settings consentCookieExpiry: 90, encodeCookie: true, sameSiteCookie: true, // if false, cookie set as SameSite=None;secure; sameSiteValue: ';secure', // either 'Strict', 'Lax', or 'None' subDomains: true, initialState: 'notify', // 'notify','top','box' require pro licence notifyOnce: false, setInnerHTML: true, //layout settings layout: 'slideout', position: 'left', theme: 'light', acceptButton: true, rejectButton: true, closeOnGlobalChange: true, closeStyle: 'icon', toggleType: 'slider', notifyDismissButton: true, settingsStyle: 'link', excludedCountries: ['US'], /*accessibility: { disableSiteScrolling: true, },*/ statement: { description: 'For more detailed information about the cookies we use, see our', name: 'Cookie Policy', url: 'https://www.infoq.com/cookie-policy', updated: '01/01/2024', }, // cookies starting from 'cookie_expire' are from live.infoq.com but since we use the same tool on the same domain we need to specify those too so // that infoq.com cookieControl does not delete live.infoq.com cookies(also infoq.com cookies have been specified in live.infoq.com cookieControl configs) necessaryCookies: ['RegUserCookie', 'UserCookie', 'IdpCookie', 'ConversionTrackingV2_','PSAdialog','*P13NWN*','topbarSurvey','__bkm','JSESSIONID','mp_','_mixpanel','CloudFront-Key-Pair-Id','CloudFront-Policy','CloudFront-Signature','cookie_expire','discount_promo_closed','discount_promo_code','discount_promo_submitted','exit_survey_popup','referrer_popup','voting_popup_*','AWSALB','AWSALBCORS','aws-waf-token'], optionalCookies: [ { name: 'analytics', label: 'Analytics', description: 'Analytical cookies help us to improve our website by collecting and reporting information on its usage.', cookies: ['_ga', '_ga*', '_gid', '_gat', '__utma', '__utmt', '__utmb', '__utmc', '__utmz', '__utmv'], onAccept: function(){ gtag('consent', 'update', {'analytics_storage': 'granted'}); }, onRevoke: function(){ gtag('consent', 'update', {'analytics_storage': 'denied'}); } }, { name: 'marketing', label: 'Advertising', description: 'We use advertising cookies to display advertisements to you for our products.', onAccept: function(){ gtag('consent', 'update', {'ad_storage': 'granted', 'ad_personalization': 'granted', 'ad_user_data': 'granted'}); }, onRevoke: function(){ gtag('consent', 'update', {'ad_storage': 'denied', 'ad_personalization': 'denied', 'ad_user_data': 'denied'}); } } ], text : { // main preference panels title: '<h3>Our use of cookies</h3>', intro: 'We use necessary cookies to make our site work. Functional cookies help enhance the performance and functionality of the site. '+ 'We\'d also like to set analytics cookies to help us improve your experience by measuring how you use the site. '+ 'These will be set only if you accept. ', acceptSettings: 'I Accept', rejectSettings: 'I Do Not Accept', necessaryTitle : '<h3>Necessary Cookies</h3>', necessaryDescription : 'Necessary cookies enable core functionality ' + 'such as page navigation and access to secure areas. '+ 'The website cannot function properly without '+ 'these cookies, and can only be disabled by changing '+ 'your browser preferences.', closeLabel: 'Close Cookie Control', cornerButton: 'Set cookie preferences', // main preference panel controls on: 'On', off : 'Off', thirdPartyTitle : 'Some cookies require your attention', thirdPartyDescription : 'Consent for the following cookies could not be '+ 'automatically revoked. Please follow the link(s) '+ 'below to opt out manually.', // notification panels (only accessible for pro licences) notifyTitle : 'Your choice regarding cookies on this site', notifyDescription : 'We use cookies to optimise site functionality and '+ 'give you the best possible experience.', accept : 'I Accept', reject: 'I Do Not Accept', settings : 'Settings', }, branding : { removeAbout: true, }, }; // do not load this for local envs only. for testing on local envs remove/modify this condition if(InfoQConstants.pageUrl.indexOf('local')===-1){ CookieControl.load( config ); } </script> </body> </html> <!-- s1 -->