Premostiti jaz između istraživanja i razvoja

Priča o onfido biometriji

Startapi za strojno učenje često pate od provalija između inženjerstva i istraživanja. Onfido nije iznimka. U ovoj priči vodit ću vas kroz put biometrijskog tima prema tome da doista bude multifunkcionalan.

Simptomi timova koji nisu integrirani

Kada sam prvi put započeo s Onfidom, prije gotovo dvije godine, istraživačka funkcija bila je potpuno odvojena od inženjerske funkcije. Sjedio je izvan više funkcionalnih timova, imao je svoje vodstvo i svoje ciljeve.

Ovo dovodi do različitih točaka boli koji se osjećaju u cijelom poslu:

  • Istraživači strojnog učenja osjećali su se kao da troše puno vremena na proizvodnju svog koda, za što nisu bili stručnjaci ili čak uživali. Imali su brojne ovisnosti s DevOpsom i drugim inženjerima izvan njihovih funkcija, što im je usporilo napredak.
  • Inženjerski tim požalio se na proizvodnu spremnost proizvedenih algoritama koji često nisu bili testirani i nisu bili u mogućnosti skalirati. To nije pomoglo da inženjeri koji rade pod bakalom nisu baš napravili Python.
  • Posao nije imao vidljivosti o tome što se događa, a niti razumijevanja koliko dugo će trajati projekt i uglavnom je bio frustriran nedostatkom vidljivog napretka.

To su teme koje sam vidio u drugim tvrtkama koje se temelje na strojnom učenju i koje rade bez integriranih timova. Ove tenzije mogu ojačati i pogoršati povjerenje između funkcija, izbrisati bilo kakvu preostalu empatiju i uništiti reputaciju čitavih funkcija unutar poslovanja.

Kako smo integrirali timove

Pridružio sam se menadžeru proizvoda, imao sam zadatak nadgledati potpuno novu Biometrijsku liniju poslovanja. Rasporedio sam procese koje sam prije koristio za razbijanje prepreka komunikacije i izgradnju empatije: križanje funkcionalnih timova i zajedničke ciljeve.

Tim je započeo kao jedan menadžer proizvoda, jedan voditelj tima, tri Ruby / Elixir programera i jedan istraživač strojnog učenja. Dok su Product and Research bili u Londonu, inženjeri su bili u Lisabonu.

Evolucija tima. Nestajanje lica = napredovanje, prelazak u druge timove i kraj stažiranja. Sretna što još nitko nije odustao

Izgradnja odnosa kroz funkcije

Prvi korak bio je izgraditi odnos s istraživačem strojnog učenja, koji se u ovom trenutku još uvijek smatrao dijelom istraživačkog tima, a upravo se dogodilo da radi na algoritmima biometrije.

S njim sam surađivao kako bih razumio njegovu viziju, problemski prostor i ono što ga je uzbuđivalo. Pomogao mi je da shvatim što je sada moguće, u odnosu na ono što bi trebalo dugo vremena da se eksperimentira. Procijenili smo tržište za sličnu ponudu i potencijalne pružatelje usluga i izmjerili odluke o izgradnji i kupnji.

Sastavili smo popis algoritama kako bismo ih zajedno istražili i prioritizirali, svjesno diverzificirajući naš portfelj uloga, tako da je postojao dobar broj određenih kratkoročnih algoritama, uravnoteženih s većim i rizičnijim inicijativama.

Osnovali smo partnerstvo, baš kao što bi to učinio premijer sa svojim inženjerskim vodstvom. Pomoglo je to što je ovaj istraživač strojnog učenja prilično komercijalan i orijentisan na kupca, ali to su osobine kojima se može podučiti. Važno je izgraditi partnerstvo.

Usklađivanje naših ciljeva

Cijeli je tim zajedno napisao tromjesečne ciljeve i ključne rezultate (OKR), koji su u najvećoj mogućoj mjeri bili usmjereni na rezultat, a ne na rezultate. To znači: "premjestite metriku x%", a ne "pošaljite ovu značajku".

OKR usmjereni na rezultate omogućuju istraživačima inženjerstva i strojnog učenja da rade zajedno na postizanju cilja koji ima mjerljiv poslovni učinak, a da ne propisuju kako ga postići. To je omogućilo istraživačima da eksperimentišu s različitim algoritmima tijekom tromjesečja, pa čak i ako jedan ne radi, još uvijek ga mogu napustiti i eksperimentirati s drugim načinom kako ga riješiti.

Svake četvrtine, moji su ciljevi oko otkrivanja potreba određenog tržišta i određivanja postoje li vrijedni problemi koji se trebaju riješiti na tom prostoru. Dijeljenje ovih učenja izravno s istraživačima strojnog učenja pomoglo mi je otkriti što je izvedivo i gdje bismo mogli postići proboj i inovacije ispred tržišta.

Rješavanje napetosti

Dok smo zajedno pisali OKR-ove usklađivali naše ciljeve, to nije u potpunosti riješilo napetosti između inženjerstva i istraživanja. Do ovog trenutka jedini istraživač strojnog učenja biometrije zaposlio je više ljudi koji su se prijavili za njega i željeli su stvoriti identitet kao Biometric Research tim, dodatno se odvajajući od Biometrics (Engineering) tima.

Nekoliko stvari pomoglo je da se timovi zbliže i na kraju dovedu do stvaranja potpuno funkcionalnog tima:

  • Preimenovanje našeg „voditelja tima“ u „inženjerski vod“: morali smo shvatiti da ako spajamo timove ne bi mogao biti niti jedan vodstvo tima, već trio potencijala po kazivanju: upravljanje proizvodima, inženjering i istraživački vod. Vodeće uloge označavaju odgovornost upravljanja vodstvom, kao i arhitektonsku i stratešku moć donošenja odluka u njihovim funkcijama.
  • Zajedničko druženje: dvije funkcije inženjeringa i istraživanja bile su u dvije različite zemlje, tako da je letjeti istraživači u Lisabon cijeli tjedan zaista pomoglo razbiti prepreke u komunikaciji i izgraditi prijateljstvo i empatiju između dviju funkcija. To nas je spojilo i ljudi su se počeli osjećati dijelom jedinstvenog tima. Donijelo nam je i mnogo Pasteis de Nata (portugalski pire od tartara) i ukusnog portugalskog Cozida.
  • Prilagođavanje ceremonija Scruma i ponavljanje procesa: Priroda rada inženjera i istraživača malobrojno je različita i Scrum to jednostavno ne smanjuje.
Timski ručak u Gunpowderu, London.

Prilagođene Scrum ceremonije za timove sa istraživačima strojnog učenja

Inženjerski posao je obično dobro definiran i siguran. Toliko da su čitave metodologije izgrađene da bi pomogle mjerenju i predviđanju rezultata ili brzine softverskih timova. Najpopularniji u startup svijetu je agilni i njegovih različitih okusa, kao što su scrum i kanban. Dok smo počeli sa strogo hranom dijeta, brzo smo naišli na probleme.

Suprotno tome, istraživački se rad bavi mnogim nepoznanicama. Često se započne s studijom izvedivosti kako bi se utvrdilo je li nešto uopće realno i moguće. To se događa u više eksperimenata i može potrajati vrlo dugo da bi se dobili dokazivi rezultati.

Ažuriranja istraživača često su "moj eksperiment još traje" ili "da, još uvijek čitam radove". Ako bi detaljnije opisali što rade, inženjeri bi zurili u prazno zbog nedostatka stručnosti strojnog učenja. Njihove su karte također imale vrlo visoke procjene i stalno su nosile više sprintova. Obje ove stvari su ih frustrirale. Osjetili su da nisu u stanju dati mesnato ažuriranje i ponosni na svoj napredak.

Istraživači često ne bi razumjeli o čemu su inženjeri razgovarali. Oni su bili manje uključeni i zainteresirani za širu arhitekturu platforme u koju bi njihovi modeli s vremenom bili integrirani.

Bilo je toliko loše da su istraživači počeli preskakati ustajanje jer ga nisu smatrali vrijednim, što je dodatno stvorilo timsku disfunkciju.

Promjene koje su pomogle:

  • Rekapitulacija petka: Umjesto da se pridruže stand up-u (službeno Daily Scrum in scrum), svaki bi se dan istraživači pridružili svaki drugi dan, a na kraju tek u petak, gdje bi dali dulje ažuriranje onoga što su postigli u tom tjednu. To im je omogućilo više vremena za eksperimentiranje i omogućilo im više vremena za opisivanje pristupa i konteksta njihovog rada. Inžinjeri su također obavijestili o napretku tog tjedna i kontekstualizirali svoje projekte i odluke o arhitekturi.
  • Sažetak Sažetak: Kraj svakog ustajanja, pišem sažetak onoga što se dogodilo i na što su ljudi danas usredotočeni. Naglasio sam svako od istraživanja gdje je to relevantno, poput napretka u integriranju njihovih algoritama ili je potreban njihov doprinos za deblokiranje tima. To je pomoglo istraživačima da ostanu u petlji.
  • Algoritam chat: Na posvećenoj sesiji svaki je istraživač objasnio na čemu rade, kako je radio algoritam ili još nije, njihov pristup, gdje su bili s njim. Uključio je neke osnovne vještine za ljude koji ne uče strojno i pomogao je izravnati igralište i uspostaviti neki zajednički jezik.
  • Zajedničko usavršavanje zaostataka i planiranje sprinta: Ovo se samo po sebi nije promjena. Važno je naglasiti da se cijeli tim pridružio tijekom sesija usavršavanja i planiranja sprinta, jer je to pomoglo usklađivanju ciljeva za sprint, povezalo ih s našim OKR-ovima i stvorili put od završetka istraživanja algoritama do produciranja, postupnog uvođenja i izlaska živjeti za sve.
  • Neprocijenjene istraživačke karte: Otkrili smo da nam procjene istraživačkih zadataka zapravo nisu pomogle predvidjeti kada će posao biti obavljen. Odlučili smo u potpunosti baciti bodove za istraživače, ali zadržati ulaznice u sprintu kao način da potaknete razgovore tijekom petka Rekap.
  • Unajmite most: Ključni najam tima bio je naš Python inženjer, koji je premoštio jaz između Python koda istraživača i naših inženjera Ruby i Elixir. Uloga je bila ključna u definiranju načina na koji idemo od akademskog koda tipa, do skalabilnog koda proizvodne ocjene.
Proslavljamo uspjehe, čak i kad smo udaljeni. Link do tvita.

Završni komentari

Danas je Biometrijski tim kohezivan kao i uvijek. Pošto smo našem timu dočekali dvije nove funkcije: Upravljanje uslugama / Analiza podataka u Londonu i naš testni inženjer u Lisabonu počeo nas je podržavati puno radno vrijeme, umjesto da ih dijelimo s drugim timovima.

Zajedno slavimo uspjehe na laganoj i video konferenciji, čestitamo jedni drugima na izvrsnom radu i učenju iz naših manje uspješnih projekata kao tima. Proizvod posjećuje Lisabon jednom kvartalno. Istraživanje i usluge odlaze u Lisabon svakih šest mjeseci. Inženjering i ispiti dolaze u London najmanje dva puta godišnje. Stalno se družimo, učimo jedni od drugih i ponavljamo svoje procese.

Do sada je to bilo zabavno putovanje!

Ustanite nad Zoom. Netko je sigurno rekao nešto smiješno.

Možete pročitati prikaz programera softvera na ovu priču Daniela Serrana (3 min čitanja), napisanu prije otprilike godinu dana, tako da dosad nisu provedene sve gore navedene promjene.

PS: Bilo je smiješno otkriti kako sam na svim tim fotografijama prošla četiri različite frizure.