Надвор од брзината: Архитектирање за одржливост на производот
Брзата испорака лесно се слави. Изданието се објавува, контролната табла станува зелена, а патоказот напредува. Но производите ретко пропаѓаат затоа што тимот не можел брзо да испорачува еден квартал. Пропаѓаат кога брзината станува единствената дефиниција за напредок, а трошокот за одржување на моментумот тивко се натрупува.
Одржливоста на производот е способноста да продолжи да испорачува корисни резултати без да ги исцрпува луѓето, архитектурата и системите за донесување одлуки што ја овозможуваат испораката. Тоа не е аргумент за бавно движење. Тоа е аргумент за градење темпо што може да издржи успех, неизвесност, промена на кадар, променливи потреби на клиентите и неизбежното натрупување на сложеност.
Брзината е резултат, а не стратегија
Брзината може да биде корисен локален сигнал. Тим што не може предвидливо да ја заврши работата има проблем што вреди да се разбере. Но само брзината не ни кажува дали работата била важна, дали системот станал полесен за менување или дали тимот создава иден ризик.
Функционалност може брзо да се испорача, а притоа да воведе нејасна граница на сопственост, кревка интеграција или товар за поддршката што ќе ги потроши следните шест месеци. Тим може да затвори многу тикети, а да ги избегнува неколкуте одлуки што би ја поедноставиле идната работа. Измерениот резултат може да изгледа здраво, додека производот станува сè потежок за управување.
Затоа техничките лидери треба да поставуваат поширок сет прашања:
- Дали ова издание реши проблем на клиентите доволно јасно за да се измери?
- Дали друг инженер може да ја разбере и безбедно да ја измени оваа област од производот?
- Кој ги поседува оперативните последици по лансирањето?
- Што научивме што треба да ја промени следната одлука?
- Дали нашето тековно темпо може повторно да се постигне следниот квартал без скриени херојски напори?
Целта не е да се заменат метриките за испорака со бескрајно размислување. Таа е да се поврзе испораката со трајноста.
Дизајнирајте за втората промена
Првата имплементација често е едноставна. Откривачкиот момент доаѓа кога барањето се менува: на нов сегмент клиенти му се потребни различни дозволи, работниот тек мора да поддржи друг регион или интеграцијата со партнер се однесува поинаку во продукција.
Архитектурата за одржливост значи да се предвиди таа промена без да се конструира сложена апстракција за секоја хипотетичка иднина. Корисното прашање не е: „Како можеме ова да го направиме бескрајно флексибилно?“ Туку: „Која промена е најверојатна следна и дали овој дизајн ќе ни дозволи безбедно да ја направиме?“
Разгледајте производ што испраќа известувања за сметки. Брзата прва верзија може да ги смести шаблоните за пораки, изборот на примачи и логиката за испорака во еден метод на услуга. Тоа функционира сè додека на производот не му затребаат потсетници, преференции, повеќе канали или историја на ревизија. Поодржлив дизајн може и натаму да почне мал, но на овие грижи им дава видливи граници: барање за известување, проверка на преференции, адаптер за испорака и запис за настан. На системот не му треба грандиозна платформа. Му требаат споеви каде што е веројатно да се случи вистинска промена.
Ова важи и надвор од кодот. И одлуките за производот имаат потреба од обратливи граници. Тесен пилот, ознака за функционалност или јасно ограничено пуштање во употреба можат да создадат простор за учење пред одлуката да стане скапа за поништување. Обратливоста е една од најпрактичните форми на управување со ризик.
Направете ја сопственоста видлива
„Тимот го поседува тоа“ често значи дека никој не може да одговори на основно прашање за време на инцидент: кој одлучува што ќе се случи понатаму?
Сопственоста не значи доделување вина или создавање чувари на порти. Таа значи одговорностите да бидат разбирливи. Одржливиот производ има јасен одговор за тоа кој одржува услуга, кој одобрува промени во критичен работен тек, кој одговара на неуспеси што влијаат врз клиентите и кој одлучува кога некоја компонента треба да се повлече.
Во пракса, сопственоста станува видлива преку мали навики:
- Документирајте ја целта, зависностите и оперативните очекувања на важните системи.
- Водете записи за одлуките што инаку би се откривале повторно преку состаноци или археологија.
- Вклучете оперативна подготвеност во дефиницијата за завршено: мониторинг, насоки за поддршка, размислување за враќање назад и одговорни сопственици.
- Намерно прегледувајте ги занемарените области наместо да чекате прекин да ги разоткрие.
Производот не е завршен кога кодот се спои. Тој станува реален кога корисниците зависат од него, тимовите за поддршка се среќаваат со него и идните инженери го наследуваат.
На далечинските тимови им е потребен намерен контекст
Дистрибуираната работа ја прави одржливата испорака и понеопходна и потешка. Неформалниот контекст не се шири толку сигурно кога луѓето работат низ различни распореди, локации и временски зони. Одлука донесена во брз повик може да стане невидлива за лицето што утре треба да ги имплементира нејзините последици.
Одговорот не е секоја дискусија да се претвори во долг документ. Тој е да се избере соодветна пишана трага за работата со значајни последици. Кратка белешка за дизајнот може да ги наведе проблемот, ограничувањата, разгледаните опции, одлуката и отворените ризици. Белешка за издание може да објасни што се променило и како да се реагира ако не успее. Кратко асинхроно ажурирање може да спречи состанок за статус, а притоа да го зачува контекстот за луѓето што не биле присутни.
Добрата комуникација на далечина ја намалува зависноста од достапноста. Таа им помага на луѓето да придонесуваат без да мораат да ја реконструираат намерата од фрагменти од разговори. Тоа е особено важно за развојот на програмерите: инженерите побрзо развиваат расудување кога можат да видат како одлуките биле поставени, оспорени и ревидирани.
Заштитете капацитет за одржување и учење
Секој производ има работа за одржување, без разлика дали е така именувана или не. Зависностите се развиваат, се појавуваат празнини во набљудливоста, се натрупуваат гранични случаи, а работните текови што имале смисла при лансирањето стануваат збунувачки како што се менува бизнисот. Игнорирањето на оваа работа не ја отстранува од планот; само ја претвора во прекини, испади и сè попретпазлива испорака.
Одржливите тимови резервираат внимание за подобрување на системот додека го користат. Тоа може да значи поедноставување проблематичен работен тек откако ќе се појават обрасци во поддршката, бришење застарена патека, зајакнување на тестовите околу интеграција со висок ризик или правење на опоравувањето при распоредување попредвидливо.
Важната разлика е меѓу работа на подобрување поврзана со вистински ризик за производот и нејасно „чистење“. Техничкиот долг е најкорисен како опис на компромис, а не како општа ознака за сè. Објаснете ја последицата: побавно воведување нови луѓе, повторлив начин на неуспех во продукција, неможност безбедно да се менува ценовникот или компонента без јасен сопственик. Конкретните последици овозможуваат поставување приоритети.
Одржливото темпо е предност на производот
Тимовите што се потпираат на трајна итност може извесно време да изгледаат исклучително. На крајот, квалитетот опаѓа, одлуките се стеснуваат, а искусните луѓе трошат повеќе енергија компензаирајќи за системот отколку подобрувајќи го. Тогаш организацијата ја меша исцрпеноста со посветеноста и го третира оттурнувањето што може да се спречи како цена на амбицијата.
Одржливо темпо не значи пониски стандарди. Тоа значи дека работата може да се заврши со доволно јасност, опоравување и внимание, така што следното парче работа ќе биде подобро наместо потешко. Тоа значи дека инцидентите создаваат подобрувања, а не само извинувања. Тоа значи дека е дозволено патоказот да се менува кога се менуваат доказите.
Најтрајните производи не ги градат тимови што никогаш не чувствуваат притисок. Ги градат тимови што одбиваат да дозволат притисокот да стане нивен оперативен модел. Надвор од брзината лежи позахтевна мерка за успех: дали производот, архитектурата и луѓето одговорни за двете се посилни по секое значајно издание.