Am vorbit cu mulți colegi practicieni în domeniul analizei care sunt categorici în a spune că doresc ca echipa lor să nu atingă niciodată „producția”. Deși există motive întemeiate pentru a fi atenți ori de câte ori faceți schimbări care ar putea avea impact asupra clienților, cred că, pe măsură ce software-ul devine tot mai mult bazat pe date, este esențial să găsim modalități sigure de a împuternici echipele de analiză să construiască și să implementeze aplicații bazate pe date.
Ce este producția?
În primul rând, câteva definiții ale termenului. „Producția” este un mediu. În mod obișnuit, există câteva medii în care codul poate fi rulat (în ordinea progresiei):
- Dezvoltare locală
- Dezvoltare la distanță
- Staging / QA
- Producție
Care „aplicație” va avea mai multe medii, dintre care unul va fi cel cu care se confruntă utilizatorii care nu sunt dezvoltatori. Cel care se confruntă cu utilizatorii care nu sunt dezvoltatori se numește de obicei „producție”.
Iată care este teza mea: Este esențial ca echipele de analiză să aibă un impact asupra aplicațiilor orientate către clienți1Există, desigur, excepții de la acest lucru și diferite tipuri de aplicații vor avea diferite „grade” de orientare către date. Din punct de vedere istoric, unele companii au ezitat să își facă aplicațiile mai orientate către date deoarece inginerii lor de software nu aveau competențe în domeniul datelor și se temeau să lase echipa de analiză să aibă impact asupra aplicației. Desigur, ar trebui să luați decizii privind adăugarea de noi caracteristici în funcție de cât de valoroase vor fi acestea, nu doar pentru că un blogger v-a spus să o faceți… Dacă nu este posibil să permiteți acest lucru într-un mod sigur, atunci ar trebui să vă modificați aplicația orientată către client în așa fel încât să faceți acest lucru posibil.
Dacă ultimul paragraf vi s-a părut șocant, sunt pe cale să vă dau pe spate: toți analiștii dvs. implementează în producție în fiecare zi, deja. Dați-mi voie să vă conduc prin cele mai preferate2și mai detestabile. Oamenii mă iubesc la petreceri. linie de întrebări:
- Strument BI pe care îl configurați pentru a furniza rapoarte utilizatorilor din cadrul companiei dumneavoastră – nu este acesta producție?
- Scriptul R care a asamblat datele, le curăță și oferă vizualizări pentru un PPT care este trimis prin e-mail echipei executive, nu este acesta producție?
- Filmul Excel (plin de cod) care este folosit pentru a lua o decizie de inventariere de mai multe milioane de dolari, nu este acesta producție?
Amintește-ți: doar pentru că nu ai un mediu de dezvoltare nu înseamnă că mediul tău orientat către utilizator nu este producție!
Pentru multe startup-uri, oamenii folosesc „producție” ca prescurtare pentru a se referi la aplicația lor web orientată către utilizator (în funcție de stadiul în care se află compania, aceasta poate fi sau nu încă un monolit rails). Pe lângă faptul că ar trebui să spuneți că ar trebui să nu mai folosiți termeni atât de neclari, vreau să pledez pentru a vă gândi la motivul pentru care ați putea dori să permiteți analiștilor care nu sunt ingineri și oamenilor de știință de date să implementeze o aplicație orientată către client. Voi încheia cu câteva strategii pentru modul în care ați putea operaționaliza acest lucru.
De ce să împuterniciți echipa de analiză să aibă impact asupra clienților?
Construirea de aplicații bazate pe date este o miză de masă pentru ingineria software modernă și dezvoltarea de produse. Aplicațiile de mâine vor avea date integrate de la tulpină la pupa și dacă există un zid între experții dvs. de date și dezvoltatorii de aplicații, veți avea o perioadă proastă.
Iată câteva exemple de produse bazate pe date pe care ați putea dori să le construiți:
- Implementați eșantionarea Thompson pentru variantele de site-uri de testare a banditului cu mai multe brațe
- Clusterizați clienții pentru e-mailuri de marketing direcționate sau variante de pagini de aterizare
- Prediceți clienții susceptibili de a renunța și oferiți doar acelor clienți un cod promoțional
- Introduceți algoritmi de recomandare a produselor / de clasificare a căutărilor
Dacă doriți să construiți aceste produse bazate pe date, veți dori ca experții dvs. de date să lucreze la ele. Iată câteva motive pentru a vă gândi să estompați linia de demarcație dintre echipa dvs. de analiză3Ca de obicei, în această postare folosesc termenii „analiză” și „analiști” în cel mai larg mod posibil, incluzând oamenii de știință de date, analiștii de date și alți experți în date. și restul echipei dvs. de inginerie software:
- Oamenii de știință de date sunt experții dvs. în algoritmi, iar integrarea continuă este importantă
- Vreți ca aplicația dvs. să fie alimentată de date!!
- Analiștii cunosc cel mai bine datele, așa că este mai puțin probabil să facă greșeli
- Producția muncii altcuiva este o treabă de rahat
- Blocarea iterației analitice cu prioritizarea inginerilor încetinește pe toată lumea și duce la frustrare
Este necontroversat să lași managerii de produs sau designerii să implementeze conținut nou pe site prin intermediul unui CMS. Dacă acesta ar suporta markdown, ar trebui să fie, de asemenea, trivial. Ați putea, de asemenea, să lăsați analiștii să ajusteze ponderile algoritmilor prin intermediul unui CMS, așa că de ce să nu-i lăsați să implementeze un model, atâta timp cât acel model este conform cu orice API pe care aplicația îl așteaptă? Desigur, deoarece este posibil ca echipa dvs. de analiză să nu aibă toate instrumentele sau abilitățile necesare pentru a lucra la o aplicație web complexă, doriți să vă asigurați că pot face aceste modificări într-un mod sigur și eficient (adică pot folosi instrumentele cu care sunt familiarizați, iar celelalte părți sunt abstractizate).
Cum să împuterniciți echipa de analiză să aibă impact asupra clienților?
Acum că am discutat de ce ar putea fi o idee bună, putem vorbi despre unele modalități de a face acest lucru să se întâmple în siguranță și eficient. Iată câteva exemple pe care le-am văzut în trecut (și mi-ar plăcea să aud despre mai multe dacă știți vreun model bun):
- Micro servicii
- Algoritmul de clasificare a produselor poate trăi în spatele unui API, astfel încât echipa de analiză să poată implementa modificări fără a atinge restul aplicației
- Profilele utilizatorilor
- Puteți persista atributele cheie ale utilizatorilor într-un tabel la care aplicația dvs. web are acces (de ex.g., prin intermediul unui cache redis) care este gestionat de echipa de analiză (ETL, ML, orice, atâta timp cât API nu se schimbă)
- Ponderi / Scoruri
- Dacă aveți un model care funcționează pe baza unor ponderi sau atribute pentru a crea un „scor” (de ex, un scor de risc de fraudă), atunci puteți păstra aceste ponderi într-un tabel la care echipa de analiză poate avea acces în scris
Am mai scris despre modelul de proiectare „code-as-configuration” și, în general, acesta este un model excelent pentru a da posibilitatea celor care nu sunt ingineri să implementeze în mod sigur codul în mediile de producție. Prietenul de pe blog Harlan Harris a scris, de asemenea, despre utilizarea limbajelor specifice domeniului pentru a facilita testarea, coordonarea și implementarea modelelor de învățare automată în producție.