3149 lines
222 KiB
HTML
3149 lines
222 KiB
HTML
<!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);}
|
||
|
||
//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',
|
||
wait_for_update: 500
|
||
});
|
||
gtag('set', 'ads_data_redaction', true);
|
||
gtag('set', 'url_passthrough', true);
|
||
|
||
if((typeof loggedIn != "undefined") && loggedIn){
|
||
window.dataLayer.push({'logged_in': 'true'});
|
||
} else {
|
||
window.dataLayer.push({'logged_in': 'false'});
|
||
}
|
||
|
||
window.dataLayer.push({'show_queryz': ''});
|
||
|
||
gtag('config', 'G-VMVPD4D2JY');
|
||
</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>Shifting Modes: Creating a Program to Support Sustained Resilience - InfoQ</title>
|
||
<link rel="canonical" href="https://www.infoq.com/articles/series-enhancing-resilience-2/"/>
|
||
<link rel="alternate" href="https://www.infoq.com/articles/series-enhancing-resilience-2/" hreflang="en"/>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link rel="alternate" href="https://www.infoq.com/articles/series-enhancing-resilience-2/" 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_s2_20260910111657/styles/style.css"/>
|
||
<link rel="stylesheet" type="text/css" media="print" href="https://cdn.infoq.com/statics_s2_20260910111657/styles/print.css"/>
|
||
<link rel="preload" type="text/css" href="https://cdn.infoq.com/statics_s2_20260910111657/styles/style_en.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
||
<link rel="preload" href="https://cdn.infoq.com/statics_s2_20260910111657/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_s2_20260910111657/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_s2_20260910111657/styles/style_en.css"/>
|
||
<link rel="stylesheet" href="https://cdn.infoq.com/statics_s2_20260910111657/styles/icons.css">
|
||
<link rel="stylesheet" type="text/css" media="screen" href="https://cdn.infoq.com/statics_s2_20260910111657/styles/style_extra.css"/>
|
||
</noscript>
|
||
|
||
<link rel="stylesheet" type="text/css" href="https://cdn.infoq.com/statics_s2_20260910111657/styles/fonts/font.css"/>
|
||
|
||
<link rel="shortcut icon" href="https://cdn.infoq.com/statics_s2_20260910111657/favicon.ico" type="image/x-icon" />
|
||
<link rel="apple-touch-icon" href="https://cdn.infoq.com/statics_s2_20260910111657/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='rNtXcLKmTPpTEcHR';
|
||
InfoQConstants.userDetectedCountryCode = 'US';
|
||
InfoQConstants.bpadb = 'OkdrOhA8BvInkKBonZb7';
|
||
</script>
|
||
|
||
<script type="text/javascript" src="https://cdn.infoq.com/statics_s2_20260910111657/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\":1833,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/images\/profiles\/QhDv7pXEUK1sdLsYArFmnLxecH4rYhAc.jpg\"},{\"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\":356,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/images\/profiles\/t4nyfgw1THkp4wMZ9EZ59RGJx8Hf9Rk8.jpg\"},{\"id\":\"87551248\",\"ref\":\"author-Steef~Jan-Wiggers\",\"url\":\"\/profile\/Steef~Jan-Wiggers\",\"followedByCurrentUser\":false,\"minibio\":\"Cloud Queue Lead Editor | Domain Architect | Cloud Expert\",\"name\":\"Steef-Jan Wiggers\",\"bio\":\"Steef-Jan Wiggers is one of InfoQ's senior cloud editors and works as a Domain Architect at VGZ in the Netherlands. His current technical expertise focuses on implementing integration platforms, 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 a Microsoft Azure MVP for the past sixteen years.\",\"followers\":895,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/images\/profiles\/BhZx03k3Hj0pZVXmTzGqItwZxtJ06oIb.jpg\"},{\"id\":\"80977916\",\"ref\":\"author-Thomas-Betts\",\"url\":\"\/profile\/Thomas-Betts\",\"followedByCurrentUser\":false,\"minibio\":\"Senior Laureate Application Architect at Blackbaud\",\"name\":\"Thomas Betts\",\"bio\":\"Thomas Betts is the former Lead Editor for Architecture and Design at InfoQ, a co-host of the InfoQ Podcast, and a Senior Laureate Software Architect at Blackbaud, working on Agents for Good.\\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\":1171,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/images\/profiles\/pSqI6HrU3k9rmmVjwS34OHG0bOMYiE6a.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\":777,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/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, advisor, 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\":913,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/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\":536,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/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\":2751,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/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\":1873,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/images\/profiles\/8PE76nOujWAoCM8yqLn9Hfv2HqW3VlIP.jpg\"},{\"id\":\"4927376\",\"ref\":\"author-Karsten-Silz\",\"url\":\"\/profile\/Karsten-Silz\",\"followedByCurrentUser\":false,\"minibio\":\"Full-Stack Java Developer\",\"name\":\"Karsten Silz\",\"bio\":\"Karsten Silz has worked as a full-stack Java developer 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\":399,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/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\":1833,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/images\/profiles\/Wk_C09_mzwK23YkTkKMXResJv3LKUN5D.jpg\"},{\"id\":\"55454401\",\"ref\":\"author-Ben-Linders\",\"url\":\"\/profile\/Ben-Linders\",\"followedByCurrentUser\":false,\"minibio\":\"Trainer \/ Coach \/ Adviser \/ Author \/ Speaker \",\"name\":\"Ben Linders\",\"bio\":\"<strong>Ben Linders<\/strong>\u00A0runs a one-person business in Agile, Lean, Quality and Continuous Improvement. Author of\u00A0<a href=\\\"https:\/\/www.benlinders.com\/getting-value-out-of-agile-retrospectives\/\\\" rel=\\\"nofollow\\\">Getting Value out of Agile Retrospectives<\/a>,\u00A0<a href=\\\"https:\/\/www.benlinders.com\/waardevolle-agile-retrospectives\/\\\" rel=\\\"nofollow\\\">Waardevolle Agile Retrospectives<\/a>,\u00A0<a href=\\\"https:\/\/www.benlinders.com\/what-drives-quality\/\\\" rel=\\\"nofollow\\\">What Drives Quality<\/a>, <a href=\\\"https:\/\/www.benlinders.com\/the-agile-self-assessment-game\/\\\" rel=\\\"nofollow\\\">The Agile Self-assessment Game<\/a>, <a href=\\\"https:\/\/www.benlinders.com\/problem-what-problem\/\\\" rel=\\\"nofollow\\\">Problem? What Problem?<\/a>, and <a href=\\\"https:\/\/leanpub.com\/continuousimprovement\\\" rel=\\\"nofollow\\\">Continuous Improvement<\/a>. Creator of many Agile Coaching Tools, for example, the Agile Self-assessment Game.\\r\\n\\r\\nAs an adviser, coach, and trainer, he helps organizations by\u00A0deploying effective software development and management practices. He focuses on continuous improvement, collaboration and communication, and professional development.\\r\\n\\r\\nBen is an active member of networks on Agile, Lean and Quality, and a frequent speaker and writer. He\u00A0shares his experience in a\u00A0bilingual blog\u00A0(Dutch and English) and\u00A0as\u00A0an\u00A0<a href=\\\"https:\/\/www.infoq.com\/author\/Ben-Linders\\\" rel=\\\"nofollow\\\">editor for Agile at InfoQ<\/a>. Follow him on twitter:\u00A0<a href=\\\"https:\/\/twitter.com\/BenLinders\\\" rel=\\\"nofollow\\\">@BenLinders<\/a>.\",\"followers\":721,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/images\/profiles\/Dwyu3y5agoDZV9jPKwQcwQ6oYv7gVeR4.jpg\"},{\"id\":\"114725059\",\"ref\":\"author-Holly-Cummins\",\"url\":\"\/profile\/Holly-Cummins\",\"followedByCurrentUser\":false,\"minibio\":\"Senior Technical Staff Member, IBM\",\"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 bluesky at @@hollycummins.com or at hollycummins.com.\\r\\n\\r\\n\\r\\nBefore joining IBM, Holly completed a PhD in Quantum Computation.\\r\\n\",\"followers\":615,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/images\/profiles\/cRsuGlFgKyGmGfEHvafpMO63CxbrEm22.jpg\"},{\"id\":\"126550352\",\"ref\":\"author-Alex-Elman\",\"url\":\"\/profile\/Alex-Elman\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Alex Elman\",\"bio\":\"\",\"followers\":6,\"imgSrc\":\"\"}]');
|
||
|
||
|
||
|
||
|
||
var topicsInPage = JSON.parse('[{\"name\":\"Architecture & Design\",\"id\":\"6816\",\"url\":\"\/architecture-design\",\"followers\":10383,\"followedByCurrentUser\":false},{\"name\":\"Culture & Methods\",\"id\":\"6817\",\"url\":\"\/culture-methods\",\"followers\":3994,\"followedByCurrentUser\":false},{\"name\":\"Culture\",\"id\":\"6243\",\"url\":\"\/Culture\",\"followers\":47,\"followedByCurrentUser\":false},{\"name\":\"Agile\",\"id\":\"3\",\"url\":\"\/agile\",\"followers\":1053,\"followedByCurrentUser\":false},{\"name\":\".NET Core\",\"id\":\"15683\",\"url\":\"\/Net-Core\",\"followers\":8030,\"followedByCurrentUser\":false},{\"name\":\"Incident Response\",\"id\":\"16293\",\"url\":\"\/incident-reponse\",\"followers\":11,\"followedByCurrentUser\":false},{\"name\":\"Stories & Case Studies\",\"id\":\"40\",\"url\":\"\/stories\",\"followers\":24,\"followedByCurrentUser\":false},{\"name\":\"Machine Learning\",\"id\":\"5449\",\"url\":\"\/MachineLearning\",\"followers\":14751,\"followedByCurrentUser\":false},{\"name\":\"Microservices\",\"id\":\"15274\",\"url\":\"\/microservices\",\"followers\":22348,\"followedByCurrentUser\":false},{\"name\":\"AI, ML & Data Engineering\",\"id\":\"16690\",\"url\":\"\/ai-ml-data-eng\",\"followers\":6077,\"followedByCurrentUser\":false},{\"name\":\"Reliability\",\"id\":\"5813\",\"url\":\"\/Reliability\",\"followers\":22,\"followedByCurrentUser\":false},{\"name\":\"Java9\",\"id\":\"7097\",\"url\":\"\/Java9\",\"followers\":5540,\"followedByCurrentUser\":false},{\"name\":\"DevOps\",\"id\":\"6043\",\"url\":\"\/Devops\",\"followers\":5131,\"followedByCurrentUser\":false},{\"name\":\"learning\",\"id\":\"5341\",\"url\":\"\/Learning\",\"followers\":16,\"followedByCurrentUser\":false},{\"name\":\"Reactive Programming\",\"id\":\"15453\",\"url\":\"\/reactive-programming\",\"followers\":12430,\"followedByCurrentUser\":false},{\"name\":\"Community\",\"id\":\"446\",\"url\":\"\/Community\",\"followers\":7,\"followedByCurrentUser\":false},{\"name\":\"Site Reliability Engineering\",\"id\":\"17182\",\"url\":\"\/sre\",\"followers\":82,\"followedByCurrentUser\":false},{\"name\":\"Development\",\"id\":\"6815\",\"url\":\"\/development\",\"followers\":4154,\"followedByCurrentUser\":false},{\"name\":\"COVID-19\",\"id\":\"18057\",\"url\":\"\/COVID19\",\"followers\":2,\"followedByCurrentUser\":false},{\"name\":\"Covid Resilience Article Series\",\"id\":\"18203\",\"url\":\"\/covid-resilience-article-series\",\"followers\":5,\"followedByCurrentUser\":false}]');
|
||
|
||
|
||
var userContentLikesInPage = [];
|
||
var userCommentsLikesInPage = [];
|
||
|
||
|
||
var currentUserId = 2;
|
||
</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','iq_sub_preview'],
|
||
|
||
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>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script type="application/ld+json">
|
||
{
|
||
"@context": "http://schema.org",
|
||
"@type": "NewsArticle",
|
||
"mainEntityOfPage": {
|
||
"@type": "WebPage",
|
||
"@id": "https://www.infoq.com/articles/series-enhancing-resilience-2/"
|
||
},
|
||
"headline": "Shifting Modes: Creating a Program to Support Sustained Resilience",
|
||
"image": ["https://res.infoq.com/articles/series-enhancing-resilience-2/en/smallimage/Resilience-s-1607521554921-1610043079960.jpeg"
|
||
],
|
||
"datePublished": "2021-01-11T07:00:00+0000",
|
||
"dateModified": "2021-01-11T07:00:00+0000",
|
||
"author": [
|
||
{
|
||
"@type": "Person",
|
||
"name": "Alex Elman",
|
||
"url": "https://www.infoq.com/profile/Alex-Elman/"
|
||
}
|
||
],
|
||
"publisher": {
|
||
"@type": "Organization",
|
||
"name": "InfoQ",
|
||
"logo": {
|
||
"@type": "ImageObject",
|
||
"url": "https://assets.infoq.com/resources/en/infoQ-logo-big.jpg"
|
||
}
|
||
},
|
||
|
||
"description": "The second article in a series on how software companies adapted and continue to adapt to enhance their resilience explores how organizations can shift to a Learn & Adapt safety mode.
|
||
."
|
||
}
|
||
</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/series-enhancing-resilience-2/en/headerimage/croppted-QCa7RnVc-1607521554439-1610043079515.jpeg"/>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<meta property="twitter:image" content="https://res.infoq.com/articles/series-enhancing-resilience-2/en/card_header_image/twitter_card-83-1610043079079.jpg"/>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<meta property="og:title" content="Shifting Modes: Creating a Program to Support Sustained Resilience "/>
|
||
<meta property="og:description" content="The second article in a series on how software companies adapted and continue to adapt to enhance their resilience explores how organizations can shift to a Learn & Adapt safety mode and compares the traits of an organization that is well poised for successfully persisting this mode shift. This shift will not only make them safer but will also give them a competitive advantage." />
|
||
<meta property="og:site_name" content="InfoQ"/>
|
||
<meta property="og:url" content="https://www.infoq.com/articles/series-enhancing-resilience-2/"/>
|
||
|
||
<meta name="twitter:card" content="summary_large_image" />
|
||
<meta name="twitter:title" content="Shifting Modes: Creating a Program to Support Sustained Resilience "/>
|
||
<meta name="twitter:description" content="The second article in a series on how software companies adapted and continue to adapt to enhance their resilience explores how organizations can shift to a Learn & Adapt safety mode and compares the traits of an organization that is well poised for successfully persisting this mode shift. This shift will not only make them safer but will also give them a competitive advantage." />
|
||
|
||
|
||
<link rel="image_src" href="https://res.infoq.com/articles/series-enhancing-resilience-2/en/headerimage/croppted-QCa7RnVc-1607521554439-1610043079515.jpeg"/>
|
||
|
||
|
||
|
||
<link rel="stylesheet" href="https://cdn.infoq.com/statics_s2_20260910111657/styles/prism.css"/>
|
||
<meta name="keywords" content="series enhancing resilience 2,Culture & Methods,Covid Resilience Article Series,Culture,COVID-19,Stories & Case Studies,Site Reliability Engineering,Reliability,learning,Incident Response,Community,Agile,"/>
|
||
<meta name="description" content="The second article in a series on how software companies adapted and continue to adapt to enhance their resilience explores how organizations can shift to a Learn & Adapt safety mode.
|
||
."/>
|
||
<meta name="tprox" content="1610348400000" />
|
||
|
||
|
||
|
||
|
||
|
||
<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_s2_20260910111657/scripts/relatedVcr.min.js"></script>
|
||
<script type="application/javascript">
|
||
var communityIds = "2499";
|
||
var topicIds = "6729,2064,6600,37,5774,1736,1545,4910,442,3";
|
||
VCR.loadAllVcrs(communityIds, topicIds);
|
||
</script>
|
||
<script type="text/javascript" src='https://cdn.infoq.com/statics_s2_20260910111657/scripts/subscription.js'></script>
|
||
|
||
|
||
|
||
|
||
<script type="text/javascript" src="https://cdn.infoq.com/statics_s2_20260910111657/scripts/infoq.js"></script>
|
||
|
||
<script type="text/javascript">
|
||
document.addEventListener('DOMContentLoaded', function() {
|
||
if (!window || !window.infoq) return
|
||
infoq.init()
|
||
})
|
||
</script>
|
||
|
||
<script defer data-domain="infoq.com" src="https://plausible.io/js/script.file-downloads.hash.outbound-links.pageview-props.tagged-events.js"></script>
|
||
<script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</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="rNtXcLKmTPpTEcHR"/>
|
||
<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>Live Webinar and Q&A: When AI Accelerates Development, Can Your CI Pipeline Keep Up? (Oct 8, 2026)</span>
|
||
<a class="btn" href="/url/pb/273a2222-ac40-45d2-b8b6-06c13381e2e2/" target="_blank" rel="nofollow">
|
||
Save Your Seat
|
||
</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="action_button__group">
|
||
<a href="/reginit.action?" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__green button__small">Register</a>
|
||
<a href="/social/keycloakLogin.action?fl=login" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__small button__outline">Sign in</a>
|
||
</div>
|
||
|
||
<div class="modal_auth_required">
|
||
<div class="modal_auth_required__actions">
|
||
<h2 class="h2">Unlock the full InfoQ experience</h2>
|
||
<p>Unlock the full InfoQ experience by logging in! Stay updated with your favorite authors and topics, engage with content, and download exclusive resources.</p>
|
||
<a href="/social/keycloakLogin.action?fl=login" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__has-transition">Log In</a>
|
||
<div class="separator"><span>or</span></div>
|
||
<h3 class="h3">Don't have an InfoQ account?</h3>
|
||
<a href="/reginit.action?" onclick="return UserActions_Login.addLoginInfo(this);" class="button__outline button__has-transition">Register</a>
|
||
</div>
|
||
<div class="modal_auth_required__content">
|
||
<ul class="newsletter__features">
|
||
<li><strong>Stay updated on topics and peers that matter to you</strong>Receive instant alerts on the latest insights and trends.</li>
|
||
<li><strong>Quickly access free resources for continuous learning</strong>Minibooks, videos with transcripts, and training materials.</li>
|
||
<li><strong>Save articles and read at anytime</strong>Bookmark articles to read whenever youre ready.</li>
|
||
</ul>
|
||
</div>
|
||
<form id="login-form" data-vv-scope="login" class="login__form form" action="#" data-gtm-form-interact-id="0">
|
||
<input type="hidden" id="loginWidgetOrigin" name="loginWidgetOrigin" value="mainLogin">
|
||
<input type="hidden" name="fromP13N" id="isP13n" value="">
|
||
<input type="hidden" name="fromP13NId" id="p13n-id" value="">
|
||
<input type="hidden" name="fromP13NType" id="p13n-type" value="">
|
||
</form>
|
||
</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/solopreneur-journey">A Solopreneur's Journey: From Engineer to Puzzle Master and Storyteller</a>
|
||
</h4>
|
||
<p class="card__excerpt">Joe Cassavaugh shares his journey from software engineer to successful solopreneur with a $2M+ indie franchise. He explains how he scaled production to 10 games in 5 years, adopted Unity to boost velocity 4-6x, optimized content pipelines, and leveraged refactoring patterns. He discusses key trade-offs between corporate engineering and solopreneurship for senior devs and leaders.</p>
|
||
<div class="card__footer"></div>
|
||
</div>
|
||
|
||
<a href="/presentations/solopreneur-journey" class="card__header">
|
||
<img loading="lazy" alt="A Solopreneur's Journey: From Engineer to Puzzle Master and Storyteller" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/presentations/solopreneur-journey/en/smallimage/joe-cassavaugh-thumbnail-1788338336404.jpg" 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="/minibooks/next-gen-architecture-ai-era">Next-Gen Architecture Playbook: Insights and Patterns for the AI Era</a>
|
||
</h4>
|
||
<p class="card__excerpt">This eMag examines how architects can lead with clarity in a rapidly evolving engineering world, distilling industry insights into field-tested practices for teams. Together, these stories reveal a core theme: the technology leader’s role is expanding from building systems to guiding how tech behaves and learns, while enabling engineers and organizations to bring out their best.</p>
|
||
<div class="card__footer"></div>
|
||
</div>
|
||
|
||
<a href="/minibooks/next-gen-architecture-ai-era" class="card__header">
|
||
<img loading="lazy" alt="Next-Gen Architecture Playbook: Insights and Patterns for the AI Era" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/minibooks/next-gen-architecture-ai-era/en/smallimage/thumb-image-emag-next-gen-architecture-playbook-1787922032442.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/when-spec-driven-development-pays-off">When Spec-Driven Development Pays Off</a>
|
||
</h4>
|
||
<p class="card__excerpt">AI coding assistants have become a core part of software development. AI-generated code has shown productivity gains, but it's also contributing to security weaknesses and familiar bug patterns. In this article, author Nitin Garg highlights the bottleneck has moved from code generation to code verification, and how to detect & mitigate it when the AI-generated behavior diverges from the intent.</p>
|
||
<div class="card__footer"></div>
|
||
</div>
|
||
|
||
<a href="/articles/when-spec-driven-development-pays-off" class="card__header">
|
||
<img loading="lazy" alt="When Spec-Driven Development Pays Off" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/when-spec-driven-development-pays-off/en/smallimage/When-Spec-Driven-Development-Pays-Off-thumb-1788790605567.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="/presentations/rust-refactoring">Accelerating Performance by Incrementally Integrating Rust Into Existing Codebase</a>
|
||
</h4>
|
||
<p class="card__excerpt">Lily Mara explains how to avoid high-risk software rewrites through incremental FFI refactoring. She shares how engineering teams can replace Python bottlenecks with Rust via PyO3, demonstrating how to achieve dramatic function-level speedups, seamless integration testing, and meaningful infrastructure cost savings without microservice overhead.</p>
|
||
<div class="card__footer"></div>
|
||
</div>
|
||
|
||
<a href="/presentations/rust-refactoring" class="card__header">
|
||
<img loading="lazy" alt="Accelerating Performance by Incrementally Integrating Rust Into Existing Codebase" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/presentations/rust-refactoring/en/smallimage/lily-mara-thumbnail-1788338447565.jpeg" 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/ai-platform-engineering-roundtable">Platform Engineering in the Age of AI</a>
|
||
</h4>
|
||
<p class="card__excerpt">The panelists explain how platform teams adapt to support AI-assisted engineering, highlighting which capabilities belong in the platform. They discuss trade-offs between standardization and developer autonomy, while sharing strategies to manage AI tooling, security guardrails, and shifting workflows.</p>
|
||
<div class="card__footer"></div>
|
||
</div>
|
||
|
||
<a href="/presentations/ai-platform-engineering-roundtable" class="card__header">
|
||
<img loading="lazy" alt="Platform Engineering in the Age of AI" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/presentations/ai-platform-engineering-roundtable/en/smallimage/thumb-1788861349861.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="https://c4media.com/" target="_blank" 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="events-list" role="list" aria-label="Upcoming events">
|
||
<div class="event-item" role="listitem" data-event-type="certification" data-sort-date="2026-09-14">
|
||
<a class="event-card" href="https://certification.qconferences.com/architecture?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_onlinecohortarchitecture26" target="_blank" rel="noopener noreferrer" aria-label="Online InfoQ Architect Certification, Sep 14, 2026">
|
||
<div class="event-date">
|
||
<div class="event-date-box" aria-hidden="true"><span>Sep</span><span>14,</span><span>2026</span></div>
|
||
</div>
|
||
<div class="event-content">
|
||
<p class="event-title">Architect Certification</p>
|
||
<p class="event-description">Distributed systems, decentralized decisions, platform engineering, and AI architecture. <br/><strong>Online. Register Now.</strong></p>
|
||
</div>
|
||
</a>
|
||
</div>
|
||
<div class="event-item" role="listitem" data-event-type="certification" data-sort-date="2026-09-18">
|
||
<a class="event-card" href="https://certification.qconferences.com/ai-assisted-engineering?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_onlinecohortaiassistedengineering26" target="_blank" rel="noopener noreferrer" aria-label="AI-Assisted Engineering Certification, Sep 18, 2026">
|
||
<div class="event-date">
|
||
<div class="event-date-box" aria-hidden="true"><span>Sep</span><span>18,</span><span>2026</span></div>
|
||
</div>
|
||
<div class="event-content">
|
||
<p class="event-title">AI-Assisted Engineering Certification</p>
|
||
<p class="event-description">Your coding agent moves fast. Who checks whether it's making the codebase better? <br/><strong>Online. Register Now.</strong></p>
|
||
</div>
|
||
</a>
|
||
</div>
|
||
<div class="event-item" role="listitem" data-event-type="certification" data-sort-date="2026-10-14">
|
||
<a class="event-card" href="https://certification.qconferences.com/ai-security-privacy?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_onlinecohortaisecurity26" target="_blank" rel="noopener noreferrer" aria-label="Online InfoQ AI Security & Privacy Engineering Certification, August 26, 2026">
|
||
<div class="event-date">
|
||
<div class="event-date-box" aria-hidden="true"><span>Oct</span><span>14,</span><span>2026</span></div>
|
||
</div>
|
||
<div class="event-content">
|
||
<p class="event-title">AI Security & Privacy Engineering Certification</p>
|
||
<p class="event-description">Secure and govern production AI systems, from sensitive data to guardrails, evals, and audits.<br><strong>Online. Register now.</strong></p>
|
||
</div>
|
||
</a>
|
||
</div>
|
||
<div class="event-item" role="listitem" data-event-type="qcon" data-sort-date="2026-11-16">
|
||
<a class="event-card" href="https://qconsf.com/?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_qsf26" target="_blank" rel="noopener noreferrer" aria-label="QCon San Francisco, Nov 16-20, 2026">
|
||
<div class="event-date">
|
||
<div class="event-date-box" aria-hidden="true"><span>Nov</span><span>16-20,</span><span>2026</span></div>
|
||
</div>
|
||
<div class="event-content">
|
||
<p class="event-title">QCon San Francisco</p>
|
||
<p class="event-description">What's working across AI, architecture, and leadership, from the teams doing it. <br/><strong>Register. Early bird ends August 11.</strong></p>
|
||
</div>
|
||
</a>
|
||
</div>
|
||
<div class="event-item" role="listitem" data-event-type="qcon" data-sort-date="2026-12-15">
|
||
<a class="event-card" href="https://newyork.qcon.ai/?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_qainy26" target="_blank" rel="noopener noreferrer" aria-label="QCon AI New York, December 15-16, 2026">
|
||
<div class="event-date">
|
||
<div class="event-date-box" aria-hidden="true"><span>Dec</span><span>15-16,</span><span>2026</span></div>
|
||
</div>
|
||
<div class="event-content">
|
||
<p class="event-title">QCon AI New York</p>
|
||
<p class="event-description">Production AI across agents, context, evals, security, and infrastructure, from the senior engineers building it.<br/><strong>Registration open.</strong></p>
|
||
</div>
|
||
</a>
|
||
</div>
|
||
<div class="event-item" role="listitem" data-event-type="qcon" data-sort-date="2027-04-13">
|
||
<a class="event-card" href="https://qconlondon.com/?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_qconlondon27" target="_blank" rel="noopener noreferrer" aria-label="QCon London, April 13-16, 2027">
|
||
<div class="event-date">
|
||
<div class="event-date-box" aria-hidden="true"><span>Apr</span><span>13-16,</span><span>2027</span></div>
|
||
</div>
|
||
<div class="event-content">
|
||
<p class="event-title">QCon London</p>
|
||
<p class="event-description">What early-adopter teams have proven in production, across 15 engineering tracks. <br/><strong> Register. Early bird ends August 11.</strong></p>
|
||
</div>
|
||
</a>
|
||
</div>
|
||
</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">Shifting Modes: Creating a Program to Support Sustained Resilience</span>
|
||
|
||
|
||
|
||
|
||
|
||
</p>
|
||
|
||
<div class="actions">
|
||
<div class="actions__left">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="article__category culture-methods">
|
||
|
||
<a
|
||
|
||
href="/culture-methods/"
|
||
|
||
class="article__tag box--info" title="Culture & Methods">
|
||
|
||
Culture & Methods
|
||
</a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
<div class="actions__right">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div data-nosnippet class="notice">
|
||
<div class="box--warning">
|
||
<a target="_blank" rel="nofollow" href="https://certification.qconferences.com/architecture?utm_source=infoq&utm_medium=referral&utm_campaign=infoqyellowbox_onlinecohortarchitecture26 ">Online InfoQ Architect Certification (Sept 14): The sociotechnical side of architecture. </a>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
<div class="actions heading__container article__heading">
|
||
<div class="actions__left">
|
||
<h1 class="heading">
|
||
Shifting Modes: Creating a Program to Support Sustained Resilience
|
||
</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">Jan 11, 2021<span class="dot"></span>
|
||
|
||
|
||
|
||
|
||
25
|
||
min read
|
||
|
||
</p>
|
||
<div class="widget article__authors">
|
||
<div>
|
||
<p class="meta">by</p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<ul class="no-style authors">
|
||
|
||
|
||
|
||
|
||
<li data-id="author-Alex-Elman">
|
||
<p class="meta author__bio">
|
||
|
||
<a href="/profile/Alex-Elman/" class="avatar author__avatar" aria-label="Alex Elman"></a>
|
||
<span class="author__name">
|
||
<a href="/profile/Alex-Elman/" class="author__link">Alex Elman</a>
|
||
</span>
|
||
</p>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
|
||
<div>
|
||
<p class="meta">reviewed by</p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<ul class="no-style authors">
|
||
|
||
|
||
|
||
|
||
<li data-id="author-Ben-Linders">
|
||
<p class="meta author__bio">
|
||
|
||
<a href="/profile/Ben-Linders/" class="avatar author__avatar" aria-label="Ben Linders"></a>
|
||
<span class="author__name">
|
||
<a href="/profile/Ben-Linders/" class="author__link">Ben Linders</a>
|
||
</span>
|
||
</p>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div data-nosnippet class="cta_write_infoq">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h4 class="heading text-left footer__heading">Follow us on </h4>
|
||
<div class="social__links columns social__links__row">
|
||
<a style="color:#222 !important;" rel="noreferrer noopener" href="https://bit.ly/4bg6QM8" target="_blank"><span class="icon icon__large icon__social icon__youtube"></span><div><span class="social__count" style="font-weight:700 !important">Youtube</span><span class="social__followers">232K Followers</span></div></a>
|
||
<a style="color:#222 !important;" rel="noreferrer noopener" href="https://bit.ly/44IzAtf" target="_blank"><span class="icon icon__large icon__social icon__linkedin"></span><div><span class="social__count" style="font-weight:700 !important">Linkedin</span><span class="social__followers">26K Followers</span></div></a>
|
||
<a style="color:#222 !important;" rel="noreferrer noopener" href="https://bit.ly/4eYXrtM" target="_blank"><span class="icon icon__large icon__social icon__instagram"></span><div><span class="social__count" style="font-weight:700 !important">Instagram</span><span class="social__followers">New</span></div></a>
|
||
<a style="color:#222 !important;" rel="noreferrer noopener" href="https://bit.ly/3RaJalC" target="_blank"><span class="icon icon__large icon__social icon__rss"></span><div><span class="social__count" style="font-weight:700 !important">RSS</span><span class="social__followers">19K Readers</span></div></a>
|
||
<a style="color:#222 !important;" rel="noreferrer noopener" href="https://bit.ly/4pfxivv" target="_blank"><span class="icon icon__large icon__social icon__twitter"></span><div><span class="social__count" style="font-weight:700 !important">X</span><span class="social__followers">57.1k Followers</span></div></a>
|
||
<a style="color:#222 !important;" rel="noreferrer noopener" href="https://bit.ly/3QrGMH2" target="_blank"><span class="icon icon__large icon__social icon__fb"></span><div><span class="social__count" style="font-weight:700 !important">Facebook</span><span class="social__followers">21K Likes</span></div></a>
|
||
<a style="color:#222 !important;" rel="noreferrer noopener" href="https://bit.ly/4eS8FjG" target="_blank"><span class="icon icon__large icon__social icon__bluesky"></span><div><span class="social__count" style="font-weight:700 !important">Bluesky</span><span class="social__followers">New</span></div></a>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
<div class="article__content">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="actions__left actions__sidebar article__actions">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<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', 'series-enhancing-resilience-2');
|
||
}
|
||
|
||
infoq.event.on('bookmarkRequested', function(e) {
|
||
Bookmarks.toggleBookmark('articles', 'series-enhancing-resilience-2');
|
||
});
|
||
|
||
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>Incidents cannot be prevented because incidents are the inevitable result of success.</li>
|
||
<li>Organizations must shift from a “prevent and fix” safety mode to a “learn and adapt” (Learn & Adapt) safety mode to manage reliability and resilience. This shift helps to more effectively cope with increasing complexity and scale.</li>
|
||
<li>Finding advocates to help socialize the movement and communicating broadly are key aspects of creating a sustained shift to a Learn & Adapt mode.</li>
|
||
<li>Normalizing behaviors — such as stating assumptions, asking more questions, increasing cooperation between diverse roles, and broadly sharing incident write-ups across the organization — help with the mode shift by increasing the flow of information.</li>
|
||
<li>Developing the cultural traits of opportunity creation, flexibility, agility, and trust are necessary for an organization poised to shift to Learn & Adapt.</li>
|
||
</ul>
|
||
|
||
<div class="separator separator__three-dots center"></div>
|
||
</div>
|
||
|
||
|
||
|
||
<p><small><em>To most software organizations,Covid-19 represents a fundamental surprise- a dramatic surprise that challenges basic assumptions and forces a revising of one’s beliefs (Lanir, 1986).</em></small></p>
|
||
|
||
<p><small><em>While many view this surprise as an outlier event to be endured, <a href="https://www.infoq.com/covid-resilience-article-series/">this series</a> uses the lens of Resilience Engineering to explore how software companies adapted (and continue to adapt), enhancing their resilience. By emphasizing strategies to sustain the capacity to adapt, this collection of articles seeks to more broadly inform how organizations cope with unexpected events. Drawing from the resilience literature and using case studies from their own organizations, engineers and engineering managers from across the industry will explore what resilience has meant to them and their organizations, and share the lessons they’ve taken away. </em></small></p>
|
||
|
||
<p><small><em>The first article starts by laying a foundation for thinking about organizational resilience, followed by a second article that looks at how to sustain resilience with a case study of how one service provider operating at scale has introduced programs to support learning and continual adaptation. Next, continuing with case examples, we will explore how to support frontline adaptation through socio-technical systems analysis before shifting gears to look more broadly at designing and resourcing for resilience. The capstone article will reflect on the themes generated across the series and provide guidance on lessons learned from sustained resilience.</em></small></p>
|
||
|
||
<p> </p>
|
||
|
||
|
||
<div class="clear"></div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script type="text/javascript">
|
||
var uriMapping = "articles";
|
||
var showVcr = "true";
|
||
var fillWithVcr = "false";
|
||
var sponsorshipsJson = "{"links":null}";
|
||
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="2499" 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 Sponsors</h4>
|
||
|
||
<div class="f_rvcList"></div>
|
||
|
||
|
||
|
||
</ul>
|
||
|
||
<div class="related__prsp f_sponsorship" data-trk-view="true" data-place="EMBEDDED" data-trk-impr="true" jsh="{"topic":"Site Reliability Engineering","id":"df5f1bb5-de51-4d94-b2fd-530d26d04f55","title":"Harness September 17th Webinar 08/13/2026 - 09/17/2026"}">
|
||
<h4 class="heading">Related Sponsor</h4>
|
||
|
||
<a href="/url/f/275bd2db-c560-460d-a765-5c023beacb5d/" target="_blank" rel="nofollow">
|
||
<img loading="lazy" src="https://imgopt.infoq.com//fit-in/290x500/filters:quality(100)/filters:no_upscale()/sponsorship/topic/df5f1bb5-de51-4d94-b2fd-530d26d04f55/HarnessWebinarSept17-RSB-1786634005234.png" class="related__img" alt="Related sponsor icon"/>
|
||
</a>
|
||
|
||
|
||
<div class="related__desc">
|
||
<ul class="cards no-style" style="margin-top: 12px;">
|
||
<li class="rsb__webinar" data-col="1/1" data-type="webinar" hoverables=""><span class="date" style=" padding-top: 0; line-height: 16px; font-size: 11px; ">September 17, 2026, 1 PM EDT</span>
|
||
<h5 class="title rvc__title"><a href="/url/f/57e33574-4fc3-4cfe-b9e0-cdf9d4a683f4/" target="_blank" rel="nofollow">Beyond the PR: The New Control Plane for Agentic Software Delivery</a></h5>
|
||
|
||
<p class="card__excerpt" style="margin-top: 0; "><a href="/url/f/331a5385-3bfa-4256-b021-28cfa078b568/" target="_blank" rel="nofollow">Presented by: Mohit Suman - Staff Product Manager at Harness</a></p>
|
||
|
||
<footer>
|
||
<div class="authors"><span><a href="/url/f/3f0650f7-c3e9-48e5-b9f8-40dbf8f33a5b/" target="_blank" rel="nofollow">SPONSORED BY HARNESS</a></span></div>
|
||
|
||
<p class="button__cta"><a href="/url/f/48fa7dc3-6dc8-4f89-a8a1-4f76d1b8c181/" target="_blank" rel="nofollow">Save your seat</a></p>
|
||
</footer>
|
||
</li>
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
<p>Imagine for a moment that you work at a company that continuously ships customer-facing software. Say that your organization has managed to do the impossible and stopped having any serious incidents — you’ve achieved 100% reliability. Your product is successful. It’s fast, useful, usable, and reliable. Adoption increases, users desire new features, and they become accustomed to this success. As this happens, various pressures are continuously exerted on your organization — such as the pressure to ship features more quickly, the pressure to increase revenue, and the pressure to do more with less. Concurrently, there are additional constraints. Employees cannot be asked to work longer hours because work-life balance is a stated corporate priority. Given both this short-term success coupled with the constraints, what would happen over time?</p>
|
||
|
||
<p>Since employees are not spending time responding to incidents, engaging with retrospective activities, and delivering on action times in this highly reliable future, they’ll have more time to respond to those business pressures for greater efficiency. The tradeoff with having no incidents is that existing employees will fall out of practice on how to collaboratively work to respond to and understand their products in Production (aka <a href="https://sre.google/sre-book/being-on-call/#xref_oncall_underload">operational underload</a>.) Work will continue to increase in tempo, pace, and complexity. New employees will be hired and trained to account for the increase in workload. Unforeseen threats will act upon the system. Inevitably, there will be more incidents. </p>
|
||
|
||
<p>Incidents are a signal from the system that change is happening too quickly and that there are mismatches between people’s models of the system versus the actual system. Incidents are a buffer that stabilizes the pace of change. Success is the reason that you will never be able to truly prevent incidents according to the Law of Stretched Systems [<a href="https://www.researchgate.net/publication/334267822_Steering_the_Reverberations_of_Technology_Change_on_Fields_of_Practice_Laws_that_Govern_Cognitive_Work">1</a>]. Embracing this inevitability will be the key to continued success in a climate of increasing complexity and interconnectedness.</p>
|
||
|
||
|
||
|
||
|
||
<div id="lowerFullwidthVCR"></div>
|
||
|
||
<p>What I'm witnessing in the software industry is that we're getting stuck in a local maxima. We've plateaued in our approach to safety. I predict that if we don't level up how we cope with increases in complexity and scale soon, we'll be in big trouble. </p>
|
||
|
||
<p>At Indeed, we’ve recognized that we need to drive organizational change to maintain the success we’ve had and keep pace with changing complexity and greater scales. Over the last 16 years, Indeed has grown quickly and the pace of change has accelerated. Because we recognize the importance of getting this right, we are implementing a shift to a Learn & Adapt safety mode within our resilience engineering department. </p>
|
||
|
||
<p>In this article I will advocate that this mode shift is necessary in order to contend with the direction that the software industry is being pushed. I’ll describe the work necessary to enact this shift. Finally, I’ll compare the traits of an organization that is well poised for successfully persisting this mode shift. This shift won’t just make your organization safer, but also as Allspaw (2020) notes, "changing the primary focus from <a href="https://www.adaptivecapacitylabs.com/blog/2020/05/06/how-learning-is-different-than-fixing/">fixing to learning</a> will result in a significant competitive advantage."</p>
|
||
|
||
<h2>Different approaches to safety</h2>
|
||
|
||
<p>Facing down this increase in complexity in scale requires escaping the local maxima. A change in how an organization works is necessary. The shift is away from the traditional “prevent and fix” mode that's popular in software today. A prevent and fix safety mode is defined by a preoccupation with accident avoidance, strict controls, and a focus on what breaks.</p>
|
||
|
||
<p><img _href="img://41image001-1610042325755.jpg" alt="" class="zoom-image" data-src="articles/series-enhancing-resilience-2/en/resources/41image001-1610042325755.jpg" style="width: 1966px; height: 1104px;" src="https://imgopt.infoq.com/fit-in/3000x4000/filters:quality(85)/filters:no_upscale()/articles/series-enhancing-resilience-2/en/resources/41image001-1610042325755.jpg" rel="share"></p>
|
||
|
||
<p><small><strong>Figure 1</strong></small></p>
|
||
|
||
<p>An organization preoccupied with this type of safety mode is not spending time focusing on how to adapt to surprise. The organization might also be spending a lot of time fixing things that don't need the most attention. Sometimes preventative work can actually hinder opportunities for adaptations. For example, turning on <a href="https://dev.mysql.com/doc/refman/8.0/en/mysql-tips.html#safe-updates">MySQL safe mode</a> in Production to prevent UPDATE statements without a WHERE clause might prevent a recurrence of this type of mistake. Safe mode can also stymie a DBA jumping onto the MySQL command line to make a critical repair during an incident.</p>
|
||
|
||
<p>By contrast, practicing a “learn and adapt” (Learn & Adapt) approach to safety means that encounters with incidents lead to an enhanced understanding of how normal, everyday work creates safety. Organizations that prioritize learning and adapting over preventing and fixing will also improve their ability to prevent and fix. I describe in more detail how that can lead to <a href="https://youtu.be/iED_PQhMJ7o">safer operations</a> in a recent talk I gave at SREcon20 Americas.</p>
|
||
|
||
<p><img _href="img://34image003-1610042326279.jpg" alt="" class="zoom-image" data-src="articles/series-enhancing-resilience-2/en/resources/34image003-1610042326279.jpg" style="width: 1965px; height: 1102px;" src="https://imgopt.infoq.com/fit-in/3000x4000/filters:quality(85)/filters:no_upscale()/articles/series-enhancing-resilience-2/en/resources/34image003-1610042326279.jpg" rel="share"></p>
|
||
|
||
<p><small><strong>Figure 2</strong></small></p>
|
||
|
||
<p>There appears to be a broad consensus from the <a href="https://github.com/lorin/resilience-engineering">Resilience Engineering research literature</a> that the Learn & Adapt approach is superior to approaches aimed at accident avoidance and local fixes. A set of traits make some organizations more successful at this than others. <a href="https://www.infoq.com/articles/series-enhancing-resilience-1/">As article 1 in this series mentioned</a>, it’s unreasonable to expect anyone in an organization to have predicted the coronavirus pandemic, but it’s perfectly reasonable to anticipate and prepare for future encounters with surprise. It’s something that an organization can get better at over time with continuous focus and investment.</p>
|
||
|
||
<p>One example of achieving this mode shift is in how an organization approaches its incidents. In the prevent and fix safety mode, incidents are seen as evidence of poor team performance, poor product quality, or avoidable losses. One primary cause is uncovered through causal analysis techniques like The Five Whys. The analysis typically ends there. By contrast, Learn & Adapt promotes using incidents as a lens through which an organization casts a light on processes, decision making, collaboration, and how work gets done. This is accomplished using an incident analysis loop that focuses on at least 50% of the human factors.</p>
|
||
|
||
<p>This mode shift isn’t achieved by creating a new team, changing people’s titles, hiring the “right” person, or buying the “right” vendor product. It’s also not something that happens overnight. This mode shift requires the organization to change from within. It begins by sowing the seed of organizational change. Once the seed becomes a sapling, the organization can begin to achieve a continuous reinforcing loop of learning and adapting. This reinforcing loop requires constant nurturing and attention, much like caring for a delicate plant. The caveat is that the sapling can only emerge from the soil and thrive with the right mix of nutrients and the right environmental conditions. Many of those nutrients and conditions are related to organizational culture.</p>
|
||
|
||
<h2>Driving organizational change</h2>
|
||
|
||
<p>My intense focus in this area was inspired by an experience I had years ago when I participated in a string of hour-long retrospective meetings. I was invited to these meetings because I was an SRE and a recognized subject matter expert in RabbitMQ — a factor in several of those incidents. What I noticed struck me as a missed opportunity. </p>
|
||
|
||
<p>In each of those meetings, over a dozen people were present in the conference room. In some cases, it was standing room only. It was a very expensive meeting. The facilitator went through the agenda, going over the timeline, the action items, and the contributing factors. It was a rote presentation rehashing what had happened, driven by the template document produced a priori. There was a call for questions, and the meeting ran to the end of the agenda within 25 to 30 minutes. We wrapped early. This was an opportunity where we had a lot of eager people in a room to discuss the incident, but I left the meeting without an improved or enhanced understanding about what happened. The facilitator followed the process faithfully, so I identified a problem with the process itself. I wanted to learn how to make this process more effective. And in pursuing this research, I found that there was so much more to learning from incidents than what I originally assumed. </p>
|
||
|
||
<p>Once I recognized that process change was necessary, I solicited viewpoints from co-workers on why we conduct retrospectives at Indeed. Reasons I heard are likely familiar to most software organizations:</p>
|
||
|
||
<ul>
|
||
<li>Find out what caused the outage</li>
|
||
<li>Measure the impact</li>
|
||
<li>Ensure that the outage never happens again</li>
|
||
<li>Create remediation items and assign owners</li>
|
||
</ul>
|
||
|
||
<p>While these answers reflect Indeed’s strong sense of ownership, it’s important to use these opportunities to direct efforts toward a deeper analysis into our systems (both people and technical) and the assumptions that we’ve made about them. When someone’s service is involved in an incident, there’s a concern that we were closer to the edge of failure than we thought we were. Priorities temporarily change and people are more willing to critically examine process and design choices. </p>
|
||
|
||
<p>These approaches to a different organizational culture at Indeed are still relatively new and are evolving toward widespread adoption, but early indications are promising. After a recent learning review where we discussed an incident write-up, I received this piece of feedback: “The write-up had interesting and varied content, effectively summarized crucial Indeed context, and demonstrably served as the basis for a rich dialogue. Participants revealed thoughtful self-reflection, openly shared new information about their perspective, refined their mental models, became closer as colleagues, and just plain learned cool things.”</p>
|
||
|
||
<p>I have made headway, but there is still a lot to do. While my efforts have benefitted from my tenure in the company, experience participating in hundreds of incidents, and connection to the research literature, I can also attribute some of my progress so far to three key organizational elements: </p>
|
||
|
||
<ol>
|
||
<li>Finding other advocates in the company</li>
|
||
<li>Communicating broadly, and </li>
|
||
<li>Normalizing certain critical behaviors</li>
|
||
</ol>
|
||
|
||
<h3>Find advocates</h3>
|
||
|
||
<p>Advocates are colleagues who align closely with the goals, acknowledge where we could be doing better, and share a vision of what could be. They are instrumental to drive organizational change. Having multiple colleagues model new behaviors can help spur social change and create a movement. It’s very difficult to engage in this work alone. I’ve found these advocates and I wager they exist within your company as well. They are colleagues who keep an open mind and have the curiosity to consider multiple perspectives. </p>
|
||
|
||
<p>I found one such advocate during an incident in 2020 that I analyzed. In a 1:1 debrief interview with a responder who had only peripherally been involved, I asked why they had participated in a group remediation session. Their answer demonstrates that advocates aren’t created; they’re discovered: “I like to join just about every event [Slack] channel I can even when I'm not directly related. I find that these kinds of things are one of the best ways to learn our infrastructure, how things work, who to go to when things are on fire. Who [are] the people that will be fixing stuff? I learn a lot from these things. Like I said, even when it's not my stuff that's broken.”</p>
|
||
|
||
<p>Incident debrief interviewing is not the only place to locate advocates. I hold numerous 1:1s with leaders and stakeholders across the organization. I find opportunities to bring these topics up during meetings. I give internal tech talks and reach out to potential advocates whenever I visit one of our global engineering offices. Internal tech talks have the effect of drawing people out who have aligned interests or stories to share. They will make themselves known, perhaps by approaching you after the talk. You may find them to be advocates who can help socialize the movement within your organization. Indeed has offices all over the world, across different time zones. Advocates in each of those offices bring uniformity to the campaign.</p>
|
||
|
||
<h3>Communicating broadly</h3>
|
||
|
||
<p>The second key component of driving organizational change is ensuring the messages are heard across the entire organization — not just within a single team or function. Organization size is an important influence when engaging in broad communication. A 10,000 person org poses different challenges than a 1,000 or 100 person org. </p>
|
||
|
||
<p>As much as I might think that I am sufficiently communicating the details of a new program, it’s rarely enough. I find that I have to constantly over-communicate. As I over-communicate and leverage multiple channels, I may sound repetitive to anyone in close proximity to my message. This is the only way to reach the far edges of the organization that might not otherwise hear me.</p>
|
||
|
||
<p>The same communication challenges present themselves in the aftermath of an incident when a team discovers and applies corrective actions. These are often “local-only” fixes, interventions, and lessons that only benefit the part of the organization that experiences the incident. The global organization fails to learn this (sometimes costly) lesson. </p>
|
||
|
||
<p>Ron Westrum, a researcher in organizational behavior, notes that, "One of the most important features of a culture of conscious inquiry is that what is known in one part of the system is communicated to the rest. This communication, necessary for a global fix, aids learning from experience, very important in systems safety. The communication occurs because those in the system consider it their duty to inform the others of the potential danger or the potential improvement.” [<a href="https://qualitysafety.bmj.com/content/13/suppl_2/ii22.short">2</a>]</p>
|
||
|
||
<p>It's not enough for a team to capture and address important technical fixes and lessons learned in their retrospective materials. Allspaw (2020) spent two years observing how software organizations engage with incidents and found that "hands-on practitioners do not typically capture the post-incident write-up for readers beyond their local team" and "do not read post-incident review write-ups from other teams.” [<a href="https://www.adaptivecapacitylabs.com/blog/2020/07/16/presentation-findings-from-the-field/">3</a>] </p>
|
||
|
||
<p>The organization doesn’t truly benefit until those lessons are scaled far and wide. For the write-ups to be useful, they have to teach the reader something new and help draw out the complexities of the incident.</p>
|
||
|
||
<h3>Normalize new behaviors</h3>
|
||
|
||
<p>Organizational change involves new modes and behaviors. Some of those modes and behaviors might be at odds with how things used to be done. Or they are just non-intuitive. This places a barrier on reaching a critical mass in these desired behaviors. A good place to get started is by modeling the changes yourself. Normalizing these modes and behaviors will help them spread to early adopters and then spawn a social movement. I’ve found there are four main areas to focus on to successfully promote a Learn & Adapt mode to safety.</p>
|
||
|
||
<h4>1) Normalize stating your assumptions as much as possible</h4>
|
||
|
||
<p>Assumptions are beliefs you hold that are sometimes so obvious or (seemingly) self-evident that stating them explicitly doesn’t seem necessary. It’s very likely that what you think is obvious might be surprising to others. For example, you might believe that the fact that the MySQL primary can’t safely fail over to another datacenter automatically is so obvious as to not be worth explicitly stating often. In reality, your colleague might believe the exact opposite. </p>
|
||
|
||
<p>Stating your assumptions gives others an opportunity to recalibrate their model if there’s a mismatch or vice-versa. The conversations between a group of people recalibrating their models of the system are some of the most insightful conversations I’ve experienced. Great places to state your assumptions are in design review materials and in merge requests. What do you assume will happen in the presence of 10% packet loss? What about 50% packet loss? Do you assume that system clocks are always monotonically increasing? Do you assume that your consumer services will never encounter duplicate messages? What do you assume might happen if they do encounter duplicates? Stating these assumptions explicitly will elicit important conversations because participants in these reviews will come with their own assumptions about what you assumed about your design. There’s no impetus for participants to challenge your assumptions if they assume yours matches theirs.</p>
|
||
|
||
<h4>2) Normalize asking a lot of questions</h4>
|
||
|
||
<p>This is another approach that can help surface mismatched models of the system. Curiosity is an important cultural trait that nurtures Learn & Adapt. You might worry that asking questions betrays a surprising gap in your knowledge, but if everybody asks a lot of questions, it takes the sting out of asking them. </p>
|
||
|
||
<p>Asking questions can also help promote a more psychologically safe workplace. Discussing technical topics in front of an audience of peers can be stressful. Everybody has errors somewhere in their mental models and you’re bound to surface those through discussions. The way that those errors are revealed to you are reflected by the cultural norms of your organization. Telling a colleague, “Well actually there are several problems with what you just said…” has a chilling effect on their willingness to state their assumptions in the future. Even if you’re certain that somebody is wrong, be curious instead of corrective. </p>
|
||
|
||
<p>Ask follow-up questions to reveal more of their mental model: “Did you notice any deprecation warnings at compile time?” Posing the mismatch as a question instead of a correction will lead to a more productive and psychologically safe exploration of the problem space. It also makes room for you, the corrector, to be incorrect, which also promotes an aspect of psychological safety.</p>
|
||
|
||
<h4>3) Normalize increased cooperation between roles that traditionally don’t directly work together</h4>
|
||
|
||
<p>A great example of this is product/engineering, and client-facing roles (like customer support or client success). Invite members of those teams to design reviews. Invite them to retrospective meetings or group learning reviews. Sometimes the client-facing support teams are the very first people in an organization to learn about a serious problem. The time between client-facing teams discovering the issue and the product teams learning about them is critical. The work needed to shorten that delay has to happen before the incident occurs, not during. </p>
|
||
|
||
<p>There was an incident in 2019 that was first detected by the client success team. During the interview phase of the incident analysis, I asked a product manager about how their team directly engages with the client success team. Their response was dismissive of the idea at first: “I don’t think that a sufficient solution for [this incident] should be relying on [customer] feedback to let us know of an issue. It’s too slow of a mechanism to help us identify a high impact issue.” </p>
|
||
|
||
<p>The corrective action for this incident was to add automated detection. While that corrective action will help detect a recurrence of the same impact, it misses an opportunity to work on better engagement and cooperation with the customer-facing teams. Incidents with impact that evade the existing detection in the future will take longer to resolve.</p>
|
||
|
||
<h4>4) Normalize sharing incident analysis deliverables with everyone in the company</h4>
|
||
|
||
<p>Sharing and discussing incident write-ups is arguably the most important aftermath activity. The <a href="http://stella.report/">STELLA report</a> delivered by the first cycle of the SNAFUcatchers Workshop on coping with complexity highlights this value: "Postmortems can point out unrecognized dependencies, mismatches between capacity and demand, mis-calibrations about how components will work together, and the brittleness of technical and organizational processes. They can also lead to deeper insights into the technical, organizational, economic, and even political factors that promote those conditions. Postmortems bring together and focus significant expertise on a specific problem for a short period. People attending them learn about the way that their systems work and don't work. Postmortems do not, in and of themselves, make change happen; instead, they direct a group’s attention to areas of concern that they might not otherwise pay attention to."</p>
|
||
|
||
<h2>Cultural traits</h2>
|
||
|
||
<p>Moving from a prevent and fix safety mode to Learn & Adapt involves changing the very nature of how organizations get work done. If your organization is already relatively successful at delivering products to customers, then making changes to the organization can be risky or even ill advised. Change must be deliberate, incremental, and continuously monitored if it is to result in a net benefit.</p>
|
||
|
||
<p>While the idea of a “safety culture” is problematic, there exists a connection between an organization’s culture and its ability to successfully prepare for surprise, navigate complexity, and learn from incidents. Culture is, as defined by Westrum (2004), “...the organisation’s pattern of response to the problems and opportunities it encounters.” [<a href="https://qualitysafety.bmj.com/content/13/suppl_2/ii22.short">2</a>] These patterns are informed by the shared set of behaviors, beliefs, and actions promoted and encouraged in an organization. A cultural norm might be obligating people to “own” their mistakes by expecting a set of follow-up behaviors in the aftermath of an incident. </p>
|
||
|
||
<p>In reflecting on the cultural norms within my own organization, I’ve identified some tradeoffs we’ve made that have helped cultivate and promote this shift toward Learn & Adapt.</p>
|
||
|
||
<h3>Opportunity over obligation</h3>
|
||
|
||
<p>How accountability and responsibility are handled in an organization is one aspect of the cultural norms. After a costly incident, a lot of attention is cast upon the parts of the system seen as broken or faulty. If there are considerable losses involved, a common reaction is to isolate a person or team to take responsibility and show accountability for the recovery and prevention activities. </p>
|
||
|
||
<p>People engage with a task differently when they feel it’s an obligation versus an opportunity. Opportunity is taken whereas obligation is assigned (whether explicitly or implicitly.) It is leadership’s role to highlight opportunities by making them attractive, clearly defined, and actionable. </p>
|
||
|
||
<p>One way to make opportunities more attractive is to change the incentive structures. Ryn Daniels, a software infrastructure engineer, describes a leverage point for <a href="https://www.infoq.com/articles/crafting-resilient-culture/">crafting a resilient culture</a>: “While there is a lot that goes into psychological safety in the workplace, one way to design for a culture of learning and blamelessness is to look at the incentive structures within your organization.” Instead of expecting people to own their post-incident activities, strive to make the opportunity attractive enough for anyone to select. Ryn suggests a strategy: “If your skills matrices for promotions include things like community contributions, post-mortem facilitation, or incident writeups, that can also provide incentive for people to take part in learning-focused activities. The behaviors that get rewarded and promoted within your organization will have a great deal of impact on its culture.” </p>
|
||
|
||
<p>Creating opportunities instead of assigning ownership not only helps ensure more thorough results, but fosters psychological safety.</p>
|
||
|
||
<h3>Flexibility over rigidity</h3>
|
||
|
||
<p>Placing rigid constraints on decision-making, new technologies, access, and what people are allowed to do in delivering their work can hinder opportunities for adaptation by undermining sources of resilience. These constraints accumulate over time as scar tissue from previous encounters with costly outages. </p>
|
||
|
||
<p>Rigid constraints can help an organization navigate legal risk, security risk, and financial risk, but they can limit flexibility. More flexibility can prove useful for adaptation because it gives people space to be curious and exercise their interests in other roles. How does the organization respond to a database administrator giving unsolicited help to the security team? What about a data scientist participating in a code review when it’s unrelated to their work or product? Being told to “stay in your lane” can be a manifestation of cultural norms that bias toward rigidity and could be a reflection of people’s insecurities, previous encounters with failure, or fear there is more work to do than available bandwidth. Fostering this flexibility can pay immense dividends when expertise emerges during an incident in an unexpected way.</p>
|
||
|
||
<h3>Agility over speed</h3>
|
||
|
||
<p>One of the most important engineering priorities at Indeed is velocity, which is the shortening of the development cycle from idea to delivery. While speed is important in the delivery of software, speed isn’t sufficient to adapt to unanticipated challenges. “Turning the ship” is a common metaphor to highlight the challenges of quickly changing direction as a function of organization size and speed. Agility is a trait that is useful in helping recognize when to change course and accept the sunk costs. In an incident, agility could mean recognizing and escaping cognitive fixation during diagnosis. After an incident, agility could result in the local participants sharing what they’ve learned so that the global organization can take heed and quickly recruit resources by pulling them from less important projects. Agility is a necessary (but not sufficient) aspect of promoting a Learn & Adapt approach to safety.</p>
|
||
|
||
<h3>Trust over suspicion</h3>
|
||
|
||
<p>Trust is fundamental to an organizational culture that learns and adapts. Trust colors our interpretations when we witness the actions of others when we don’t have the benefit of context. Trust means that we can assume that others are acting in good faith. Sometimes it can be easy to jump to anger or disgust with our colleagues when we are armed with hindsight in the aftermath of an incident. Trust means that we allow that they may have encountered substantial challenges. In a low-trust environment, fear, judgement, sanction, rigidity, and blame are common coping mechanisms. </p>
|
||
|
||
<h2>Making the shift</h2>
|
||
|
||
<p>In the course of introducing these new approaches in my own organization, I sometimes encounter pushback about how engaging in incident analysis distracts from getting "real" work done. I remind them that this is the real work. Engineering is knowledge work and requires continual learning. </p>
|
||
|
||
<p>Not only does engaging in incident analysis help people get better at their job as they learn more, but incident analysis is a form of knowledge creation. Ralph D. Stacey, an organizational theorist, helped me make the profound observation that simply filing away an incident report is not new knowledge: “From mainstream perspectives, knowledge is thought to be stored in individual heads, largely in tacit form, and it can only become the asset of an organization when it is extracted from those individual heads and stored in some artifact as explicit knowledge.” Incident write-ups do not become organizational knowledge until they are actually used: “Knowledge is the act of conversing and new knowledge is created when ways of talking, and therefore patterns of relationship, change. Knowledge, in this sense, cannot be stored.” [<a href="https://www.researchgate.net/publication/232992375_The_Emergence_of_Knowledge_in_Organization">4</a>] Knowledge is created when a group of people meet to discuss a well-crafted incident write-up. Knowledge is created when it is communicated broadly and reinforced through normalized behaviours.</p>
|
||
|
||
<p>Incidents cannot be prevented, because incidents are the inevitable result of success. Organizations that have the cultural elements to foster a Learn & Adapt mode to safety will embrace the desirable aspects of incidents. Incidents can lead to bridging new connections, engaging with fresh perspectives, surfacing risks, and creating new training material. </p>
|
||
|
||
<p>If you’re part of an organization that considers incidents avoidable, detestable, or disruptive, it’s likely that you’ll need to change more than just the retrospective process. Start small, mirror the behaviors that cultivate Learn & Adapt, and be patient. Before long, a sapling will emerge.</p>
|
||
|
||
<h2>References</h2>
|
||
|
||
<ol>
|
||
<li>Allspaw, J. (2020). <a href="http:// https://bit.ly/learning-not-fixing">How learning is different than fixing</a>. (Adaptive Capacity Labs blog.) (video). Accessed Oct. 20, 2020.</li>
|
||
<li>Daniels, R. (2019). <a href="https://www.infoq.com/articles/crafting-resilient-culture/">Crafting a Resilient Culture: Or, How to Survive an Accidental Mid-Day Production Incident</a>. (InfoQ: DevOps.). Accessed Dec 28, 2020.</li>
|
||
<li>Elman, A. (2019). <a href="https://www.learningfromincidents.io/blog/improving-incident-retrospectives-at-indeed">Improving Incident Retrospectives at Indeed</a>. (Learning from Incidents in Software blog.). Accessed Oct. 20, 2020. </li>
|
||
<li>Elman, A. (2020). Are We Getting Better Yet? Progress Toward Safer Operations. In USENIX Association SREcon Conference, USA.</li>
|
||
<li>Schemmel, M. (2019). Obligation vs Opportunity. (Internal Indeed Engineering blog.) Unavailable. Accessed Oct. 20, 2020.</li>
|
||
<li>Spadaccini, A. (2016). Being On-Call. In Site Reliability Engineering: How Google Runs Production Systems. Sebastopol, CA, USA: O'Reilly Media, Inc. First Edition, ch. 11, pp. 125-132.</li>
|
||
<li>Stacey, R. D. (2001). Mainstream Thinking about Knowledge Creation in Organizations. In Complex Responsive Processes in Organizations: Learning and knowledge creation. London, England, UK: Routledge.</li>
|
||
<li>Westrum, R. (2004). A typology of organisational cultures. In Quality & Safety in Health Care, 13, ii22-ii27. 10.1136/qshc.2003.009522</li>
|
||
<li>Woods, D. D. (2002). Steering the Reverberations of Technology Change on Fields of Practice: Laws that Govern Cognitive Work. In Proceedings of the Twenty-Fourth Annual Conference of the Cognitive Science Society. pp.14-16 10.4324/9781315782379-10.</li>
|
||
<li>Woods, D. D. (2017). <a href="http://stella.report/">STELLA: Report from the SNAFUcatchers Workshop on Coping With Complexity</a>. Columbus, OH: The Ohio State University.</li>
|
||
</ol>
|
||
|
||
<h2>About the Author</h2>
|
||
|
||
<p><strong><img _href="img://1alex-elman-1610042325375.jpg" alt="" data-src="articles/series-enhancing-resilience-2/en/resources/1alex-elman-1610042325375.jpg" style="margin: 10px; float: left; width: 85px; height: 100px;" src="https://imgopt.infoq.com/fit-in/3000x4000/filters:quality(85)/filters:no_upscale()/articles/series-enhancing-resilience-2/en/resources/1alex-elman-1610042325375.jpg" rel="share">Alex Elman</strong> has been helping Indeed cope with ever-increasing complexity and scale for the past nine years. He is a founding member of the Site Reliability Engineering team. Elman leads the Resilience Engineering team focused on learning from incidents, chaos engineering, and fault-tolerant design patterns.</p>
|
||
|
||
<p><small><em>To most software organizations,Covid-19 represents a fundamental surprise- a dramatic surprise that challenges basic assumptions and forces a revising of one’s beliefs (Lanir, 1986).</em></small></p>
|
||
|
||
<p><small><em>While many view this surprise as an outlier event to be endured, <a href="https://www.infoq.com/covid-resilience-article-series/">this series</a> uses the lens of Resilience Engineering to explore how software companies adapted (and continue to adapt), enhancing their resilience. By emphasizing strategies to sustain the capacity to adapt, this collection of articles seeks to more broadly inform how organizations cope with unexpected events. Drawing from the resilience literature and using case studies from their own organizations, engineers and engineering managers from across the industry will explore what resilience has meant to them and their organizations, and share the lessons they’ve taken away. </em></small></p>
|
||
|
||
<p><small><em>The first article starts by laying a foundation for thinking about organizational resilience, followed by a second article that looks at how to sustain resilience with a case study of how one service provider operating at scale has introduced programs to support learning and continual adaptation. Next, continuing with case examples, we will explore how to support frontline adaptation through socio-technical systems analysis before shifting gears to look more broadly at designing and resourcing for resilience. The capstone article will reflect on the themes generated across the series and provide guidance on lessons learned from sustained resilience.</em></small></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</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="Shifting Modes: Creating a Program to Support Sustained Resilience" id="cr_item_title"/>
|
||
|
||
<input type="hidden" name="" value="Alex Elman" id="cr_item_author"/>
|
||
|
||
<input type="hidden" name="" value="http://www.infoq.com/articles/series-enhancing-resilience-2/" 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="1610348400000" id="cr_item_published_time"/>
|
||
|
||
<input type="hidden" name="" value="2499" 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="6817" data-trk-ref="content_primary_topic">
|
||
<h4 class="heading related__heading">
|
||
|
||
|
||
|
||
This content is in the <a href='/culture-methods/'>Culture & Methods</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="6817">
|
||
<a href="/culture-methods/" class="button related__topic button__small button__black">Culture & Methods</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li data-id="18203">
|
||
<a href="/covid-resilience-article-series/" class="button related__topic button__small button__black">Covid Resilience Article Series</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li data-id="6243">
|
||
<a href="/Culture/" class="button related__topic button__small button__black">Culture</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li data-id="18057">
|
||
<a href="/COVID19/" class="button related__topic button__small button__black">COVID-19</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li data-id="40">
|
||
<a href="/stories/" class="button related__topic button__small button__black">Stories & Case Studies</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li data-id="17182">
|
||
<a href="/sre/" class="button related__topic button__small button__black">Site Reliability Engineering</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li data-id="5813">
|
||
<a href="/Reliability/" class="button related__topic button__small button__black">Reliability</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li data-id="5341">
|
||
<a href="/Learning/" class="button related__topic button__small button__black">learning</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li data-id="16293">
|
||
<a href="/incident-reponse/" class="button related__topic button__small button__black">Incident Response</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li data-id="446">
|
||
<a href="/Community/" class="button related__topic button__small button__black">Community</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li data-id="3">
|
||
<a href="/agile/" class="button related__topic button__small button__black">Agile</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": "culture-methods",
|
||
"topicIds": "6729,6600,1545,37,4910,2064,1736,5774",
|
||
"title": "Shifting Modes: Creating a Program to Support Sustained Resilience",
|
||
"contentPath": "/articles/series-enhancing-resilience-2",
|
||
"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="Culture & Methods";
|
||
//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/series-enhancing-resilience-2") !== -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/2026/09/netflix-flink-autoscaler/" class="rvc__link">
|
||
Netflix Moves toward Open Source Flink Autoscaler for 30,000+ Streaming Jobs
|
||
</a>
|
||
</h5>
|
||
</li>
|
||
|
||
<li>
|
||
<h5 class="rvc__title">
|
||
|
||
<a href="/news/2026/09/java-news-roundup-aug31-2026/" class="rvc__link">
|
||
Java News Roundup: TornadoVM 6, JReleaser, LangChain4j, Java Operator SDK, JHipster, Yupiik Fusion
|
||
</a>
|
||
</h5>
|
||
</li>
|
||
|
||
<li>
|
||
<h5 class="rvc__title">
|
||
|
||
<a href="/news/2026/09/google-mantis-vulnerability-scan/" class="rvc__link">
|
||
Google Mantis: an Agentic Vulnerability Scanning Harness for Reducing False Positives
|
||
</a>
|
||
</h5>
|
||
</li>
|
||
|
||
<li>
|
||
<h5 class="rvc__title">
|
||
|
||
<a href="/news/2026/09/blume-docs-ai/" class="rvc__link">
|
||
Blume: Zero-Config Docs Framework That Turns a Markdown Folder into an AI-Ready Website
|
||
</a>
|
||
</h5>
|
||
</li>
|
||
|
||
<li>
|
||
<h5 class="rvc__title">
|
||
|
||
<a href="/news/2026/09/cern-debian-infra/" class="rvc__link">
|
||
CERN Renounces RHEL in Favor of Debian for its Accelerator Controls Infrastructure
|
||
</a>
|
||
</h5>
|
||
</li>
|
||
|
||
<li>
|
||
<h5 class="rvc__title">
|
||
|
||
<a href="/podcasts/personality-over-skillset/" class="rvc__link">
|
||
Personality Over Skillset: How Adam Wachtel Builds Engineering Teams
|
||
</a>
|
||
</h5>
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
<div class="article__more f_article_rightbar" data-col="2/6">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script type="text/javascript">
|
||
window.finishedRightbarVcr = false;
|
||
|
||
var _gaq = _gaq || [];
|
||
var recomJson ="[{"imageStoragePath":null,"topicsIds":null,"date":1787225100000,"url":"/news/2026/08/code-AI-write-only-disposable","title":"How Code in the Age of Artificial Intelligence Becomes Write-Only and Disposable","authorsList":["Ben Linders"],"itemPath":"/news/2026/08/code-AI-write-only-disposable","score":16,"contentType":"news"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/rightsizing-platform-engineering/en/smallimage/rightsizing-platform-engineering-thumbnail-1787296955801.jpg","topicsIds":null,"date":1787569200000,"url":"/articles/rightsizing-platform-engineering","title":"Rightsizing Platform Engineering: Building the Platform Your Organization Actually Needs","authorsList":["John Keates"],"itemPath":"/articles/rightsizing-platform-engineering","score":14,"contentType":"articles"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/panel-positive-culture/en/smallimage/ln-500x500-1775048593311.jpg","topicsIds":null,"date":1776852600000,"url":"/presentations/panel-positive-culture","title":"Panel: Building a Culture that Works","authorsList":["Nicky Wrightson","Suhail Patel","Lesley Cordero","Matthew Card","Natan Žabkar Nordberg"],"itemPath":"/presentations/panel-positive-culture","score":10,"contentType":"presentations"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/culture-systems-teams-careers/en/smallimage/thumbnail-shawna-dan-1774442937059.jpg","topicsIds":null,"date":1774965480000,"url":"/presentations/culture-systems-teams-careers","title":"Hidden Decisions You Don’t Know You’re Making","authorsList":["Shawna Martell","Dan Fike"],"itemPath":"/presentations/culture-systems-teams-careers","score":10,"contentType":"presentations"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/adopting-swiftui-at-scale/en/smallimage/swiftui-at-consumer-scale-lessons-from-adopting-it-with-50-million-users-thumb-1773911055159.jpg","topicsIds":null,"date":1774342800000,"url":"/articles/adopting-swiftui-at-scale","title":"Lessons from Adopting SwiftUI in an App with 50 Million Users","authorsList":["Jimit Patel"],"itemPath":"/articles/adopting-swiftui-at-scale","score":10,"contentType":"articles"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/chaos-engineering-ecs-payments/en/smallimage/chaos-engineering-ecs-payments-thumbnail-1788254676411.jpg","topicsIds":null,"date":1788858000000,"url":"/articles/chaos-engineering-ecs-payments","title":"Implementing Chaos Engineering in Financial Payment Systems: Lessons from Enterprise ECS Deployments","authorsList":["Salim Adedeji"],"itemPath":"/articles/chaos-engineering-ecs-payments","score":3,"contentType":"articles"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/claude-sre-incidents/en/smallimage/alex-palcuie-thumbnail-1786539336984.jpg","topicsIds":null,"date":1787742000000,"url":"/presentations/claude-sre-incidents","title":"Can Claude Fix Itself? Using LLMs for Incident Response","authorsList":["Alex Palcuie"],"itemPath":"/presentations/claude-sre-incidents","score":3,"contentType":"presentations"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/ai-sre-incident-response/en/smallimage/infoq-live-thumbnail-1777368469045.jpg","topicsIds":null,"date":1777375260000,"url":"/presentations/ai-sre-incident-response","title":"AI-Powered SRE for Autonomous Incident Response","authorsList":["Rohit Dhawan","Pavan Madduri","Alina Astapovich","Goutham Rao","Renato Losio"],"itemPath":"/presentations/ai-sre-incident-response","score":2,"contentType":"presentations"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/outage-lessons/en/smallimage/molly-struve-thumbnail-1776864399990.jpeg","topicsIds":null,"date":1777371180000,"url":"/presentations/outage-lessons","title":"Week-Long Outage: Lifelong Lessons","authorsList":["Molly Struve"],"itemPath":"/presentations/outage-lessons","score":2,"contentType":"presentations"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/sovereign-fault-domains-cloud-resilience/en/smallimage/sovereign-fault-domains-cloud-resilience-thumbnail-1776430533702.jpg","topicsIds":null,"date":1776848400000,"url":"/articles/sovereign-fault-domains-cloud-resilience","title":"When a Cloud Region Fails: Rethinking High Availability in a Geopolitically Unstable World","authorsList":["Rohan Vardhan"],"itemPath":"/articles/sovereign-fault-domains-cloud-resilience","score":2,"contentType":"articles"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/ai-agent-testing-evaluation/en/smallimage/zhou-yu-thumbnail-1787813732120.jpeg","topicsIds":null,"date":1788778800000,"url":"/presentations/ai-agent-testing-evaluation","title":"From AI Agent Demo to Production: Automated Testing and Evaluation","authorsList":["Zhou Yu"],"itemPath":"/presentations/ai-agent-testing-evaluation","score":1,"contentType":"presentations"},{"imageStoragePath":null,"topicsIds":null,"date":1788775740000,"url":"/news/2026/09/apim-standard-v2-zone-redundancy","title":"Zone Redundancy Comes to API Management Standard v2","authorsList":["Steef-Jan Wiggers"],"itemPath":"/news/2026/09/apim-standard-v2-zone-redundancy","score":1,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1787313600000,"url":"/news/2026/08/cloudflare-ai-enforcement","title":"Cloudflare Turns Engineering Standards into an AI-Enforced Control System","authorsList":["Craig Risi"],"itemPath":"/news/2026/08/cloudflare-ai-enforcement","score":1,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1786708800000,"url":"/news/2026/08/incidents-reliability-metrics","title":"More Incidents Don't Necessarily Mean Less Reliability","authorsList":["Craig Risi"],"itemPath":"/news/2026/08/incidents-reliability-metrics","score":1,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1786620480000,"url":"/news/2026/08/AI-disrupts-engineering-progress","title":"How Artificial Intelligence Disrupts Engineering Progression","authorsList":["Ben Linders"],"itemPath":"/news/2026/08/AI-disrupts-engineering-progress","score":1,"contentType":"news"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/reliable-ai-platforms/en/smallimage/aaron-erickson-thumbnail-1782819611516.jpeg","topicsIds":null,"date":1783411380000,"url":"/presentations/reliable-ai-platforms","title":"Designing AI Platforms for Reliability: Tools for Certainty, Agents for Discovery","authorsList":["Aaron Erickson"],"itemPath":"/presentations/reliable-ai-platforms","score":1,"contentType":"presentations"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/rust-autonomous-mobile-robots/en/smallimage/andy-brinkmeyer-thumbnail-1782817486635.jpeg","topicsIds":null,"date":1783328460000,"url":"/presentations/rust-autonomous-mobile-robots","title":"Practical Robustness: Going beyond Memory Safety in Rust","authorsList":["Andy Brinkmeyer"],"itemPath":"/presentations/rust-autonomous-mobile-robots","score":1,"contentType":"presentations"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/incident-dns/en/smallimage/sean-klein-thumbnail-1781687984845.jpeg","topicsIds":null,"date":1782219900000,"url":"/presentations/incident-dns","title":"The Time it Wasn't DNS","authorsList":["Sean Klein"],"itemPath":"/presentations/incident-dns","score":1,"contentType":"presentations"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/architecting-deletion-system/en/smallimage/thumbnail-1779869686290.jpg","topicsIds":null,"date":1780568760000,"url":"/presentations/architecting-deletion-system","title":"Architecting a Centralized Platform for Data Deletion at Netflix","authorsList":["Vidhya Arvind","Shawn Liu"],"itemPath":"/presentations/architecting-deletion-system","score":1,"contentType":"presentations"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/incident-response-mitigate/en/smallimage/kyle-lexmond-thumbnail-1779869148329.jpg","topicsIds":null,"date":1780404600000,"url":"/presentations/incident-response-mitigate","title":"The Human Toll of Incidents & Ways to Mitigate it","authorsList":["Kyle Lexmond"],"itemPath":"/presentations/incident-response-mitigate","score":1,"contentType":"presentations"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/ai-platforms-reliability/en/smallimage/thumbnail-1779182751443.jpg","topicsIds":null,"date":1779872640000,"url":"/presentations/ai-platforms-reliability","title":"Designing AI Platforms for Reliability: Tools for Certainty, Agents for Discovery","authorsList":["Aaron Erickson"],"itemPath":"/presentations/ai-platforms-reliability","score":1,"contentType":"presentations"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/automation-incidents-ai/en/smallimage/thumbnail-1778662652640.jpg","topicsIds":null,"date":1779368100000,"url":"/presentations/automation-incidents-ai","title":"The Ironies of A^2 I^2","authorsList":["J. Paul Reed"],"itemPath":"/presentations/automation-incidents-ai","score":1,"contentType":"presentations"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/platform-reliability-cycle/en/smallimage/platform-reliability-cycle-thumbnail-1777467114542.jpg","topicsIds":null,"date":1777971600000,"url":"/articles/platform-reliability-cycle","title":"Three Pillars of Platform Engineering: a Virtuous Cycle","authorsList":["Pratik Agarwal"],"itemPath":"/articles/platform-reliability-cycle","score":1,"contentType":"articles"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/configuration-control-plane/en/smallimage/configuration-as-a-control-plane-designing-for-safety-and-reliability-at-scale-thumb-1773657574566.jpg","topicsIds":null,"date":1773997200000,"url":"/articles/configuration-control-plane","title":"Configuration as a Control Plane: Designing for Safety and Reliability at Scale","authorsList":["Karthiek Maralla"],"itemPath":"/articles/configuration-control-plane","score":1,"contentType":"articles"},{"imageStoragePath":null,"topicsIds":null,"date":1789138800000,"url":"/news/2026/09/nvidia-pair-ai-task-router","title":"NVIDIA Personal AI Router Distributes AI Tasks across Local Compute","authorsList":["Sergio De Simone"],"itemPath":"/news/2026/09/nvidia-pair-ai-task-router","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1789136220000,"url":"/news/2026/09/netflix-conductor-4-workflow","title":"Netflix Reworks Conductor for 420 Million Monthly Workflow Executions and 10X Larger Workflows","authorsList":["Leela Kumili"],"itemPath":"/news/2026/09/netflix-conductor-4-workflow","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1789128120000,"url":"/news/2026/09/tsgolint-oxlint-typescript","title":"tsgolint Reaches Stable v7, Bringing Go-Powered Type-Aware Linting to Oxlint","authorsList":["Daniel Curtis"],"itemPath":"/news/2026/09/tsgolint-oxlint-typescript","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1789128000000,"url":"/news/2026/09/terraform-aws-provider-6-62","title":"Terraform AWS Provider Continues Rapid Expansion as AWS Infrastructure Becomes More Complex","authorsList":["Craig Risi"],"itemPath":"/news/2026/09/terraform-aws-provider-6-62","score":0,"contentType":"news"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/form3-multicloud-architecture/en/smallimage/ross-mcfarlane-kevin-holditch-thumbnail-1788338652847.jpg","topicsIds":null,"date":1789124400000,"url":"/presentations/form3-multicloud-architecture","title":"How To Run on Three Clouds at Once, and When Not To","authorsList":["Ross McFarlane","Kevin Holditch"],"itemPath":"/presentations/form3-multicloud-architecture","score":0,"contentType":"presentations"},{"imageStoragePath":null,"topicsIds":null,"date":1789120800000,"url":"/news/2026/09/linkedin-ai-multi-teacher","title":"How LinkedIn Trains AI Job Search 8x Faster with Multi-Teacher Distillation","authorsList":["Claudio Masolo"],"itemPath":"/news/2026/09/linkedin-ai-multi-teacher","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1789114440000,"url":"/news/2026/09/observability-ai-agents","title":"Session Traces and Cost Controls Help Diagnose AI Agent Failures","authorsList":["Mark Silvester"],"itemPath":"/news/2026/09/observability-ai-agents","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1789103100000,"url":"/news/2026/09/tinygo-devkit","title":"Advancing Embedded Go: Recoverable Panics, UEFI, Radio and Hardware Dev Kit","authorsList":["Olimpiu Pop"],"itemPath":"/news/2026/09/tinygo-devkit","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1789062540000,"url":"/news/2026/09/openai-gpt6-astra","title":"OpenAI Releases GPT-6 Astra for Coding and Computer Use","authorsList":["Daniel Dominguez"],"itemPath":"/news/2026/09/openai-gpt6-astra","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1789036140000,"url":"/news/2026/09/autonomous-software-teams","title":"Beyond Autonomous Teams in Software Product Development","authorsList":["Ben Linders"],"itemPath":"/news/2026/09/autonomous-software-teams","score":0,"contentType":"news"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/rust-refactoring/en/smallimage/lily-mara-thumbnail-1788338447565.jpeg","topicsIds":null,"date":1789032840000,"url":"/presentations/rust-refactoring","title":"Accelerating Performance by Incrementally Integrating Rust Into Existing Codebase","authorsList":["Lily Mara"],"itemPath":"/presentations/rust-refactoring","score":0,"contentType":"presentations"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/when-spec-driven-development-pays-off/en/smallimage/When-Spec-Driven-Development-Pays-Off-thumb-1788790605567.jpg","topicsIds":null,"date":1789030800000,"url":"/articles/when-spec-driven-development-pays-off","title":"When Spec-Driven Development Pays Off","authorsList":["Nitin Garg"],"itemPath":"/articles/when-spec-driven-development-pays-off","score":0,"contentType":"articles"},{"imageStoragePath":null,"topicsIds":null,"date":1789021620000,"url":"/news/2026/09/http-query-method","title":"IETF Publishes RFC 10008, Adding the QUERY Method for Safe Requests with a Body","authorsList":["Daniel Curtis"],"itemPath":"/news/2026/09/http-query-method","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1789016700000,"url":"/news/2026/09/riscv-cpython","title":"CPython Officially Adds RISC-V Support as a Tier 3 Platform","authorsList":["Olimpiu Pop"],"itemPath":"/news/2026/09/riscv-cpython","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1788976800000,"url":"/news/2026/09/meta-organizational-agents","title":"Meta's Recipe for Building Agents as \\\"Organizational Second Brains\\\"","authorsList":["Sergio De Simone"],"itemPath":"/news/2026/09/meta-organizational-agents","score":0,"contentType":"news"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/unikraft-microvm-sandboxes-cloud-scaling/en/smallimage/felipe-huici-thumbnail-1787813506607.jpg","topicsIds":null,"date":1788951600000,"url":"/presentations/unikraft-microvm-sandboxes-cloud-scaling","title":"Fixing the AI Infra Scale Problem by Stuffing 1M Sandboxes in a Single Server","authorsList":["Felipe Huici"],"itemPath":"/presentations/unikraft-microvm-sandboxes-cloud-scaling","score":0,"contentType":"presentations"}]";
|
||
var whitepaperVcrsJson = null;
|
||
var topicSponsorshipJson = "{"iconLink":"/url/f/275bd2db-c560-460d-a765-5c023beacb5d/","iconHref":"https://imgopt.infoq.com//fit-in/275x500/filters:quality(100)/filters:no_upscale()/sponsorship/topic/df5f1bb5-de51-4d94-b2fd-530d26d04f55/HarnessWebinarSept17-RSB-1786634005234.png","id":"e1920ef2-9c1a-4799-a1fc-f86c24413a01"}";
|
||
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 Sponsors';
|
||
JSi18n.relatedRightbar_sponsoredBy='Sponsored by';
|
||
|
||
var topicIds = "6729,2064,6600,37,5774,1736,1545,4910,442,3";
|
||
var communityIds = "2499";
|
||
var company = "Harness";
|
||
|
||
|
||
// 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="rNtXcLKmTPpTEcHR"/>
|
||
<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 = "Shifting Modes: Creating a Program to Support Sustained Resilience",
|
||
contentPath = "/articles/series-enhancing-resilience-2",
|
||
contentUUID = "f2c02773-7941-4899-bc98-bdf8a32b5ec3",
|
||
authorUserCSVIds = "126550352";
|
||
</script>
|
||
|
||
<script src="https://cdn.infoq.com/statics_s2_20260910111657/scripts/prism-build.js"></script>
|
||
<script src="https://cdn.infoq.com/statics_s2_20260910111657/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="/news/2026/09/tinygo-devkit/" title="Advancing Embedded Go: Recoverable Panics, UEFI, Radio and Hardware Dev Kit">Advancing Embedded Go: Recoverable Panics, UEFI, Radio and Hardware Dev Kit</a></h5>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/riscv-cpython/" title="CPython Officially Adds RISC-V Support as a Tier 3 Platform">CPython Officially Adds RISC-V Support as a Tier 3 Platform</a></h5>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/async-lua-neovim/" title="vim.async's Addition Modernizes Neovim&rsquo;s Async Architecture for Better Stability">vim.async's Addition Modernizes Neovim’s Async Architecture for Better Stability</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="/news/2026/09/netflix-conductor-4-workflow/" title="Netflix Reworks Conductor for 420 Million Monthly Workflow Executions and 10X Larger Workflows">Netflix Reworks Conductor for 420 Million Monthly Workflow Executions and 10X Larger Workflows</a></h5>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/meta-organizational-agents/" title="Meta's Recipe for Building Agents as &quot;Organizational Second Brains&quot;">Meta's Recipe for Building Agents as "Organizational Second Brains"</a></h5>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/netflix-flink-autoscaler/" title="Netflix Moves toward Open Source Flink Autoscaler for 30,000+ Streaming Jobs">Netflix Moves toward Open Source Flink Autoscaler for 30,000+ Streaming Jobs</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="/news/2026/09/autonomous-software-teams/" title="Beyond Autonomous Teams in Software Product Development">Beyond Autonomous Teams in Software Product Development</a></h5>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/presentations/rust-refactoring/" title="Accelerating Performance by Incrementally Integrating Rust Into Existing Codebase">Accelerating Performance by Incrementally Integrating Rust Into Existing Codebase</a></h5>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/podcasts/personality-over-skillset/" title="Personality Over Skillset: How Adam Wachtel Builds Engineering Teams">Personality Over Skillset: How Adam Wachtel Builds Engineering Teams</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/2026/09/nvidia-pair-ai-task-router/" title="NVIDIA Personal AI Router Distributes AI Tasks across Local Compute">NVIDIA Personal AI Router Distributes AI Tasks across Local Compute</a></h5>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/linkedin-ai-multi-teacher/" title="How LinkedIn Trains AI Job Search 8x Faster with Multi-Teacher Distillation">How LinkedIn Trains AI Job Search 8x Faster with Multi-Teacher Distillation</a></h5>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/openai-gpt6-astra/" title="OpenAI Releases GPT-6 Astra for Coding and Computer Use">OpenAI Releases GPT-6 Astra for Coding and Computer Use</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/2026/09/terraform-aws-provider-6-62/" title="Terraform AWS Provider Continues Rapid Expansion as AWS Infrastructure Becomes More Complex">Terraform AWS Provider Continues Rapid Expansion as AWS Infrastructure Becomes More Complex</a></h5>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/observability-ai-agents/" title="Session Traces and Cost Controls Help Diagnose AI Agent Failures">Session Traces and Cost Controls Help Diagnose AI Agent Failures</a></h5>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/hashicorp-packer-verification/" title="HashiCorp Packer 1.16 Adds Native SLSA Provenance Generation and Verification for Machine Images">HashiCorp Packer 1.16 Adds Native SLSA Provenance Generation and Verification for Machine Images</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="rNtXcLKmTPpTEcHR"/>
|
||
<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="certification" class="event__container" style="padding-right: 20px;">
|
||
<a href="https://certification.qconferences.com/?utm_source=infoq&utm_medium=referral&utm_campaign=largefooterad_onlinecohorts26" target="_blank" class="qconplus__events-slider" style="">
|
||
<div>
|
||
<div class="logo-certification"></div>
|
||
</div>
|
||
<p class="intro" style="margin-bottom: 0;color: white !important;">
|
||
<b>InfoQ Online Certification Programs</b>
|
||
<br>For Senior Engineers, Architects, and Technical Leaders
|
||
</p>
|
||
<ul style="margin-bottom: 0;">
|
||
<li style="color: white !important;"><b>Architect</b> with Luca Mezzalira | September 14</li>
|
||
<li style="color: white !important;"><b>Engineering Leadership</b> with Michelle Brush | September 18</li>
|
||
<li style="color: white !important;"><b>AI-Assisted Engineering</b> with Zichuan Xiong & Premanand Chandrasekaran | September 18</li>
|
||
<li style="color: white !important;"><b>AI Security & Privacy Engineering</b> with Katharine Jarmul | October 14</li>
|
||
</ul>
|
||
<br>
|
||
<p class="intro" style="margin-bottom: 0;color: white !important;">As your role becomes more senior, the work changes. You're no longer just implementing decisions; you're shaping the systems, trade-offs, and technical direction other teams depend on.<br>These 5-week online programs give you a structured way to work through real decisions from your current role with senior peers from other companies.</p>
|
||
<strong class="button button__green cta__button">RESERVE YOUR PLACE</strong>
|
||
<small style="color: white;"><br>Live online. 4 hours a week, for 5 weeks.</small>
|
||
</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="Log In" class="login" data-ref="mainLogin">Log In</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="https://c4media.com/" target="_blank" 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://certification.qconferences.com/architecture?utm_source=infoq&utm_medium=referral&utm_campaign=footer_onlinecohortarchitecture26" target="_blank">Online InfoQ Architect Certification</a>
|
||
</h5>
|
||
<span class="meta date">September 14, 2026</span>
|
||
</div>
|
||
</li>
|
||
<li><span class="icon event__type conference"></span>
|
||
<div class="qcon__detail">
|
||
<h5 class="heading">
|
||
<a rel="noreferrer noopener" href="https://certification.qconferences.com/ai-assisted-engineering?utm_source=infoq&utm_medium=referral&utm_campaign=footer_onlinecohortaiassistedengineering26" target="_blank">Online InfoQ AI-Assisted Engineering Certification</a>
|
||
</h5>
|
||
<span class="meta date">September 18, 2026</span>
|
||
</div>
|
||
</li>
|
||
<li><span class="icon event__type conference"></span>
|
||
<div class="qcon__detail">
|
||
<h5 class="heading">
|
||
<a rel="noreferrer noopener" href="https://certification.qconferences.com/ai-security-privacy?utm_source=infoq&utm_medium=referral&utm_campaign=footer_onlinecohortaisecurity26" target="_blank">Online InfoQ AI Security & Privacy Engineering Program</a>
|
||
</h5>
|
||
<span class="meta date">October 14, 2026</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_qsf26" target="_blank">QCon San Francisco</a>
|
||
</h5>
|
||
<span class="meta date">November 16-20, 2026</span>
|
||
</div>
|
||
</li>
|
||
<li><span class="icon event__type conference"></span>
|
||
<div class="qcon__detail">
|
||
<h5 class="heading">
|
||
<a rel="noreferrer noopener" href="https://newyork.qcon.ai/?utm_source=infoq&utm_medium=referral&utm_campaign=footer_qainy26" target="_blank">QCon AI New York</a>
|
||
</h5>
|
||
<span class="meta date">December 15-16, 2026</span>
|
||
</div>
|
||
</li>
|
||
<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_qlondon27" target="_blank">QCon London 2027</a>
|
||
</h5>
|
||
<span class="meta date">April 13-16, 2027</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">232K 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">26K Followers</span></div></a>
|
||
<a rel="noreferrer noopener" href="https://www.instagram.com/infoqdotcom/" target="_blank"><span class="icon icon__large icon__social icon__instagram"></span><div><span class="social__count">Instagram</span><span class="social__followers">New</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">57.1k 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>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</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-2026 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=rNtXcLKmTPpTEcHR&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 = "Shifting Modes: Creating a Program to Support Sustained Resilience";
|
||
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_s2_20260910111657/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>
|
||
</body>
|
||
</html>
|
||
<!-- s2 -->
|