Testimoniale

Bogdan Dumitru, absolvent Caltech, software engineer Cadence

Sunt 6 ani de când n-am mai participat la Olimpiade, și nu pentru că n-aș fi vrut, doar pentru că, prin definiție, ele se adresează numai elevilor de liceu. Între timp am trecut prin facultate iar acum lucrez. Am avut destul de multe cursuri de calculatoare, am lucrat la câteva proiecte de cercetare, iar acum scriu software pentru industrie.

După 6 ani și ceva experiență acumulată (cred eu), pot să spun că Olimpiadele “si-au făcut efectul”. Target-ul olimpiadelor — algoritmi, structuri de date, optimizări, idei creative — este target-ul de bază al oricărei aplicații din lumea reală. Orice proiect pe care l-am văzut este de fapt o scalare a unei probleme de Olimpiadă bine gândită.

Are nevoie de design, așa cum și problema are nevoie de etapa de gândire dinainte de cod. Design-ul se poate schimba în timp, trebuie să fie versatil, că și la problema de olimpiadă, când nu vrei să rescrii tot. Are nevoie de structuri de date dedicate, așa cum și problema are nevoie de arbori sau de tipuri particulare de grafuri. Are nevoie de optimizări și algoritmi buni, așa cum și sursa de olimpiadă trebuie să ruleze într-un timp foarte scurt. Bineînțeles, orice proiect din lumea reală e mult mai mare, se scrie în luni de zile de către o echipă de câțiva oameni. Dar problemele te care te lovești sunt până la urmă versiuni mai mari ale problemelor de Olimpiadă. Din nou citiri, validări, prelucrări, cazuri limită, algoritmi, complexități. În timp ce scrii soft-ul, ca și la olimpiada, trebuie să te întrebi: să folosesc liste sau heap-uri? cât durează să implementez parcurgerea asta? e mai bine să scriu repede un N^2 sau am timp să scriu NlogN? cât de des o să fie apelată funcția asta? să preprocesez datele astea sau să le calculez on the fly?

Olimpiada m-a ajutat enorm să-mi dau seamă ce înseamnă de fapt CS — Computer Science. În lumea reală, apar și sistemele de operare și mediile de programare — multe distribuții, multe IDE-uri, multe feature-uri. Dar toți programatorii cu care am lucrat sau discutat sunt de acord că design-ul și algoritmii folosiți sunt cea mai importantă parte a proiectului. Ce limbaj folosești, în ce environment scrii — contează, sigur, dar în nici un caz atât de mult ca gândirea problemei. Tool-urile se învață repede, pe proiect. Și mai niciodată nu contează o optimizare la nivel de artificiu de limbaj în fața unei optimizări la nivel de algoritm. Softiștii buni învață repede să folosească un tool la 80% din capacitatea lui. N-or să știe pe dinafară mii de feature-uri, dar o să știe ce se poate face, și unde să caute repede ce nu știu deja. Însă or să aibă o idee foarte bună despre ce ar însemna un algoritm bun pentru modulul respectiv și în cât timp l-ar scrie. Iar dacă va fi C++ sau Java sau un mediu visual, asta se decide în echipă. Tool-ul e exact atât, un tool, ideea poate fi scrisă cu mici modificări în orice astfel de tool.

Softiștii buni gândesc în idei, apoi “gandesc în C++”. Tool-urile sunt cool, au sute și mii de chestii mici și faine scrise pentru a-ți crește productivitatea. Dar singure nu rezolvă nimic, iar un algoritm rapid și scalabil valorează în practică cât o mie de funcții și shortcut-uri specifice unui tool particular.

Eu personal consider că Olimpiadele m-au ajutat foarte mult în formarea unei gândiri de softist/ inginer. M-au învățat să “vad problemele”, să împart o soluție pe nivele (așa cum împarți apoi obiectele în C++, de exemplu), să gândesc bucățile și interfețele dintre ele. Și să încerc să aleg acel

algoritm care oferă suficient de multa viteză, în suficient de puțin timp de implementare, cu suficient de puțină memorie. Adică trade-off-uri de care dai în fiecare zi ca softist.

Și înca ceva: să lucrezi cu cineva care știe ce spune și căruia îi place să lucreze cu elevii e mai mult decât esențial. Aici, fiecăruia cum îi e norocul. Eu am avut noroc… nu știu câte lucruri bune s-ar fi întâmplat fără Dana Lica, profesoara mea din liceu și gimnaziu. Nu știu dacă m-aș fi apucat de toată chestia asta cu calculatoarele de la bun început… Dar d-na Lica a fost acolo când a trebuit să fie și îi mulțumesc.

Citește mai mult

Cătălin Frâncu, absolvent MIT, software engineer Google

Olimpiadele au fost rampa mea de lansare în plan profesional. Fără prima mea olimpiadă pe sector din clasa a IX-a (unde era cât pe ce să nu mă calific), probabil n-aș fi ajuns nici la IOI, nici la MIT, nici la Google.

Mai pe larg, olimpiadele mi-au îmbogățit enorm viața profesională și personală, atât în liceu cât și după. Am cunoscut profesori devotați cu care am ajuns să colaborez și mi-am făcut prieteni buni cu care țin mereu legătura, deși ne vedem poate o dată pe an. Jumătate din CV-ul meu conține împliniri legate de lumea olimpiadelor.

Sigur, n-am mai fost la o olimpiadă de nouă ani, și lucrul ăsta se vede. De atunci, am învățat C++, Java, PHP, MySQL, Matlab, Lisp, Prolog, appleti, servleti și o droaie de acronime. Dar în ansamblu mă simt mai ruginit decât acum nouă ani, pentru că foarte rar am parte de o problemă care să mă provoace. Am tone de unelte, dar puțin de rezolvat.

Scăparea este în micile probleme de care mă izbesc în muncă mea de zi cu zi. Știu să parcurg un arbore? Știu să manipulez niște liste simplu înlănțuite? Știu să interclasez n vectori ordonați? Știu, pentru că olimpiada a făcut din lucrurile astea niște exerciții banale, indiferent în ce limbaj trebuie să le implementez. Uneori mă izbesc chiar de probleme mai grele (de exemplu, a trebuit să implementez propriul meu diff), care sunt adevărate cireșe pe tort.

După părerea mea, toate limbajele și mediile de programare cunoscute nu merită mai mult de un rând în CV. Dacă nu pot deveni fluent într-un limbaj nou în câteva săptămâni, atunci probabil informatica nu e pentru mine. Dacă scriu cod, dar habar nu am ce complexitate are, dacă mi-e totuna că O(n^2) este mai prost decât O(n), atunci în mod sigur informatica nu este pentru mine.

Limbajele vin și se duc, dar algoritmii rămân. Pascal nu mai știu, dar schemele logice am să mi le amintesc cât voi trăi.

Citește mai mult

Valentin Gheorghiță, absolvent Universitatea Politehnica București, student doctorant Universitatea Tehnică din Eindhoven

Acum, după 8 ani, privesc în urmă și încerc să-mi dau seamă la ce m-au ajutat olimpiadele. În primul rând, m-au făcut să văd lumea cu alți ochi. Am călătorit, am cunoscut oameni interesanți cu care am legat prietenii durabile. Și, mai mult ca orice, olimpiadele au constituit primii mei păși în carieră de inginer informatician.

În primii ani de facultate mă întrebăm la ce mă vor ajută cunoștințele acumulate. Faptul că am participat la olimpiade știam că m-ar putea propulsa într-o universitate americană, dar nu-mi doream acest lucru. Pe de altă parte, privind în România, toate firmele cereau C, C++, baze de date.

Apoi s-a dezvoltat internetul și din ce în ce mai mult se cereau Java, applet-uri, php, jsp-uri, asp-uri, și multe altele. Nicăieri, în ofertele de joburi, nu apăreau algoritmii.

În anii petrecuți în industrie am realizat cu ce am rămas de fapt de la aceste olimpiade – am învățat să gândesc sistematic, ca un adevărat inginer. Aici nu a trebuit să rezolv probleme mici în câteva ore, ci să dezvolt, împreună cu o echipă, aplicații complicate în câteva luni. Dar principiul aplicat rămânea același: design și implementare. Designul conține modul de rezolvare, structurile de date, algoritmii de rezolvare. Această e cea mai importantă și interesantă parte a unui proiect – greșelile care apar aici sunt greu de reparat. Implementarea se poate face în diferite limbaje, depinzând de cerințele clientului, de echipă de programatori. Totuși, cea mai mare parte a designul rămâne neschimbată.

După anii petrecuți în industrie am revenit temporar în universitate, dar de data această pentru a obține titlul de doctor. Aici, cel mai important e cum gândești. E important să fii pe picioarele tale, pentru că nu există un șef care să-ți spună cum și ce să faci. Partea tehnică a cercetării e cam același lucru cu cele trei ore petrecute în față calculatorului în timpul probelor de la olimpiade.

În final, pentru mine olimpiadele au reprezentat dezvoltare profesională și creare de networking.

Și aș vrea să închei prin a spune că, la fel ca întotdeauna, e important mediul în care lucrezi, sunt importanți oamenii pe care îi jur. mult, pentru olimpiadele timpul liceului acela e unul din momentele decisive alegerea drumului , e important existe oameni care-insufle dragostea dăruirea lor pentru ceea ce fac.

Citește mai mult

Radu Berinde, student MIT

ONI și în general olimpiadele de informatică au fost în centrul a tot ce am făcut de-a lungul liceului. Erau întotdeauna direcția în care mergeam, iar în viață e bine să ai o direcție. Mă uit acum în urmă și îmi amintesc cât de fericit m-au făcut toate olimpiadele la care am participat, toate lucrurile pe care le-am învățat și mai ales toți prietenii pe care mi i-am făcut. Mulțumită olimpiadelor, acum sunt studet la MIT, în SUA și am toate motivele să cred că mă așteaptă un viitor fericit.