De ce echipele Data Science au nevoie de generaliști, nu de specialiști

De ce echipele Data Science au nevoie de generaliști, nu de specialiști
HIROSHI WATANABE/GETTY IMAGES

În The Wealth of Nations, Adam Smith arată cum diviziunea muncii devine principala sursă de creștere a productivității. Un exemplu este linia de asamblare a unei fabrici de știfturi: „Un muncitor trage sârma, altul îl îndreaptă, un al treilea îl taie, un al patrulea ascutește capătul, un al cincilea șlefuiește celălalt capăt pentru a se potrivi capului”. Datorită specializării axate pe funcții specifice, fiecare angajat devine un specialist înalt calificat în sarcina sa îngustă, ceea ce duce la creșterea eficienței procesului. Producția per muncitor crește de multe ori, iar fabrica devine mai eficientă în producerea de știfturi.

Această diviziune a muncii după funcționalitate este atât de înrădăcinată în mintea noastră chiar și astăzi, încât ne-am organizat rapid echipele în consecință. Data Science nu face excepție. Capacitățile algoritmice complexe de afaceri necesită mai multe funcții de lucru, astfel încât companiile creează de obicei echipe de specialiști: cercetători, ingineri de date, ingineri de învățare automată, oameni de știință cauza-efect și așa mai departe. Munca specialiștilor este coordonată de managerul de produs cu transferul de funcții într-o manieră care seamănă cu o fabrică de pini: „o persoană primește datele, alta le modelează, o a treia le execută, o a patra măsură” și așa mai departe,

Din păcate, nu ar trebui să ne optimizăm echipele Data Science pentru a îmbunătăți productivitatea. Cu toate acestea, faceți acest lucru atunci când înțelegeți ce produceți: ace sau altceva și pur și simplu vă străduiți să creșteți eficiența. Scopul liniilor de asamblare este de a finaliza o sarcină. Știm exact ce ne dorim – ace (ca în exemplul lui Smith), dar poate fi menționat orice produs sau serviciu în care cerințele descriu pe deplin toate aspectele produsului și comportamentul acestuia. Rolul angajaților este de a îndeplini aceste cerințe cât mai eficient posibil.

Dar scopul științei datelor nu este de a finaliza sarcini. Mai degrabă, scopul este de a explora și dezvolta noi oportunități puternice de afaceri. Produsele și serviciile algoritmice precum sistemele de recomandare, interacțiunile cu clienții, clasificarea preferințelor de stil, mărimea, designul îmbrăcămintei, optimizarea logisticii, detectarea tendințelor sezoniere și multe altele nu pot fi dezvoltate în avans. Ele trebuie studiate. Nu există planuri de replicat, acestea sunt noi posibilități cu incertitudine inerentă. Coeficienții, modelele, tipurile de modele, hiperparametrii, toate elementele necesare trebuie învățate prin experimentare, încercări și erori și repetare. Cu știfturi, instruirea și proiectarea se fac înainte de producție. Cu Data Science, înveți așa cum o faci, nu înainte.

Într-o fabrică de ace, atunci când instruirea este pe primul loc, nici nu ne așteptăm și nici nu dorim ca lucrătorii să improvizeze orice caracteristică a produsului, în afară de îmbunătățirea eficienței producției. Specializarea sarcinilor are sens deoarece duce la eficiența procesului și la consistența producției (fără modificări ale produsului final).

Dar când produsul este încă în curs de dezvoltare și scopul este antrenamentul, specializarea interferează cu obiectivele noastre în următoarele cazuri:

1. Mărește costurile de coordonare.

Adică acele costuri care se acumulează în timpul petrecut comunicând, discutând, justificând și prioritizand munca ce trebuie făcută. Aceste costuri cresc super-liniar cu numărul de persoane implicate. (După cum ne-a învățat J. Richard Hackman, numărul de relații r crește în mod similar cu funcția numărului de termeni n conform acestei ecuații: r = (n^2-n)/2. Și fiecare relație dezvăluie o anumită cantitate din relație de cost.) Atunci când cercetătorii de date sunt organizați pe funcție, la fiecare etapă, la fiecare schimbare, la fiecare predare etc., sunt necesari mulți specialiști, ceea ce crește costurile de coordonare. De exemplu, modelatorii statistici care doresc să experimenteze cu noi funcții vor trebui să se coordoneze cu inginerii de date care adaugă la seturile de date de fiecare dată când doresc să încerce ceva nou. De asemenea, fiecare model nou instruit înseamnă că dezvoltatorul de model va avea nevoie de cineva cu care să se coordoneze pentru a-l pune în producție. Costurile de coordonare acționează ca un preț pentru iterație, făcându-le mai dificile și mai costisitoare și mai susceptibile de a determina abandonarea studiului. Acest lucru poate interfera cu învățarea.

2. Îngreunează timpul de așteptare.

Chiar mai descurajantă decât costurile de coordonare este timpul pierdut între turele de lucru. În timp ce costurile de coordonare sunt de obicei măsurate în ore - timpul necesar pentru a conduce întâlniri, discuții, revizuiri de proiectare - timpul de așteptare este de obicei măsurat în zile, săptămâni sau chiar luni! Programele specialiștilor funcționali sunt greu de echilibrat deoarece fiecare specialist trebuie să fie distribuit pe mai multe proiecte. O întâlnire de o oră pentru a discuta schimbări poate dura săptămâni pentru a ușura fluxul de lucru. Și după ce s-a convenit asupra modificărilor, este necesar să se planifice munca efectivă în sine în contextul multor alte proiecte care ocupă timpul de lucru al specialiștilor. Lucrările care implică remedieri de cod sau cercetări care durează doar câteva ore sau zile pentru a fi finalizate pot dura mult mai mult până când resursele devin disponibile. Până atunci, iterația și învățarea sunt suspendate.

3. Restrânge contextul.

Diviziunea muncii poate limita în mod artificial învățarea prin răsplătirea oamenilor pentru că au rămas în specialitatea lor. De exemplu, un cercetător de știință care trebuie să rămână în domeniul de aplicare al funcționalității sale își va concentra energia pe experimentarea cu diferite tipuri de algoritmi: regresie, rețele neuronale, pădure aleatoare și așa mai departe. Desigur, alegerile bune ale algoritmilor pot duce la îmbunătățiri incrementale, dar de obicei există mult mai mult de câștigat din alte activități, cum ar fi integrarea de noi surse de date. De asemenea, va ajuta la dezvoltarea unui model care exploatează fiecare putere explicativă inerentă datelor. Cu toate acestea, puterea sa poate sta în schimbarea funcției obiective sau relaxarea anumitor constrângeri. Acest lucru este dificil de văzut sau de făcut atunci când munca ei este limitată. Deoarece un om de știință tehnic este specializat în optimizarea algoritmilor, este mult mai puțin probabil să facă orice altceva, chiar dacă aduce beneficii semnificative.

Pentru a numi semnele care apar atunci când echipele de știință a datelor acționează ca fabrici de pin (de exemplu, în actualizările simple de stare): „așteptarea modificărilor canalului de date” și „așteptarea resurselor ML Eng” sunt blocanți obișnuiți. Cu toate acestea, cred că influența mai periculoasă este ceea ce nu observi, pentru că nu poți regreta ceea ce nu știi deja. Execuția ireproșabilă și mulțumirea dobândită din obținerea eficienței procesului pot masca adevărul că organizațiile nu sunt conștiente de beneficiile învățării pe care le pierd.

Soluția la această problemă, desigur, este să scapi de metoda pin din fabrică. Pentru a încuraja învățarea și iterația, rolurile cercetătorilor de date ar trebui să fie generice, dar cu responsabilități largi independente de funcția tehnică, adică să organizeze oamenii de știință în date astfel încât să fie optimizați pentru învățare. Aceasta înseamnă angajarea „specialiști full stack” – specialiști generali care pot îndeplini o varietate de funcții, de la concept la modelare, implementare la măsurare. Este important să rețineți că nu sugerez că angajarea de talente complete ar trebui să reducă numărul de angajați. Mai degrabă, voi presupune pur și simplu că atunci când sunt organizați diferit, stimulentele lor sunt mai bine aliniate cu beneficiile de învățare și performanță. De exemplu, să presupunem că aveți o echipă de trei oameni cu trei abilități de afaceri. Într-o fabrică de ace, fiecare tehnician își va dedica o treime din timp fiecărei sarcini de serviciu, deoarece nimeni altcineva nu își poate face treaba. Într-o stivă completă, fiecare generalist este pe deplin dedicat întregului proces de afaceri, extinderii și instruirii.

Cu mai puțini oameni care sprijină ciclul de producție, coordonarea este redusă. Generalistul se deplasează fluid între caracteristici, extinzând conducta de date pentru a adăuga mai multe date, încercând noi funcții în modele, implementând noi versiuni în producție pentru măsurători cauzale și repetă pașii de câte ori apar idei noi. Desigur, break-ul îndeplinește diferite funcții secvențial și nu în paralel. La urma urmei, este doar o persoană. Cu toate acestea, finalizarea unei sarcini durează de obicei doar o fracțiune din timpul necesar pentru a accesa o altă resursă specializată. Deci, timpul de iterație scade.

Generalistul nostru poate să nu fie la fel de calificat ca un specialist într-o anumită funcție, dar nu ne străduim să obținem perfecțiune funcțională sau mici îmbunătățiri incrementale. Mai degrabă, ne străduim să învățăm și să descoperim tot mai multe provocări profesionale cu impact treptat. Cu un context holistic pentru o soluție completă, el vede oportunități pe care un specialist le-ar rata. Are mai multe idei și mai multe posibilități. Eșuează și el. Cu toate acestea, costul eșecului este scăzut și beneficiile învățării sunt mari. Această asimetrie promovează repetarea rapidă și recompensează învățarea.

Este important de remarcat faptul că cantitatea de autonomie și diversitatea de abilități oferite oamenilor de știință din stack complet depinde în mare măsură de robustețea platformei de date pe care să lucreze. O platformă de date bine concepută îi atrage pe oamenii de știință în domeniul datelor de complexitatea containerizării, procesării distribuite, failover-ului automat și a altor concepte avansate de calcul. Pe lângă abstracție, o platformă de date robustă poate oferi conectivitate perfectă la infrastructura experimentală, automatizează monitorizarea și alertele, permite scalarea și vizualizarea automată a rezultatelor algoritmice și depanare. Aceste componente sunt proiectate și construite de inginerii platformei de date, ceea ce înseamnă că nu sunt transmise de la cercetătorul de date către echipa de dezvoltare a platformei de date. Specialistul în știința datelor este responsabil pentru tot codul folosit pentru rularea platformei.

Și eu am fost cândva interesat de diviziunea funcțională a muncii folosind eficiența procesului, dar prin încercare și eroare (nu există o modalitate mai bună de a învăța), am descoperit că rolurile tipice facilitează mai bine învățarea și inovarea și oferă metricile potrivite: descoperirea și construirea mult mai multe oportunități de afaceri decât abordare specializată. (O modalitate mai eficientă de a învăța despre această abordare a organizării decât încercarea și eroarea prin care am trecut este să citesc cartea lui Amy Edmondson Colaborarea în echipă: cum învață, inovează și concurează organizațiile în economia cunoașterii).

Există câteva ipoteze importante care pot face această abordare a organizării mai mult sau mai puțin fiabilă în unele companii. Procesul de iterație reduce costul încercărilor și erorilor. Dacă costul erorii este mare, poate doriți să le reduceți (dar acest lucru nu este recomandat pentru aplicații medicale sau producție). În plus, dacă aveți de-a face cu petabytes sau exabytes de date, poate fi necesară specializarea în ingineria datelor. De asemenea, dacă menținerea capacităților de afaceri online și disponibilitatea acestora este mai importantă decât îmbunătățirea acestora, excelența funcțională poate învinge învățarea. În cele din urmă, modelul full stack se bazează pe opiniile oamenilor care știu despre el. Nu sunt unicorni; le puteți găsi sau le puteți pregăti singur. Cu toate acestea, aceștia sunt foarte solicitați, iar atragerea și păstrarea lor va necesita o compensație competitivă, valori corporative puternice și muncă provocatoare. Asigurați-vă că cultura companiei dvs. poate sprijini acest lucru.

Chiar și cu toate acestea spuse, cred că modelul full stack oferă cele mai bune condiții de pornire. Începeți cu ele și apoi treceți în mod conștient către o diviziune funcțională a muncii numai atunci când este absolut necesar.

Există și alte dezavantaje ale specializării funcționale. Acest lucru poate duce la pierderea responsabilității și a pasivității din partea lucrătorilor. Smith însuși critică diviziunea muncii, sugerând că aceasta duce la tocirea talentului, de exemplu. lucrătorii devin ignoranți și retrași, deoarece rolurile lor sunt limitate la câteva sarcini repetitive. Deși specializarea poate oferi eficiență a procesului, este mai puțin probabil să inspire lucrătorii.

La rândul lor, rolurile versatile oferă toate lucrurile care conduc la satisfacția în muncă: autonomie, măiestrie și scop. Autonomia este că nu depind de nimic pentru a atinge succesul. Măiestria constă în avantaje competitive puternice. Iar sensul scopului constă în oportunitatea de a avea un impact asupra afacerii pe care o creează. Dacă îi putem face pe oameni entuziasmați de munca lor și să aibă un impact mare asupra companiei, atunci totul va fi la locul lui.

Sursa: www.habr.com

Adauga un comentariu