duminică, 27 noiembrie 2016

Statul român și codul sursă, varianta pentru începători

Steagul României. Sursa imaginii
Mai mult ca sigur, dacă ai citit sau văzut știrile din ultima vreme, ai auzit și de desele perioade de indisponibilitate ale Sistemului informatic al cardului naţional de sănătate. Iar în cadrul discuțiilor ce privesc aceste perioade de indisponibilitate cât și a altor sisteme informatice ce au legătură cu statul probabil ați auzit și despre expresia cod sursă și cum statul român e legat la mâini deoarece nu îl deține. Dar dacă nu ești IT-ist probabil e cam dificil de înțeles ce e acest cod sursă și de ce e așa de grav că statul nu a primit la schimb așa ceva în schimbul milioanelor de euro pompate în proiecte IT nefuncționale. Pentru asta există acest articol.

Secretara sexy și outsourcing-ul


Industria IT din România se bazează în mare parte pe outsourcing. Ce e aia? Să spunem că ești șeful unei mare companii producătoare de centrale termice și te gândești "bă, ce mișto ar fi să poți să îți pornești centrala cu ajutorul unei aplicații de mobil". Din păcate printre angajații tăi nu ai decât tinichigii, câțiva ingineri, doi trei electricieni și o secretară blondă sexy, iar niciunul din ăștia nu se pricepe să-ți scrie aplicația pe care ți-o dorești. Drept urmare apelezi la serviciile unei firme care, în schimbul unei sume modice, își va pune programatorii la treabă construindu-ți ție aplicația și toată infrastructura necesară funcționării ei. La sfârșit vei primi aplicația și codul sursă al acesteia. La asta se referă outsourcing-ul: pui pe altcineva să îți facă aplicația în loc s-o faci tu. Dar am ajuns la expresia "cod sursă" și încă nu știm ce e aia.

Codul sursă

Când un programator construiește o aplicație el doar scrie într-un editor de text chestii complicate de genul ăsta:

O secvență de cod care ar da coșmaruri oricărui programator. Sursa imaginii
Acele linii de cod sunt doar o reprezentare a programului pe care să o poată înțelege și programatorul, nu doar calculatorul. În final acel cod va ajunge într-o formă indescifrabilă pentru om și cu sens doar pentru calculator. Drept urmare avem un cod sursă precum cel din imaginea de mai sus care apoi devine cod compilat (binar) pe care îl va înțelege doar calculatorul.

Deoarece codul ăla binar e indescifrabil pentru om acestuia nu îi mai pot fi aduse îmbunătățiri sau corectări. Dacă vrei să incluzi o funcție nouă într-un program sau vrei să corectezi o problemă a acestuia va trebui să modifici codul sursă și apoi să îl aduci din nou în stadiul de cod binar.

Contractele cu statul

Contractele făcute cu statul român sunt o adevărată mină de aur pentru anumite companii deținute de anumite persoane. Asta pe de-o parte pentru că banii băgați în astfel de proiecte stârnesc invidie chiar și printre startup-urile din San Francisco care aleargă gâfâind după investitori, iar pe de altă parte pentru că reprezentanții statului român au grijă să semneze niște contracte dezastruos de dezavantajoase pentru companiile de software. Glumesc. Sunt dezastruos de dezavantajoase pentru Statul Român.

De exemplu, aflăm că sistemul ce stă în spatele cardurilor de sănătate a costat cam 184 de milioane de euro. Ca să înțelegeți mai bine proporția acestei sume aflați că pentru câteva mii de euro o echipă de liber profesioniști (freelanceri) vă va construi cu drag aplicația aia pentru centrale termice. Între două companii cu manageri sănătoși la cap astfel de contracte se negociază la sume ce se situează undeva în jurul sutelor de mii de euro, în cazul proiectelor de talie medie. Și nici nu se pune problema ca ceva să nu funcționeze timp de trei zile la rând. Dar hai că în cazul ăsta nu e vorba totuși de noul Uber, ci vorbim de o chestie mult mai serioasă precum e sistemul național pentru carduri de sănătate, așadar nu poți să îl faci cu o firmuliță care abia a descoperit internetul. Totuși diferența până la 184 de milioane de euro vorbește de la sine... iar asta pentru un sistem care funcționează intermitent.

Și pentru care nu avem nici măcar codul sursă. Da, asta pentru că echipele care au negociat contractele alea, din rea voință sau necunoștință de cauză, nu au negociat să primească și codul sursă. Codul sursă e la firmele pe care le-am plătit cu milioane de euro. Orice îmbunătățire sau reparație poate fi făcută doar de respectivele firme, iar acele firme nu vor face lucrul ăsta pe gratis. Și nici ieftin, de vreme ce altă soluție decât contractarea acelor firme nu există.

Mai exact, de banii ăia statul doar a închiriat o platformă software, cu diferența că aceasta a fost construită special pentru nevoile sale. E ca și cum ai plăti 184 de milioane de euro pe o mașină la comandă însă mașina nu e niciodată a ta, ci doar ai dreptul să te plimbi cu ea. Iar situația e foarte gravă, practic Statul Român e prins astfel în tocul ușii mulțumită unor grupuri de interese ce au urmărit încheierea de contracte dezastruoase. De asta în ultima vreme se tot bate apa-n piuă cu codul ăsta sursă. Ce e și mai trist însă e că, în ciuda unor fraude atât de evidente, oamenii care au profitat de pe urma lor încă mai au credibilitate la public.

Note de final
Acest articol a fost scris într-un mod foarte simplificat, cât să îl înțeleagă și Gogu de la cazane. Sistemul cardurilor de sănătate a fost folosit doar ca exemplu, articolul vizează în general proiectele pe care le contractează statul. Ca mic studiu de aprofundare și ca să îi împăcăm pe cei ce înțeleg cu ce se mănâncă IT-ul aș vrea să adaug următoarele:
  • Un program compilat se poate modifica sau îmbunătăți chiar dacă nu deții codul sursă, însă implică o muncă colosală, de durată, iar posibilitățile tot sunt mai limitate decât dacă ai deține codul sursă.
  • Nu toate programele în cod sursă ajung în cod binar. E cazul, de cele mai multe ori, pentru site-urile web. Așadar, în cazul unui sistem tip cloud cum e cel al cardurilor de sănătate, Statul Român nu deține nici măcar o formă compilată a programului.
  • În costurile unui proiect precum cel al sistemului pentru cardurile de sănătate mai intră tot soiul de servicii adiacente, care costă și ele. Ce servicii au fost contractate și dacă suma plătită de Statul Român e una corectă... e dificil de zis.
  • Nepredarea codului sursă de către companiile care dezvoltă software la comandă pentru entități statale nu e o practică izolată, dimpotrivă: sunt puține țări care cer să le fie livrate și codul sursă odată cu programul final.
  • Nu există scuză pentru cei ce au negociat atât de dezastruos astfel de contracte și nici pentru cei ce profită de ele.