Din fluxul meu de informații și știri din IT a răsărit ieri o întrebare: Este etic să-ți automatizezi munca și să nu spui angajatorilor despre acest lucru? Pentru că de obicei sunt interesat de răspunsurile din perspectiva cealaltă, am aflat că răspunsul la această întrebare sună cam așa: "Este ca și când ai avea mașina stricată, te-ai duce la service, ei ți-ar repara-o în cinci minute, dar ar ține-o șase ore pe care ți le-ar factura la sfârșit".
O definiție în termeni foarte pragmatici ar putea să aibă forma : automatizarea presupune să găsești căi mai scurte și mai sigure către același rezultat pe care l-ai obține, dacă ai face tu lucrul respectiv de mână.
Pornind de la lucruri simple: să extragi date dintr-un mail și să le pui într-un Excel, până la lucruri complexe: să sincronizezi datele din sistemul de HR cu cele din sistemul de cheltuieli, plus validări, plus mailuri sau alerte atunci când apar inconsecvențe. Sau, un caz des întâlnit: preluarea de date din documente scanate (facturi, bonuri, declarații, etc.) și introducerea lor într-un software. Lucrurile se pot face manual sau căutând soluții care fac exact același lucru fără intervenție umană.
Automatizarea se manifestă, chiar și în afara RPA (Robotic Process Automation). O mare parte din istoria mea profesională chiar din asta s-a compus.
Prima oară când m-am lovit de "old school" versus "new school" (sper eu!), eram parte dintr-o echipă mică implicată în proiecte de migrare de sisteme. Multe dintre transformări se făceau individual și tocmai partea aceasta era importantă: ca oricărei transformări să îi fie asociate un nume și prenume pentru ca, în caz de schimbări sau probleme, persoana să poată fi contactată direct. Cu alte cuvinte, era nevoie de un responsabil. Când am propus să automatizăm măcar o parte din proces, am fost refuzat, iar motivul refuzului a fost: percepția de dispariție a responsabilității directe și individuale a developerului. Într-un final, am automatizat aproape tot, și am și randomizat, de comun acord, asocierea fiecărei transformări cu numele unui membru al echipei noastre.
Impactul a fost radical. De la 4 luni estimate, am ajuns la două săptămâni relaxate, cu tot cu testare. A trebuit să povestim, să convingem, să demonstrăm... și un nou orizont s-a deschis, cu traininguri despre cum se face, cu întrebări despre cum se poate extinde și așa mai departe.
Iar acestea sunt doar câteva exemple. Nici nu aș putea să număr toate situațiile pe care le-am rezolvat cu scripturi programate la anumite ore sau cu alte artificii, unele chiar "de unică folosință". Câteodată are sens să automatizezi chiar și pasul acela care rulează o singură dată; s-ar putea să ia mai puțin timp decât dacă l-ai face cap-coadă de mână. În anumite aplicații există macro-uri, care au aceeași funcție de a reda automat ceva care la un moment dat se făcea manual. Există chiar domenii în care automatizarea a fost adoptată, adaptată și promovată ca atare, înainte de RPA (exemplu: testarea automată).
Ca programator și om de Delivery mi-am automatizat propria muncă de-a lungul timpului și aș putea spune că a fost mereu componenta semnificativă a activității mele. Acum, la următorul nivel, facilitez aceasta pentru munca celorlalți, iar profesia de RPA - dar și activitatea în sine - reprezintă răspunsul la toate acestea: fac ceea ce oricum făceam, doar că nu specializat într-un singur domeniu, sau platformă, ci metodic, ca modus operandi.
Acum, canalul de comunicație intern zbârnâie mereu "Cine a avut de a face cu aplicația X?", "Cum mă integrez cel mai ușor cu platforma Y?", "Avem "suport" pentru tehnologia Z?", "Avem componente pentru sistemul W?", "Are cineva un exemplu de "workflow" pentru asta?"...
Automatizarea nu e doar un mijloc pentru a atinge varii scopuri, automatizarea este scopul în sine, iar din perspectiva aceasta nu mai avem de-a face cu un spectru limitat de platforme și tehnologii, ci cu metodologia ca atare (tooluri specializate, abordări alternative, componente reutilizabile). Probabil că prima observație importantă este legată de orizontul foarte deschis al activității noastre, din care se deduce și o calitate importantă necesară, aceea de adaptabilitate, inclusiv la tehnologii foarte noi precum AI (Artificial Intelligence) sau NLP (Natural Language Processing).
Abordarea, din punctul de vedere al tehnologiei în UiPath, se bazează pe .Net și Windows Workflow Foundation și constă dintr-un design vizual, o serie de layouturi (Sequence, Flowchart, State Machine), în care pot fi conectate un set de activități specializate (extensibil, adică un set oficial de bază și posibilitatea de a adăuga activități noi) care asigură tipuri comune de operații, integrări cu diverse platforme, aplicații sau alte tehnologii, majoritatea având posibilități de interacțiune cu elemente vizuale din web browsere sau aplicații desktop.
Există chiar și posibilități de recording care înregistrează activitatea unui utilizator pe ecran și produce tot conținutul necesar cu tot cu posibilitatea de playback și execuție.. Este funcție a componentei de bază de UI Automation care include mecanismului de scrape (a culege date și informații de pe suprafața… a mai orice, inclusiv a textelor din imagini, folosind OCR - Optical Character Recognition).
În domeniul nostru există câteva elemente care necesită atenția, abilitățile și "școala" unui programator:
când automatizăm munca unui utilizator real, avem nevoie de o perspectivă de proces (ca secvență de operații succesive, alternative, condiționate sau provocate de anumite evenimente de executat (spre exemplu: preluarea datelor din site-ul intern de HR, verificarea situației în aplicația de cheltuieli și trimiterea unui e-mail celor care mai au de rezolvat câte ceva);
nici un proces nu e complet până când managementul de excepții posibile nu este făcut (spre exemplu: dacă automatizarea mea procesează date dintr-un fișier Excel, ce se întâmplă când fișierul nu există?);
aproape întotdeauna există soluții alternative pentru a rezolva o aceeași problemă și e necesar să distingi soluția cea mai bine adaptată contextului (spre exemplu: pentru un site care oferă o interfață REST, ai posibilitatea de a folosi scrape sau de a le cere printr-un apel de API);
evaluarea riscurilor unor operațiuni și validarea, acolo unde este cazul; cu alte cuvinte să verifici dacă ceea ce trebuia să se întâmple s-a și întâmplat sau că o adresă e adresă de mail și nu altceva;
nevoia de a extinde domeniul acolo unde trebuie. Putem invoca direct cod și avem integrare chiar și cu Python, folosit cu precădere în context NLP și AI sau în construcția de activități noi de adăugat în workflowuri (componente reutilizabile - avem și un marketplace specializat numit Go!: http://go.uipath.com);
izbânda de a fi atins componentele reutilizabile, abilități de modularizare, secvențiere, paralelizare. Ca în orice breaslă, ne place să avem ezoterismele noastre;
bunele practici specifice programării (de la convenții de nume la documentarea pașilor);
diversitatea domeniilor de aplicabilitate cere să privim imensitatea de sisteme și aplicații din perspectiva pragmatică, speculativă și "interesată" a programatorului care vrea să le exploateze sau să le integreze și să obțină ceea ce e necesar din punct de vedere al datelor sau al flow-ului de execuție din "afară";
atenția acordată modelării tranzacționale, scalabilității, schedulingului;
o metodologie specifică menită să acopere toate cele de mai sus pentru a le da greutate, soliditate, acoperire ("what-if"-urile acelea care enervează pe forumuri și social media sunt ultra-importante dincoace);
o obișnuință legată de peer-review, lucru în echipă. La UiPath niciodată nu vei ști tot, important va fi mereu cum afli ceea ce nu știi și, în 90% din cazuri, există cineva prin preajmă;
Diferența și plăcerea majoră față de experiențele anterioare sunt date chiar de vastul spectru pe care-l atingem cu dezvoltarea RPA. Apare mereu ceva nou, mereu dai de ultimele năzdrăvănii de pe piață, nicăieri înainte nu am resimțit atât de mult libertatea de a explora prin tot ceea înseamnă platforme, sisteme sau aplicații, de a mă specializa în unele dintre ele (atât cât să pot îndruma pe alții) sau de a le încerca pur și simplu.
În același timp îmi pare că toată experiența mea anterioară (deloc de lepădat) a convers cumva natural către a aceasta: să-mi pornesc robotul ,să văd cum deschide și închide site-uri și aplicații, se autentifică automat în ele, scanează documente, poze, extrage tot ce-i trebuie, citește și trimite mailuri, iar eu în timpul acesta doar să privesc. E practic un festival pentru leneșul din mine care chiar asta vrea să vadă: muncă făcută de una singură, de câte ori e nevoie! În orice zile și la orice ore survine nevoia.
Se spune ca mulți dintre oamenii care inovează sunt oameni leneși, pentru că mereu caută moduri în care să muncească mai puțin. Poate că ar trebui sa punem un titlu de recrutare "Se caută leneși". Dar, de fapt, RPA e toolul care ia această "externalitate pozitivă" a lenei și o transformă în virtute asumată. Ne mândrim să facem munca oamenilor mai rapidă, mai ușoară și mai satisfăcătoare. Pentru că în dezvoltarea RPA, acesta e scopul final.
Va invit sa incercati si voi UiPath, varianta de Community e free: https://www.uipath.com/freetrial-or-community