Tehnologiile SAP ABAP constituie întotdeauna o provocare din perspectiva ecosistemului și a apropieri cu zona de business. Am avut o discuție interesantă alături de:
Adrian Iancu - SAP ABAP Developer @ MHP,
Călin Pop - ABAP Programmer @ MHP,
Am început cu o scurtă introducere din partea fiecărui invitat
Călin Pop: Momentan, lucrez la un proiect mare. Dezvoltăm pachete software care să fie compatibile cu tehnologia cloud. Pentru clientul cu care lucrez acum, dorim să înlocuim informația și sistemele legacy, astfel încât să poată rula în cloud. Pentru a realiza acest lucru, am folosit ultimele principii și produse SAP. În ultimii ani, am reușit să construim aproape 20 de aplicații menite să înlocuiască vechile aplicații ale clientului. Clientul nostru construiește prototipuri pentru mașini de curse, de exemplu. Clientul are multe aplicații, dar acestea nu funcționează pe tablete sau telefoane, deci migrarea lor în cloud a fost esențială. Azi, echipa mea a lansat un produs la care s-a lucrat mai mult de un an, ceea ce a presupus o implementare mai robustă pentru obiectivele curente ale clientului.
Adrian Iancu: Ultimul proiect la care lucrez este tot pentru Porsche. Este un proiect ce folosește ultimele tehnologii, ceea ce mi-a permis să interacționez și cu ultimele modele de mașini. Proiectul a presupus și mutarea aplicației și a rapoartelor pe o platformă mai modernă, bazată pe cloud.
Care sunt noutățile aduse în limbajul SAP ABAP?
Călin Pop: Dacă ar fi să trecem în revistă o scurtă istorie a ABAP, putem afirma că totul a început în anii 1980 cu rapoartele. Apoi, în 1990, am introdus funcționalități procedurale și integrări cu baze de date. În anii 2000, a fost implementat OP, iar în 2012 am scăpat de vechiul IDE și am început să folosim Eclipse ca orice alt programator Java. În 2015, devine populară HANA, precum și necesitatea de a calcula datele în memorie și de a le transfera mai repede. În mediul de la ora actuală, clienții noștri rulează totul on premises, dar scopul dorit este ca toate sistemele să fie în cloud. Clienții noștri încă folosesc sisteme on-premises, dar ei se integrează cu cloud deasupra sistemelor lor. Pentru un programator ABAP clasic nu este greu să învețe ABAP cloud. Implementarea se poate face doar în SAP. SAP HANA a dezvoltat o platformă în 2018. Era vorba de platform-as-a-service. SAP avea trei strategii: on-premises (unde noi cumpărăm serverele și le asigurăm mentenanță), cloud privat (are aceleași funcționalități precum sistemul on-premises, dar componenta hardware se află în cloud) și cloud public (se bazează pe SAP, dar toate actualizările se fac pentru toți clienții deodată). Prin cloud public, beneficiați de cele mai noi actualizări fără probleme.
Adrian Iancu: Pentru domeniul Digital Manufacturing (manufacturare digitală), SAP are actualizări la fiecare patru luni luni. Cum eu vin din zona C#, atunci când am început ABAP, am întrebat pe cineva de la ce vine SAP. Mi se părea că regresez și că folosesc ceva similar cu FoxPro. Colegul a spus că SAP vine de la "Suffer and Pain" (suferință și durere). Totuși, SAP a evoluat, iar acum este compatibil cu cloud. În cele din urmă, toți vor fi nevoiți să se îndrepte spre cloud.
Bianca, care sunt noutățile din Spring?
Bianca Moga: Spring se integrează acum cu GraphQL, ceea ce e grozav, deoarece presupune efort mai redus. Sunt mult lucruri noi. Așa cum știți, Java introduce funcționalități noi la șase luni. Avem implementări mai vechi on premises, dar ne îndreptăm spre cloud și nu avem nevoie de o copie 1-la-1, ci, mai degrabă, să îmbunătățim ceea ce avem. Spring a introdus registre (records), blocuri de text (text blocks), colectori (gathers/gatherers) pentru surse de date continue (sunt colectori care sunt potriviți în cazul problemelor de memorie). Mai mult, dacă acum scriem metoda main direct, nu trebuie să introducem nicio clasă.
Dacă ne gândim la SAP și Java, cum implementați logica de business?
Bianca Moga: Ca programator Java, când trebuie să implementezi ceva, singurul lucru la care te gândești este codul. Nu există altceva.
Călin Pop : Cea mai mare provocare nu este scrierea de cod. Provocarea este să înțelegem nevoile clienților. Există o mare probabilitate că avem deja o soluție standard care poate deservi nevoile clienților. Avem ERPs. Avem soluția standard pentru o varietate de probleme de business și domenii, dar putem lua blocurile de LEGO ale unei implementări și să le recombinăm. Fie livrăm produsul ca un șablon (dar e greu să îl actualizăm sau să îl completăm), fie livrăm cod standard pe care îl ajustăm nevoilor clienților. Nu este atât de ușor precum este apelarea unei librării, însă viteza de livrare este destul de mare.
Adrian Iancu: Este nevoie de câțiva ani pentru a avea un produs final, deoarece testarea și debitele istorice trebuie ambele abordate. Pentru clienții care folosesc doar sisteme on-premises, vom face integrarea în Producție doar după ce testarea este terminată, iar clientul aprobă modificările. Puteți crea logică de business cu Java, însă vine ABAP care înseamnă "Advanced Business Application" (aplicație avansată de business). Prin urmare, ABAP trebuie să fie nivelul următor. ABAP funcționează cu un volum foarte mare de date, este foarte rapid, acesta fiind motivul pentru care sunt încă dedicat acestui domeniu și nu limbajului C#.
Poți trece la ABAP de la orice limbaj?
Adrian Iancu: Așa cum a spus și colegul meu, problema nu ține de limbaj. Orice programator Java poate învăța limbajul ABAP, doar că pentru a învăța logica de business este nevoie de ani buni. Este vorba de un mediu de lucru. Nu avem un om care să le știe pe toate. Pentru toate celelalte, îl avem pe Călin.
Aplicați tipare de design (design patterns)?
Călin Pop: Da, chiar mult. Ultimul pe care l-am realizat a devenit standard pentru toate aplicațiile pe care le construim. Folosește Command Pattern, dar și Chain of Responsibility și Singleton. Am învățat Java la universitate și, ulterior, am trecut la ABAP în câteva luni. Așa cum a spus colegul meu, este o cutie pentru care nu trebuie să înveți ceva nou. Tu deja știi conceptele și doar trebuie să le asociezi cu termenul corespondent ABAP. Ceea ce este bazat pe obiecte (object-oriented) rămâne bazat pe obiecte. Acum câțiva ani, am avut de scris un program Java și a fost interesant să regândesc cum funcționează Java. A fost ușor să trec de la un limbaj la altul.
Bianca Moga: Folosesc multe tipare de design: Builder Factory, Singleton, The Decorator, The Visitor, totul.
Folosiți AI? Copilot?
Bianca Moga: Da, folosim. Suntem încurajați să folosim AI. Eu folosesc Copilot. Face greșeli, dar acesta este motivul pentru care noi suntem în control, pentru a repara și schimba orice dorim. Ajută cu adevărat când ești blocat sau în pană de idei. După ce Copilot sugerează niște idei, știu cum să merg mai departe. Copilot este precum consultantul pe care nu l-ai avut vreodată.
Dacă ați avea interviu cu cineva, ce întrebări i-ați pune?
Bianca Moga: De obicei, îi rog pe oameni să descrie ceva la care au lucrat. Apoi, după ce îmi fac o idee legată de ceea ce știu, pun întrebări tehnice ca să aflu ce și cum au făcut ce au făcut. Îi întreb despre integrări API, despre performanță, despre provocări. Vreau să înțeleg cum gândesc. Apoi, le pun întrebări și aprofundăm subiectele. Unii pun întrebări despre lucruri complexe, dar eu nu cred că acest lucru este necesar, deoarece acestea trebuie învățate la locul de muncă.
Călin Pop: Pun întrebări legate de proiecte, ceea ce îmi oferă o fundație solidă de unde să încep. Mă uit, de asemenea, la cât de bine se potrivește persoana cu echipa. Mereu mă întreb dacă aș putea munci cu acea persoană sau nu.
Adrian Iancu: Ceea ce Călin a spus este adevărat, deoarece și eu am avut interviu cu el. Opinia HR este importantă, dar apoi este important să oferi atenție și cunoștințelor de specialitate, fără a intra în detalii extrem de specifice. Dacă există doi candidați care sunt foarte asemănători, fie întrebăm HR-ul, fie mergem pe părerile personale.