Preklenutie medzery medzi výskumom a vývojom

Príbeh o biometrických údajoch spoločnosti Onfido

Naštartovanie strojového učenia často trpí priepasťou medzi inžinierstvom a výskumom. Onfido nie je výnimkou. V tomto príbehu vás prevediem cestou biometrického tímu k skutočnej krížovej funkčnosti.

Príznaky neintegrovaných tímov

Keď som prvýkrát začal v Onfide, takmer pred dvoma rokmi, bola výskumná funkcia úplne oddelená od inžinierskej funkcie. Sedel mimo krížových funkčných tímov, mal vlastné vedenie a svoje vlastné ciele.

To vedie k rôznym bolestivým bodom pociťovaným v celom podniku:

  • Vedci strojového učenia sa cítili, akoby trávili veľa času výrobou svojho kódu, na ktorý neboli špecialisti, ani si ho užili. Mali veľa závislostí s DevOps a inými inžiniermi mimo ich funkcie, čo spomaľovalo ich postup.
  • Inžiniersky tím sa sťažoval na pripravenosť výroby vyrobených algoritmov, ktoré boli často bez skúšok a neboli schopné škálovať. Nepomohlo to, že backendoví inžinieri skutočne nevykonávali Python.
  • Podniky nemali prehľad o tom, čo sa deje v potrubí, nerozumejú tomu, ako dlho bude trvať projekt, a bol všeobecne frustrovaný nedostatkom viditeľného pokroku.

Toto sú témy, ktoré som videl v iných produktových spoločnostiach založených na strojovom učení v ranom štádiu, ktoré fungujú bez integrovaných tímov. Tieto napätia môžu vzbudiť a zhoršiť dôveru medzi funkciami, narušiť akúkoľvek zostávajúcu empatiu a zničiť povesť všetkých funkcií v rámci podniku.

Ako sme integrovali tímy

Keď som sa stal produktovým manažérom, mal som za úlohu dohliadať na úplne nový odbor biometrie. Nasadil som procesy, ktoré som predtým používal na odstraňovanie bariér komunikácie a budovanie empatie: kríženie funkčných tímov a zdieľanie cieľov.

Tím začal ako jeden produktový manažér, jeden vedúci tímu, traja vývojári Ruby / Elixir a jeden výskumný pracovník v oblasti strojového vzdelávania. Zatiaľ čo produkt a výskum boli v Londýne, inžinieri boli v Lisabone.

Vývoj tímu. Zmiznutie tvárí = povýšenie, presun do iných tímov a ukončenie stáží. Našťastie, že som ešte nikoho neopustil

Budovanie vzťahov cez funkcie

Prvým krokom bolo vybudovanie vzťahu s výskumným pracovníkom v oblasti strojového učenia, ktorý sa v tomto bode stále považoval za súčasť výskumného tímu, a práve náhodou pracoval na biometrických algoritmoch.

Pracoval som s ním, aby som pochopil jeho víziu, problémový priestor a to, čo ho vzrušovalo. Pomohol mi pochopiť, čo je teraz možné, v porovnaní s tým, s čím by experimentovanie trvalo dlho. Hodnotili sme trh z hľadiska podobných ponúk a potenciálnych poskytovateľov a zvážili rozhodnutia o stavbe verzus nákup.

Zostavili sme zoznam algoritmov, aby sme ich spoločne preskúmali a stanovili priority. Vedome diverzifikovali naše portfólio stávok tak, aby existovalo veľké množstvo určitých krátkodobých algoritmov vyvážených väčšími rizikovejšími iniciatívami.

Vytvorili sme partnerstvo, presne tak, ako by to bol PM s ich inžinierskym vedením. Pomohlo to, že tento výskumný pracovník v oblasti strojového učenia je pomerne komerčne zameraný a zameraný na zákazníka, ale toto sú črty, ktoré je možné učiť. Dôležité je vybudovať partnerstvo.

Zosúladenie našich cieľov

Celý tím napísal štvrťročné ciele a kľúčové výsledky (OKR), ktoré boli zamerané na výsledky a nie na výstupy. To znamená: „presunúť metriku x%“ namiesto „odoslať túto funkciu“.

OKR zamerané na výsledky umožňujú výskumným pracovníkom v oblasti strojárstva a strojového učenia spolupracovať na dosiahnutí cieľa, ktorý má merateľný dopad na podnikanie, bez toho, aby predpisoval, ako ho dosiahnuť. To umožnilo výskumníkom experimentovať s rôznymi algoritmami v priebehu štvrťroka, a aj keď by niekto nepracoval, mohli by ešte jeden opustiť a experimentovať s iným spôsobom, ako ho vyriešiť.

Každý štvrťrok sa zameriavam na zisťovanie potrieb konkrétneho trhu a vymedzenie toho, či v tomto priestore existujú nejaké cenné problémy. Priame zdieľanie týchto poznatkov s výskumníkmi v oblasti strojového učenia mi pomohlo objaviť, čo je uskutočniteľné a kde by sme mohli dosiahnuť prielomy a inovácie pred trhom.

Riešenie napätia

Pri písaní OKRs sa naše ciele za štvrťrok zhodovali, nevyriešilo sa tým napätie medzi inžinierstvom a výskumom. V tomto okamihu jediný výskumný pracovník v oblasti strojového učenia v oblasti biometrie najal viacerých ľudí, ktorí sa o ňom hlásili a chceli vytvoriť identitu ako tím pre výskum biometrie, čím sa ďalej oddeľovali od tímu pre biometriu (inžinierstvo).

Niekoľko vecí pomohlo zblížiť tímy a nakoniec viesť k vytvoreniu plne krížového funkčného tímu:

  • Premenovanie nášho „vedúceho tímu“ na „inžinierske vedenie“: Potrebovali sme uznať, že ak by sme zlúčili tímy, nemohol existovať jediný tímový vedúci, ale trio potenciálnych zákazníkov na slovo: produktový manažment, inžiniersky a vedecký výskum. Vedúce úlohy označujú zodpovednosť vedenia vedenia, ako aj architektonickú a strategickú rozhodovaciu silu vo svojich funkciách.
  • Spoločná socializácia: Dve funkcie inžinierstva a výskumu boli v dvoch rôznych krajinách, takže letenie výskumných pracovníkov do Lisabonu celý týždeň skutočne pomohlo prelomiť bariéry v komunikácii a vybudovať priateľstvo a empatiu medzi týmito dvoma funkciami. Spojilo nás to a ľudia sa začali cítiť ako súčasť jedného tímu. Prinieslo nám to tiež veľa Pasteis de Nata (portugalské pudingové koláčiky) a chutnú portugalskú Cozido.
  • Prispôsobenie obradov Scrum a opakovanie postupu: Povaha práce pre inžinierov a výskumných pracovníkov je úplne iná a Scrum ju jednoducho neodstráni.
Tímový obed v Gunpowder v Londýne.

Prispôsobené slávnosti Scrumu pre tímy s výskumnými pracovníkmi v oblasti strojového vzdelávania

Inžinierske práce sú zvyčajne dobre definované a isté. Natoľko, že boli vyvinuté celé metodiky, ktoré pomôžu merať a predpovedať výstup alebo rýchlosť softvérových tímov. Najobľúbenejší vo svete startupov je agilný a jeho rôzne príchute, ako napríklad scrum a kanban. Zatiaľ čo sme začali striktne strhujúcou strava, rýchlo sme narazili na problémy.

Naopak, výskumná práca sa zaoberá mnohými neznámymi. Často sa začína štúdiou uskutočniteľnosti, aby sa zistilo, či je niečo vôbec realistické a možné. Uskutočňuje sa to vo viacerých experimentoch a dosiahnutie reprezentatívnych výsledkov môže trvať veľmi dlho.

Aktualizácie výskumníka boli často „môj experiment stále beží“ alebo „áno, stále čítam noviny“. Keby podrobnejšie opísali, čo robia, inžinieri by slepo hľadeli kvôli nedostatku odborných znalostí strojového učenia. Ich lístky tiež mali veľmi vysoké odhady a prenášali viac sprintov. Obe tieto veci ich frustrovali. Cítili, že nedokážu poskytnúť mäsité aktualizácie a sú hrdí na svoj pokrok.

Vedci často nechápu, o čom hovoria aj inžinieri. Menej sa zaujímali o architektúru širšej platformy, do ktorej by sa ich modely nakoniec integrovali.

Je to také zlé, že vedci začali preskakovať, pretože sa im to nepovažovalo za cenné, čo ďalej zvyšuje dysfunkciu tímu.

Zmeny, ktoré pomohli:

  • Piatok rekapitulácia: Namiesto toho, aby sa každý deň pripojili k stojacimu postaveniu (formálne denné scrum v scrumu), pripojili sa k nemu každý druhý deň a nakoniec iba v piatok, kde by poskytli dlhšiu aktualizáciu toho, čo dosiahli tento týždeň. To im poskytlo viac času na experimentovanie a poskytlo im viac vysielacieho času na opísanie prístupu a kontextu ich práce. Inžinieri tiež poskytli informácie o pokroku v tomto týždni a kontextovali svoje projekty a rozhodnutia o architektúre.
  • Stand up Summary on Slack: Na konci každého stand up píšem zhrnutie toho, čo sa stalo a na čo sa ľudia dnes zameriavajú. I @ V prípade potreby uveďte prieskum z výskumu, ako je napr. Pokrok v integrácii ich algoritmov alebo potreba ich vstupu na odblokovanie tímu. To pomohlo vedcom zostať v slučke.
  • Chat s algoritmami: Každý vedec vo vyhradenej relácii vysvetlil, na čom pracovali, ako ich algoritmus pracoval alebo zatiaľ, ich prístup, kde boli s ním. Zahŕňalo niekoľko základných školení pre ľudí, ktorí sa nenaučili strojovo, a pomohlo vyrovnať rovnaké podmienky a vytvoriť spoločný jazyk.
  • Zdieľané backlog spresnenie a plánovanie sprintu: Toto nie je zmena ako taká. Je dôležité zdôrazniť, že celý tím sa pripojil počas upresňovacích sedení a plánovania sprintu, pretože pomohol zladiť ciele pre sprinty, spojil ich s našimi OKR a spoluvytvoril cestu od ukončenia výskumu algoritmov k jeho výrobe, postupnému zavádzaniu a pokračovaniu. žiť pre každého.
  • Neurčené lístky na výskum: Zistili sme, že odhady výskumných úloh nám vlastne nepomohli predpovedať, kedy bude práca vykonaná. Rozhodli sme sa, že body pre výskumných pracovníkov sa úplne znížia, ale lístky ponecháme vo sprinte, aby sa počas piatkovej rekapitulácie rozbehli rozhovory.
  • Prenajmite most: Kľúčom pre tím bol náš Python inžinier, ktorý preklenul priepasť medzi Pythonovým kódom výskumníkov a našimi back-end technikmi Ruby a Elixir. Úloha bola dôležitá pri definovaní toho, ako ideme od akademického typového kódu k škálovateľnému kódu výrobnej triedy.
Oslavujeme úspechy, aj keď sme vzdialení. Odkaz na tweet.

Záverečné pripomienky

Biometrický tím je dnes súdržný ako kedykoľvek predtým. Odvtedy sme nášmu tímu privítali dve nové funkcie: Správa služieb / analýza údajov v Londýne a náš testovací inžinier v Lisabone nás začali podporovať na plný úväzok, a nie zdieľaním s ostatnými tímami.

Spoločne oslavujeme úspechy v oblasti falošných a videokonferencií, blahoželáme si navzájom k skvelej práci a poučovaniu sa z našich menej úspešných projektov ako tím. Produkt navštívi Lisabon raz za štvrťrok. Výskum a služby idú do Lisabonu každých šesť mesiacov. Inžinierstvo a test prichádzajú do Londýna najmenej dvakrát ročne. Neustále sa stretávame, učíme sa jeden od druhého a opakujeme svoje procesy.

Aká zábavná cesta to bola doteraz!

Postavte sa nad Zoom. Niekto musel povedať niečo vtipné.

Môžete si prečítať pohľad na tento príbeh vývojára softvéru od Daniel Serrano (prečítané 3 min.), Napísané asi pred rokom, takže dovtedy neboli implementované všetky vyššie uvedené zmeny.

PS: Je pre mňa zaujímavé, ako som prešiel všetkými štyrmi rôznymi zrážkami na všetkých týchto fotografiách.