Бизнис

Ownership Beyond Features: Architecting Products That Last

Сопственост надвор од функциите: Архитектирање производи што траат

Многу производи пропаѓаат многу пред да им снема идеи. Тие пропаѓаат кога луѓето што ги градат го третираат испорачувањето како низа барања за функции, наместо како систем на одговорности.

Една функција може да биде испорачана, демонстрирана и прославена, а сепак зад себе да остави нејасно однесување, кревок код, недостасувачка документација и никој што се чувствува одговорен за она што следува. Сопственоста е она што го затвора тој јаз. Таа е дисциплина на грижа за производот откако pull request-от е споен.

За техничките лидери, ова е важно бидејќи трајните производи ретко се создаваат со херојски напор. Тие ги создаваат тимови што постојано носат добри одлуки: под притисок, низ временски зони и со нецелосни информации.

Сопственоста е поширока од имплементацијата

Лесно е сопственоста да се дефинира премногу тесно: „Јас ја изградив услугата“, „Јас ја напишав компонентата“ или „Јас го завршив тикетот“. Тие изјави опишуваат придонес, а не сопственост.

Сопственоста поставува поинакви прашања. Дали функцијата го решава наменетиот проблем? Може ли колега да ја разбере и безбедно да ја измени? Што се случува кога некоја зависност е недостапна? Како корисниците ќе знаат што да направат кога нешто ќе тргне наопаку? Дали постои јасна личност или тим одговорен за исходот?

На пример, развивач што е сопственик на тек за плаќања не застанува кај интерфејсот за успешниот тек. Тој ги разгледува валидацијата, дуплираните поднесувања, пораките за грешка, набљудливоста, предавањето на поддршката и ефектот од повторните обиди. Не мора лично да ја изврши секоја задача, но се грижи важните задачи да бидат видливи и да имаат сопственик.

Оваа разлика го менува квалитетот на разговорите. Наместо да прашуваат: „Дали е готово?“, тимовите прашуваат: „Дали е безбедно за користење, разбирливо за поддршка и вредно во реалниот работен процес?“

Градете за следната одлука

Софтверот има долг живот исполнет со мали одлуки по првото издание. Некој ќе треба да приспособи правило, да истражи инцидент, да воведе нов колега или да објасни зошто е направен одреден компромис. Архитектурата на производот треба да ги олесни тие идни одлуки.

Тоа не значи дизајнирање разработена рамка за секоја можна иднина. Прекумерното инженерство често е уште една форма на избегнување. Целта е да се зачуваат опциите таму каде што промената е веројатна и експлицитно да се наведат ограничувањата таму каде што промената би била скапа.

Направете ја намерата видлива

Кодот треба да пренесува повеќе од механика. Имињата, границите, тестовите и концизната документација треба да откриваат зошто постои некое правило. Функција наречена applyDiscount кажува малку ако тивко ги меша подобноста, даночниот третман и исклучоците специфични за сметката. Раздвојувањето на тие аспекти ги прави идните промени побезбедни, бидејќи деловните правила имаат свое место.

Истиот принцип важи и надвор од кодот. Краток запис за одлука може да спречи недели на повторно откривање. Не мора да биде формален или долг. Треба да одговори што е одлучено, зошто е одлучено, кои алтернативи биле разгледани и кои претпоставки би довеле до преиспитување на одлуката.

Дизајнирајте за неуспех пред да стане итен

Доверливите производи не претпоставуваат дека секое барање успева. Тие дефинираат што треба да направи системот кога мрежен повик ќе истече, задача во заднина ќе се изврши двапати, интеграција ќе испрати нецелосни податоци или корисник ќе освежи во незгоден момент.

На пример, задача што создава фактури може повторно да се обиде по неизвесен неуспех. Ако не е дизајнирана да биде идемпотентна, повторниот обид може да создаде дупликат фактури. Мала архитектонска одлука — користење стабилен клуч за операцијата и проверка дали работата веќе е завршена — може да спречи скап оперативен проблем.

Справувањето со неуспеси е работа на производот, а не работа за расчистување. Корисниците директно го доживуваат, а тимовите за поддршка веднаш го преземаат.

Претворете го продуктното размислување во навика за испорака

Продуктното размислување не е резервирано за продукт менаџери. Тоа е способност да се поврзе техничка промена со потреба на корисник, деловно ограничување и мерлив исход. Развивачите го зајакнуваат со вклучување во контекстот зад барањето пред да одлучат за решението.

Кога тикетот вели „додади извоз“, корисни прашања вклучуваат: Кому му е потребен извозот? Која одлука ќе ја поддржи? Колку голем може да стане сетот на податоци? Дали е соодветно синхроно преземање? Кои дозволи важат? Дали на корисникот му е потребен целосен историски запис или филтриран приказ?

Тие прашања често откриваат дека привидната функција е само едно можно решение. Можеби закажан извештај е покорисен од преземање. Можеби вистинската потреба е следливост, што бара приказ за ревизија наместо табеларна пресметка.

Практична контролна листа за испорака може да го задржи ова размислување блиску до работата:

  • Исход за корисникот: Наведете го проблемот во однос на лицето што завршува задача, а не само во однос на интерфејсот што се менува.
  • Оперативен исход: Идентификувајте ги логовите, предупредувањата, контролните табли или упатствата за поддршка потребни за функционирање на функцијата.
  • Патека за промена: Разгледајте ја најверојатната идна измена и дали дизајнот ја прави едноставна.
  • Патека за издание: Одлучете како функцијата се воведува, следи и повлекува ако претпоставките се покажат погрешни.

На оддалечените тимови им е потребна експлицитна сопственост

Во тим што работи на иста локација, неизвесноста понекогаш може да се разреши со брз разговор. Оддалечените тимови не можат да се потпираат на физичката близина како систем за координација. Ним им е потребно одлуките, одговорностите и статусот да бидат видливи без сите да мора да бидат онлајн во исто време.

Тоа не значи замена на дискусијата со документација. Тоа значи намерно користење на секој медиум. Сложените прашања за дизајн заслужуваат разговор. Одлуката што произлегува заслужува писмено резиме. Рутинските ажурирања треба да бидат достапни асинхроно. На итните инциденти им е потребна договорена патека за ескалација.

Јасната сопственост е особено важна на границите: меѓу frontend и backend тимовите, меѓу производот и поддршката, меѓу кодот на апликацијата и платформските операции. Работата на границите обично не е ничија стандардна одговорност, иако токму таму корисниците често се соочуваат со најболни неуспеси.

Силен технички лидер ги прави овие споеви видливи. Тој прашува кој е сопственик на договорот, кој одобрува промена што ја нарушува компатибилноста, кој го следи пуштањето и кој комуницира со засегнатите страни. Одговорот може да биде група, но никогаш не треба да биде претпоставка.

Создадете услови за одржлива одговорност

Сопственоста не треба да стане еуфемизам за постојана достапност или индивидуална вина. Тим не може одржливо да „поседува сè“ ако нема време, овластување, контекст или поддршка.

Здравата сопственост се споделува преку јасни системи: корисно прегледување на код, одржливи практики за дежурство, реален опсег, документирани оперативни прирачници и можности за подобрување на повторливите проблеми. Кога истиот проблем при распоредување се појавува постојано, правилниот одговор не е едноставно да се бара од луѓето да бидат повнимателни. Тој е да се подобри процесот, алатките или дизајнот што му дозволува на проблемот да се повторува.

Лидерите го поставуваат тонот со наградување на раното пријавување ризици. Ако луѓето се казнуваат затоа што изнесуваат грижи, проблемите ќе излезат на површина доцна, кога изборите се потесни, а трошоците се повисоки. Ако неизвесноста се третира како информација, тимовите можат да го намалат ризикот додека сè уште е евтино да се реши.

Производот трае кога грижата го надживува лансирањето

Функциите создаваат замав. Сопственоста создава континуитет. Производите што стекнуваат доверба не се нужно оние со најдолга мапа на патот; туку оние што остануваат разбирливи, доверливи и одзивни додека реалноста се менува околу нив.

За развивачите, ова е и предност во кариерата. Луѓето што израснуваат во доверливи технички лидери не се само брзи имплементатори. Тие ја гледаат целата патека од потребата на корисникот до оперативната реалност, ги прават компромисите видливи и ги оставаат системите подобри за следната личност.

Изградете ја функцијата. Потоа погледнете подалеку од неа. Токму таму почнуваат трајните производи.

Портрет на автор на блогот

Mihajlo

Јас сум Михајло - развивач поттикнат од љубопитност, дисциплина и постојаната желба да создадам нешто значајно. Споделувам увиди, упатства и бесплатни услуги за да им помогнам на другите да ја поедностават својата работа и да растат во постојано развивачкиот свет на софтверот и вештачката интелигенција.