Skip to content
Tags

Hackers, How Do They Work?

10 January 2011

Hacker Cup este un nou concurs de algoritmică organizat de Facebook cel mai prost organizat concurs de algoritmică. Și cred că “hacker” din titlu e de vină.

În primul rând să clarific, deoarece este ceva confuzie cu terminologia. Hacker, cel puțin în acest context, nu se referă la nenea care îți sparge contul și îți fură datele, ci pur și simplu la un programator pasionat. Din câte am înțeles, o parte importantă din cultura Facebook este să meșterești la ceva și apoi să-i dai drumul pe interneți. Hacker Cup se vrea a fi un concurs de algoritmică, nu de altceva. Și cum eu m-am tot distrat în ultima vreme cu Puzzle Master, am zis să încerc și ăsta. Nici nu vă închipuiți cât de plină de fail a fost runda de calificări. Și spun asta strict obiectiv. Am să explic de ce.

Treaba mergea cam așa – runda ține 72 de ore. Ai 3 probleme. Citești enunțul problemei, implementezi soluția. Când ești convins că e OK, ai un link de unde poți downloada un set de date. În momentul în care ai accesat link-ul, pornește un cronometru. Ai 6 minute să iei setul de date, să îl treci prin programul tău și să pui rezultatele înapoi pe site. Dacă a expirat timpul – ai pierdut problema. Dacă ai încărcat rezultate greșite, la fel.

Fail – treaba cu 6 minute nu era explicată suficient de bine. Asta nu o zic eu, pentru că eu am citit cu atenție cerințele și am știut din start regula, dar o mie de participanți s-au plâns că au luat un set de date să vadă cum e, au fost să-și facă un sandwich și pe când s-au întors s-au trezit că au pierdut punctul pe problemă.

Fail – unii s-au plâns că, deși au trimis soluția înapoi după un minut, cronometrul zicea că timpul a expirat deja.

Fail – download-ul nu merge cu Google Chrome. Dacă ai Chrome, dai click pe link și nu îți pornește download-ul, în schimb pornește cronometrul. Pierzi timp prețios până te prinzi care e faza.

Fail – regulile spun să încarci pe site atât răspunsurile determinate de programul tău cât și sursele programului. Doar că de fapt, în runda de calificare, nu trebuie încărcate sursele. Alte confuzii, alți participanți care în loc să încarce rezultatele și-au încărcat codul și au pierdut punct.

Fail – un leaderboard care în teorie ar trebui să arate punctajele în funcție de câte probleme a rezolvat fiecare participant și în cât timp de la începerea concursului (astfel încâ să poți vedea unde te situezi). În realitate, leaderboard-ul respectiv arată doar primii 10 participanți care au trimis soluții la toate 3 problemele – chiar dacă soluțiile sunt greșite.

Fail – tot leaderboard-ul ăsta arăta la un moment dat că pe locul 1 era un tip ce rezolvase 4 probleme. Concursul are doar 3 probleme. What?

Fail – după ce eu m-am chinuit să mă încadrez în limita de 6 minute și am și bușit o problemă din cauza asta (mi-a expirat timpul înainte să apuc să adun rezultatele), duminică anunță organizatorii că scot limita de timp de 6 minute la cererea publicului.

Eu, cum am fost ocupat cu altele peste weekend, am rezolvat problemele vineri seara. Și aș fi putut să reiau problema la care mi-a expirat timpul după ce au scos cronometrul dar nu am mai avut chef.

Și de fapt aici e problema. La hacker. Pentru că Facebook încurajează o cultură de butonat, fără suficient QA. Pentru că e mult mai cool să butonezi la noua ta invenție trăznită decât să scrii testele pentru invenția precedentă. Cel puțin asta e impresia pe care o am din afară. Și de aia concursul ăsta e plin de fail. Cum naiba să ai unul dintre cele mai mari servicii online și să nu testezi ceva pe Chrome? Bine, web front-ends nu sunt specialitatea mea dar ultima dată știam că dacă ești profesionist, orice faci front-end testezi pe toate browserele posibile. Jenant. Și nu reușești să implementezi cum trebuie un cronometru server-side? Să fim serioși. Noroc că au fost “agile” și și-au umplut wall-ul de anunțuri și work-arounds. Bine așa.

A, și de ce zic că sunt obiectiv – pentru că nu s-au afișat încă rezultatele, deci nu știu dacă m-am calificat sau nu, așa că nu scriu asta de ciudă. Pentru că eu chiar am citit atent anunțurile și nu am fost afectat de diferitele problemele tehnice. Și, nu în ultimul rând, pentru că problemele sunt triviale dacă scoți cronometrul din ecuație. Le poți rezolva fie de mână, fie cu un algoritm brute-force. Dacă nu m-am calificat, măcar nu m-am calificat bărbătește. Puteam să reiau problemele duminică, pe îndelete, dar nu avea sens.

Și da, dacă mă calific, probabil că particip și la runda următoare. Dar în scârbă🙂

Update: Fail – unii participanți spun că au primit câte 2-3 emailuri, unele zicând că s-au calificat, altele zicând că nu s-au calificat. Good job Facebook, good job!

From → rant

4 Comments
  1. Te-ai calificat?🙂
    Si eu m-am enervat din cauza modului prost in care au ales sa organizeze cupa hackerasilor. Bine pe mine ma enerveaza si Puzzle Masterul… alta poveste, insa cred ca arata cam cat de in serios ne iau neni astia de la fb pe noi nenii astia de respiram greu si bagam cod.
    Dupa ce m-am enervat am ales sa rezolv o singura problema si pe aia asa in scarba… Cum pana mea sa nu iti spuna dupa ce submiti raspunsurile daca sunt corecte sau nu???
    Si guess what: cica merg mai departe :)) As putea spune ca m-am calificat intr-un mod optim folosind un aproach greedy. =))

  2. vladr permalink

    Deocamdată am primit un mail care zice că am rezolvat toate 3 problemele (inclusiv aia care mi-a spus vineri că “Time has expired”). Habar n-am dacă m-am calificat sau nu, vezi update-ul din post :)) Aștept următoarele mesaje. Ce idioți.

  3. Mircea permalink

    hahaha. eu am primit 2 emailuri. in amandoua sunt informat ca m-am calificat…🙂

Trackbacks & Pingbacks

  1. Failcup – partea 2 « Vlad’s Happy Place

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: