Бизнис

Build Products That Endure: The Craft of Sustainable Software Ownership

Создавајте производи што траат: уметноста на одржливото сопствеништво на софтвер

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

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

За техничките лидери, ова го менува клучното прашање. Наместо да прашувате само: „Можеме ли да го испорачаме ова?“, прашајте: „Може ли овој производ одговорно да се поседува откако ќе го испорачаме?“

Сопствеништвото е способност на производот

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

Производ со одржливо сопствеништво има јасни граници. Неговиот тим знае на кој проблем на клиентите им служи, како изгледа успехот, од каде доаѓаат неговите податоци, како се појавуваат неуспесите и кои компромиси биле намерни. Кодот е важен, но важни се и одлуките што го опкружуваат.

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

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

Градете за следната одлука, не за замислената конечна состојба

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

Алтернативата не е невнимателно кодирање. Таа е дизајнирање за следната значајна одлука.

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

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

  • Кој проблем го решава овој дел од системот?
  • На кои претпоставки се потпира?
  • Кој е најбезбедниот начин да се промени?

Кога овие одговори тешко се наоѓаат, системот може да биде технички функционален, но оперативно кревок.

Направете ги одлуките видливи

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

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

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

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

Дизајнирајте ја далечинската работа околу предавањата

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

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

Асинхроната комуникација исто така има корист од една едноставна навика: разликувајте барање за информација од барање за одлука. „Може ли некој да го прегледа ова?“ е различно од „Треба да избереме меѓу овие два пристапа до четврток.“ Второто создава сопственик, рок и пат напред.

Намалете ја зависноста од индивидуалната меморија

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

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

Документацијата треба да се третира како интерфејс на производот за тимот. Ако е тешко да се следи во мирно попладне, нема да биде корисна за време на инцидент.

Заштитете ја брзината на испорака со управување со одржувањето

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

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

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

Лидерството значи создавање простор за одговорно расудување

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

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

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

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

Mihajlo

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