Povestea unui proiect (II)

Wall of text, luaţi o cafea  dacă vă interesează detaliile tehnice sau ignoraţi articolul complet. Simt nevoia să refulez. Deşi înjur din răsputeri la birou, mai e loc de încă zece ori pe atîta. Drept urmare, nici articolul de faţă nu va fi academic, ba foarte dimpotrivă. Conţine argou şi jargon de calitate îndoielnică.


Proiectul la care încă lucrez a început prin noiembrie 2017, undeva spre sfîrşitul lunii. Era baban, dificil şi nou, chestie care pe mine mă impulsionează. Ce era hardughia pe care o aveam de proiectat şi construit? Un sistem care trebuia să testeze automat nişte plăci complexe, posesoare a 4000+ de componente şi de modul cu ceva Linux pe el. Cum nu aveam nimic altceva de făcut, m-am apucat de studiat şi am trasat în mare o arhitectură, pe baza datelor pe care le aveam în momentul respectiv. În ianuarie deja aveam o variantă de schemă şi PCB.

Prin februarie s-a făcut o şedinţă de proiect în care s-au mai adăugat cîteva cerinţe (tot în mare, adică nimic precis şi la obiect), suficient cît să se aleagă praful de prima variantă de arhitectură. Pun alta la punct, o altă şedinţă, iar se alege praful. De data asta măcar era mai clară situaţia. Mi-am băgat pula în ea de arhitectură, lăsîndu-mi şeful să se ocupe el, în timp ce eu aşteptam documentaţia de la imbecilii ăia de bavarezi ca să ştiu măcar ce vor să măsoare şi în ce limite. Nota bene: pînă în clipa aia susţineau sus şi tare că testează manual toate plăcile pe care le produceau şi livrau.

Se face sfîrşit de februarie, noi avînd ca deadline sfîrşitul lunii august. Deja încep să mă enervez, fiindcă rămînea mult prea puţin timp pentru tot, în condiţiile în care lucram doar trei inşi la proiect. Vine iar şedinţa, aflînd că cerinţele preliminare vor fi gata la sfîrşitul lui martie, iar cele definitive în… iunie! Eu am interpretat faza asta ca rea voinţă şi că se încearcă să ni se bage beţe în roate pentru a nu putea duce la bun sfîrşit. Mi s-a mai întîmplat.

Mă apuc să stau de vorbă cu şeful şi coordonatorul din Frankfurt, concluzionînd la unison că abordarea „clientului” e complet inacceptabilă, neştiind practic ce vor. Am luat împreună decizia să studiem schema plăcii şi să vedem ce şi cum poate fi testat. Ne-am legat doar de conexiunile exterioare, practic mufa principală, în timp ce handicapaţii ăia beţivi din Bavaria visau avioane cu testarea culorilor ledurilor de pe panoul frontal. Leduri la care nu se uită nimeni vreodată, devieri fără noimă de la subiect, ne futem timpul aiurea cu căcaturi care nu contează.

Vine martie. Pula cerinţe, dar mai e o şedinţă în care le-am zis răspicat că vreau să am gata plăcile înainte de iunie. Mamă, ce s-a mai rîs cînd au auzit! Păi cum să termini, dacă nu ştii ce ai de făcut? Ba tocmai că ştiu, spinteca-v-aţi sufletele cu pulile între voi, mă piş pe cerinţele voastre. Le-am zis că nu au habar cum lucrez, fiind susţinut inclusiv de Frankfurt pe tema asta. Dacă am văzut că aşa stau treburile, am făcut repede o şedinţă cu şeful, stabilind exact ce va face tot ansamblul ăla de trei plăci, lăsînd inclusiv o variantă de rezervă (mai cheală de opţiuni), în caz că eşuăm cu prima.

Aprilie a fost lună grea, schimbînd vreo 3-4 designuri, venindu-mi ideea de a folosi acelaşi controller din ECU-rile de ABS/ESP. Speram la ceva suport de la echipele de software care lucraseră cu ele, deci nu era chiar start de la zero. Odată stabilit controllerul, designul a mers strună, iar în mai au venit plăcile echipate, numai bune de scris cod şi verificat că toate modulele merg cum trebuie. Evident că am dat cîteva gherle în design, fiind multe căcaturi cu care nu mai lucrasem vreodată, presiunea timpului, dorinţa de a face cît mai mult cît mai repede etc. Tipic R&D, întîi scoţi ceva şi vezi dacă şi cum merge, apoi corectezi greşelile.

În iunie am scris la cod şi la documentaţie pînă mi-au căzut mîinile. Trei săptămîni a durat pînă am scos prima revizie de cod, ajutat de un guru cu care am mai colaborat în trecut (săr-na, Vlad!), apoi am plecat în concediu liniştit, ştiind că-mi terminasem treaba şi că eventualele buguri puteau fi rezolvate relativ repede.

Vin din concediu pe la jumătatea lui iulie. Mi-am terminat treaba, ha? Aflu că cineva trebuie să facă fişierele de scripting cu care se stabileau paşii de testare, limitele de test, crieriile de validare etc şi că e nevoie de documentaţie pentru treaba asta. Fiind codul meu, am zis c-o fac eu, sfîrşind prin a scrie băşitele alea de scripturi de la zero.

Dacă are cineva impresia că scriptăraia a mers strună… băi, te înşeli cumplit! Am dat de probeleme din prima sau a doua zi, fiincă muista aia de placă trebuia controlată cu nişte comenzi de Ethernet. Documentaţia era la fel de prezentă ca cerinţele de la începutul proiectului. Abia după lungi şi repetate cerinţe am primit un pdf, cu menţiunea că e „preliminary”. Aşa a fost, trei sferturi din comenzile descrise acolo n-aveau nicio tangenţă cu realitatea. Dau mailuri, după vreo două săptămîni se repară cîteva din căcaturi, altele (critice) nu au fost rezolvate nici pînă azi, 20 februarie 2019.

Decidem să ignorăm ce nu merge încă, concentrîndu-ne asupra celor ce mergeau. Aflu că nu merge comunicaţia, placa îşi dădea reset singură, aleator, de nebună, unele comenzi răspundeau cînd şi dacă aveau chef. Dacă vreau să meargă bine, tre’ să mai programez nişte băşite de cipuri. Fute-m-aş în norocul meu… Hai, o fac şi pe asta, merge şi-aia, merge şi-aia; bune toate. Prima revizie a fişierelor de comenzi e gata pe la început de august, dîndu-le ăstora mai importanţi un mail cu problemele găsite în softul de pe placă.

Cînd consideram că e gata, „a, păi ne-am gîndit să facem nişte poze cu semnalul pe osciloscop”. Bă, să-mi bag pula. Colegul care se ocupa de softul de PC, cel în care urmau maimuţele să apese un buton, a rezolvat repede treaba. Eu mă chinuiam cu mizeria aia de aerotermă, încercînd să găsesc un mod stabil de trigger, dar care să surprindă şi un semnal futut. Trei săptămîni, gata august, fişierele mele încă în lucru. Decopăr alţi gîndaci, însă numai comportamentul, nu şi sursa lor. Unele comenzi merg doar dacă sînt trimise la interval mai mic de 0,2 secunde; cum morţişorii voştri aţi testat voi alea manual, mă? Fucking workarounds, mi-am blestemat zilele pînă am găsit o metodă de ocolit problemele. Pe ăla sau ăia care trebuia să le rezolve îi durea fix în miezul ţevii.

Vreo două sau trei zile l-am avut pe coordonatorul din Frankfurt printre noi, în ajutorul rezolvării celei mai importante etape din tot proiectul: instalarea Linuxului şi apoi a aplicaţiei de software pe placa aia jegoasă, dorită de bavarezi a fi automată. Fusesem avertizaţi că, dacă se întîmplă ceva naşpa în timpul instalării, placa e kaput. Că IP-ul, odată setat, rămîne aşa pentru totdeauna. Circumspect şi destul de sceptic în general, am zis că nu are cum, doar nu e memorie OTP. Sau…? Întrebăm în Frankfurt un alt gagiu, ăla încearcă să ne explice ca pentru tălîmbele cu care avea de-a face zilnic. Îi spun omului să nu-şi mai piardă timpul, eu fiind utilizator casnic de Linux de nişte ani buni, deşi nu foarte avansat. Uşurat, gagiul îmi explică în mare că nici vorbă de OTP, e un flash de 4GB gen alea din stickurile de memorie, povesteşte despre căcatul ăla de program cu care instalam noi chestiile şi-mi devine foarte clar că pot abuza placa aia cum şi de cîte ori vreau.

August s-a dus pe pulă, la fel ca termenul primit. Aşadar, primele două săptămîni din septembrie au fost alocate de mine strict pentru automatizarea instalării. Evident că şi aici am dat de probleme, fiindcă programul de copiat fişiere nu se închidea singur, ori ăştia voiau să fie apăsat un singur buton. Las’ că rezolvă tata. Fac un batch cu verificări, revenire la setări din fabrică în caz de, ucid chestii blocate – mergea strună! Inimaginabil de bine şi peste ce ne ceruseră, gîndindu-mă că-i trece vreodată prin cap maimuţei care dă în butoane ca la păcănele şi omoară imaginea aia pe la jumătatea copiatului.

În sfîrşit, e gata tot. TOT! Septembrie 24-26, hai în bavarezia să le instalăm pe rack tot ce trebuie şi să le explicăm cum funcţionează, după ce ne futuseră la cap că au vreo 500 de plăci care trebuie testate urgent. Copiez de pe laptop ditamai tîrlăul de fişiere, instalez, fac setările şi cer o placă din alea 500. A, păi ştii, n-avem. Se duce unul şi găseşte o alta, în alt departament. „Una cheală n-ai?”, zic, ştiind că-i bărbieresc definitiv to ce avea pe ea. N-are, dar poate fi abuzată. OK. Dau drumul la rack, pornesc batchu’ de chelit şi PULA! Eroare. Eroare în germană. Batchul meu muncit nu funcţiona sub nicio formă. Rămîn perplex. Mut căblăraia la mine pe laptop, dau drumul: surpriză! Totul rulează impecabil. Batchu’ meu e făcut pentru engleză, cine dracu’ se gîndea că ping răspunde complet altfel în germană? Bine, mă, futu-vă în limbă, hai că modific.

Îmi ia juma’ de oră să fac un algoritm pentru detectat axe sau alianţe, văd că trece de ping, uraa! m-apuc de chelit… Programul ăla de instalat înţepeneşte suav, activitatea de pe reţea se duce la nani şi pula placă. Mă rog, am resuscitat-o, dar nimeni nu înţelegea de ce nu merge. O fi de la RAM? Păi rackul ăla are 8, din care aproape 3 ocupaţi, iar fişierele au sub 2. Cînd căscăm ochii mai bine, rackul ăla nenorocit era pe 32 de biţi. 4GB stăteau de formă, iar din ăia funcţionali doar 1,2GB erau liberi, cu aproape 50% mai puţin decît ne trebuia. Superb, lasă că sunăm la IT să pună Windows7 pe 64. Bă, da’ de ce nu puneţi Windows 10, dacă tot se trece la ăsta? A, păi testerele astea au alt regim etc. Ultima parte din ziua de luni a fost efectiv pierdută, neavînd cum folosi PC-ul respectiv.

Nici marţi n-a fost mai brează. Nu mai ştiu exact ora, dar oricum după prînz, primim vestea bună că s-a pus Windows 7 64 şi că putem folosi dulapul. Într-adevăr, s-a pus W7, doar că acum nu mai porneşte programul ăla deloc. Întreb unul de prin zonă dacă nu ştie de unde pot face rost de nişte păcură, să-i dau foc şi să ardă mocnit. Dă-i şi sapă iar, constatăm că nu mai avem Java. Pierdem restul zilei căutînd versiunea potrivită. Dăm să instalăm, nu avem drepturi. Cerem drepturi, mai trece ceva timp. Instalăm Java. Merge, transferă ce trebuie, dar nu se mai închide. Modifică iar la batch. Nu apuc să termin în timp util. Hai să-ţi arăt pe laptopul tău. W7 64, 4GB de RAM. Mi-au căzut cîteva puli din gură, în neaoşa limbă strămoşească. Îmi zice că are un laptop cu W10, proaspăt sosit de la IT. OK, hai să-ţi bag pe alea ce ai nevoie. Pula drepturi, a doua zi aveam zbor înapoi, i-am arătat la mine şi i-am zis să mă caute cînd are întrebări.

Octombrie. Se face anul de cînd am primit proiectul, cerinţele alea din iunie tot nu le-am primit, mailurile repetate cerînd să fie rezolvate problemele din soft au rămas în aer… M-am concentrat pe batch, reuşind să-l fac să meargă în ambele locuri. La ei, din păcate, nu a mers închis programul de instalare decît cu kill. Aveam voie? Habar n-am, pînă acum nu s-a plîns nimeni, iar dacă se plînge cineva o să-i retrimit mailurile din septembrie/octombrie. Cam terminasem, aşa că le-am zis să-l folosească şi să-mi trimită toate problemele de care se izbesc.

N-am mai auzit de tester vreo lună şi ceva. Mă cam plictiseam şi am zis să ajut la nişte drivere low-level pentru Automotive Ethernet. În loc să vadă dacă merge bine muistul ăla de dulap, bavarezii au luat decizia să ne concentrăm pe o altă inutilitate: testarea interfeţei de Automotive Ethernet. Nu e niciun ECU care s-o folosească, n-au fărîmă de specificaţii, dar TREBUIE!! Şi trebuie URGENT!!! Bag pula în priorităţile lor, cine sînt eu să decid unde arde? Mi-am mîncat două luni din viaţă adaptînd nişte drivere date de un coleg de clădire (mersi, Flaviu!), găsind şi alţi gîndaci, inclusiv HW – fute-m-aş în ea de viaţă! Pînă la urmă i-am dat de cap şi am reuşit o comunicaţie funcţională, bidirecţională, fără stiva TCP/IP care mă depăşeşte complet. Bavarezii insistau să scriu eu stiva, moment în care am cedat nervos şi le-am zis de la obraz că eu sînt electronist, nu programator. În ultima săptămînă din decembrie am trimis codul şi documentaţia, spălîndu-mă pe mîini.

N-am mai auzit nimic de rack pînă pe la sfîrşitul lui ianuarie. Repet, era urgent din august şi neatins din octombrie, de cînd îl făcusem să meargă. Mă contactează doi să le explic cum merge. Mi-am cam pierdut cumpătul, aplicaţia de pe PC e un panou cu literalmente două butoane: START şi STOP, în pula mea!! Ce e aşa greu?! Intru remote, dau start şi pula, evident că nu merge. Osciloscopul l-ai pornit? Nu, trebuia? Aaa, nu, mă, l-aţi cerut doar aşa, să fie acolo şi să dea impresia că ştiţi ce faceţi. Connect! Merge? Merge! Hai sictir atunci.

Trec vreo două zile. Bă, nu mai merge ăla, moare la a doua placă. Bă, cum dracu’ la voi nu merge mai nimic şi la mine zbîrnîie? Ce căcat îi tot faceţi? Copiez de la mine tot încă o dată, la mine vrea, la bavarezia ba. Folosim în developer mode. Merge? Merge. Da’ uite că dă fail! Lasă-l în pula mea de test picat, că n-are a face. Ai ploturi pe osciloscop, uite, le vezi? A, da.

Februarie 2019. Ploturile sînt inacceptabile, nu stă nimeni să se uite la ele, ne trebuie o soluţie care să valideze automat. Să citească rise/fall, minim/maxim, să se facă, să se dreagă. Sînt luat la pulă că unde sînt specificaţiile de test, că de unde am scos eu limitele puse prin fişierele de script? Coaie, sînteţi cu muia? Vorbim cumva de specificaţiile şi limitele de măsurare pe care NOI trebuia să le primim de la VOI, înainte de a ne apuca de proiect? Bine, domnilor, dacă aşa stă treaba, din clipa aia nu mai fac nimic (băi dar nimic) din proprie iniţiativă şi nu mişc un cap de pulă pînă nu mi se spune exact cum, cînd şi de cîte ori. E urgent, a? Staţi aşa, că vă rezolvă tata. Adun într-un calup toate mailurile adunate şi rămase fără răspuns. Big boss la CC. Send. Îmi văd de treabă la un alt proiecţel intern, lucrînd relaxat şi liniştit.

A doua zi primesc un update la căcatul ăla de soft pe care-l cerusem încă de prin 2-3 august, testez, chestiile cerute merg, doar că… nu merge nimic din toate celelalte. Mail de informare, inclusiv ploturi pe osciloscop în care diferenţa dintre versiuni e cît se poate de clară. Mi se repetă de nu ştiu cîte ori că la ei merge, dar nu mi-a arătat încă nimeni o versiune live care chiar funcţionează. După asta am aflat că softul ăla futut are o „mică schimbare”: în loc de un byte de stop acum sînt doi. Ce înseamnă asta? Tradiţionalul „sugi pula”, ce să urmeze? Am de rezolvat compatibilităţi futute, de rescris o bună parte din comunicaţie, de rescris toate miile de comenzi din paşii de test, de reverificat tot, de modificat documentaţia etc.

De o săptămînă mă rog de ei să-mi dea un exemplu de comunicaţie funcţională cu noua versiune. Abia ieri m-a căuat cineva legat de asta, fără vreun exemplu concret. Aşa, din vorbe, pot zice şi eu că merge perfect şi că nu le merge doar lor, mă crede cineva? Dacă mă crede fără dovezi e un idiot. Tot ce-am obţinut ieri a fost un pom de Crăciun care clipea fără noimă sau vreo explicaţie. Nu i-am putut da de cap, mi-am băgat pula, dimineaţă mergea de parcă nu se întîmplase nimic. Jur că se comportă ca o pizdă de-aia cu aere, de-o întrebi de ce e supărată şi-ţi răspunde că „dacă nu ştii, nici nu-ţi mai spun”. Du-te-n morţii mă-tii, atunci.

Azi, mai pe la prînz, am reuşit performanţa ca, împreună cu un tip de la ei, să avem trei setupuri identice cu trei comportamente diferite. M-am amuzat teribil cînd a încercat să-mi arate că  la el merge perfect, reuşind să obţină exact situaţia de pe biroul meu. Şi-a futut una din plăci, mîine speră la ajutor din partea mea s-o resusciteze. Are documentaţie, să pună mîna să citească singur, e scris ca să înţeleg inclusiv eu, deci poate pricepe orice altă maimuţă.

Un altul mă ia pe chat cu ceva întrebări legate de nişte documentaţie trimisă săptămîna trecută, fix cînd voiam să ies la o ţigară şi să mă mai calmez. Întrebarea, fiind vagă, a mai necesitat nişte clarificări pentru mine. A răspuns după vreo 10 minute, timp în care aveam timp să fumez, dar am stat cu ochii în fereastra aia ca un retardat. La a doua întrebare pusă am scris răspunsul şi am plecat la fumat, fără să-l trimit. M-am întors, am trimis răspunsul (mai incomplet, aşa, să vadă cum e), logout, rezolvat alte mici căcaturi şi acasă. Păi pînă cînd?

Momentan aştept să văd ce decizie o să fie luată. Eu ştiu clar ce am de făcut şi am nişte variante destul de elegante de rezolvare, dar de ce să-mi mai fac nervi şi să mă agit aiurea pentru cretinii care nu-şi fac treaba? Uite aşa, în loc să muncesc, la serviciu scriu mailuri şi acasă-mi vărs nervii pe blog.

Va urma.

PS: Nu-mi cer scuze pentru greşelile de punctuaţie şi gramaticale. Nici n-o să le corectez.

Reclame
Etichetat cu: , ,
Postat in Crize de nervi

Ai ceva de zis? Bagă mare:

Completează mai jos detaliile tale sau dă clic pe un icon pentru a te autentifica:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare /  Schimbă )

Fotografie Google

Comentezi folosind contul tău Google. Dezautentificare /  Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare /  Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare /  Schimbă )

Conectare la %s

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

%d blogeri au apreciat asta: