{"id":42949,"date":"2010-09-20T09:00:00","date_gmt":"2010-09-20T09:00:00","guid":{"rendered":"https:\/\/bm.dev.synology.me\/?p=42949"},"modified":"2026-04-02T18:17:01","modified_gmt":"2026-04-02T18:17:01","slug":"programarea-si-banda-de-montaj","status":"publish","type":"post","link":"https:\/\/bm.dev.synology.me\/?p=42949","title":{"rendered":"Programarea si banda de montaj"},"content":{"rendered":"<p>In primele luni in care am lucrat ca programator am avut parte<br \/>\nde un test interesant. Se punea problema lansarii unui proiect<br \/>\nsoftware, iar conducatorul de proiect venit de la &#8220;centru&#8221; (CTCE,<br \/>\npentru cine-si mai aminteste) si seful meu direct (in calitate de<br \/>\nbeneficiar) s-au retras intr-un birou si au discutat vreme de vreo<br \/>\ndoua ore cerintele pe care aplicatia trebuia sa le satisfaca.<br \/>\nProbabil s-a ajuns la o neintelegere cu privire la termene, pentru<br \/>\nca seful m-a chemat, mi-a expus pe scurt problema, dupa care m-a<br \/>\nintrebat in cat timp apreciez eu ca se poate realiza. Aplicatia imi<br \/>\nparea simpla, mi-am facut o socoteala si am dat verdictul: o<br \/>\nsaptamana. Stupoare. Pana la urma s-a convenit la sase luni si a<br \/>\nfost randul meu sa raman mirat.<\/p>\n<p>Diferenta de estimare venea din abordare: in vreme ce eu<br \/>\nconsideram dezvoltarea de software mai degraba un mestesug, oamenii<br \/>\nde la &#8220;centru&#8221; il considerau un soi de industrie. Adica un proces<br \/>\ncu o metodologie stricta, cu o planificare riguroasa, cu etape care<br \/>\nse succedau si toate celelalte detalii care ma duceau cu gandul la<br \/>\nbanda de montaj din &#8220;Timpuri noi&#8221; (Chaplin, 1936). Pentru a-mi<br \/>\nconfirma mie insumi ca n-am facut o gafa majora, am realizat in<br \/>\ncinci zile un prototip functional pe cerintele date, dupa care am<br \/>\ncolaborat la procesul standard care, intr-adevar, a durat ceva mai<br \/>\nmult de o jumatate de an.<\/p>\n<p>Partea buna a procesului de tip industrial este ca lasa in urma<br \/>\nlui multa documentatie si se poate realiza cu programatori<br \/>\nmediocri, care primesc specificatii detaliate, fara sa aiba nevoie<br \/>\nde imaginea de ansamblu. In felul acesta, oricine poate fi inlocuit<br \/>\noricand, de pilda pentru a ajuta la un alt proiect. Insa nici acum,<br \/>\ndupa atatia ani si proiecte, nu stiu cine a avut dreptate. Este<br \/>\ndezvoltarea de software un proces de tip industrial sau este un soi<br \/>\nde mestesug high-tech? E mai rentabil sa lucrezi cu programatori<br \/>\nfoarte buni sau sa &#8220;depersonalizezi&#8221; munca?<\/p>\n<p>Mi-am pus din nou aceasta problema dupa ce am regasit blogul<br \/>\n&#8220;Joel on Software&#8221;, unde aceste intrebari sunt mereu discutate.<br \/>\nJoel Spolsky a lucrat cativa ani la Microsoft si a condus echipa<br \/>\ncare a realizat programul Excel, asadar cunoaste la modul practic<br \/>\ncum functioneaza marea industrie de software. Cu toate acestea,<br \/>\ncand a parasit Microsoft si a fondat firma Fog Creek Software,<br \/>\nformula pe care a adoptat-o s-a rezumat la patru obiective, ce<br \/>\ndecurg unele din altele: sa creeze cele mai bune conditii de munca,<br \/>\nastfel incat sa atraga cei mai buni programatori, care sa realizeze<br \/>\ncel mai bun software, iar de aici sa vina profitul. Convingerea sa<br \/>\neste ca programatorii foarte buni sunt cheia intregului edificiu,<br \/>\nfiindca cinci programatori mediocri nu vor realiza niciodata (iar<br \/>\nJoel accentueaza acest &#8220;niciodata&#8221;) un soft de calitatea celui<br \/>\nrealizat de un programator foarte bun, asa cum cinci Salieri nu vor<br \/>\nproduce Recviemul lui Mozart nici daca ar lucra 100 de ani.<\/p>\n<p>Comparatia ii apartine si nu este intamplator ca se refera la<br \/>\narta, care implica viziune, inspiratie, dar si mestesug stapanit la<br \/>\nperfectie. Exista insa si explicatii mai pragmatice, cum ar fi<br \/>\n&#8220;Legea lui Brooks&#8221;, care spune ca adaugand mai multi programatori<br \/>\nla un proiect intarziat nu vei obtine decat o intarziere si mai<br \/>\nmare. Evident, un singur proiectant cu mare productivitate nu va<br \/>\navea problemele de coordonare si de comunicare pe care le are o<br \/>\nechipa, mai ales cand se adauga oameni noi. Pana la urma, Joel<br \/>\nconsidera ca programatorul bun este mai degraba un designer, ceea<br \/>\nce aduce si putina arta in ecuatie, deci implicit si mestesug.<\/p>\n<p>Daca acceptam varianta mestesugului, cum se explica faptul ca<br \/>\nexista o industrie de software (si exista cu adevarat), in vreme ce<br \/>\ndezvoltarea de software nu este un proces industrial? Mitul<br \/>\neficientei metodologiilor riguroase, de tip banda de montaj, a fost<br \/>\nspulberat de modelul de dezvoltare practicat in multe proiecte open<br \/>\nsource (&#8220;bazarul&#8221;), care abandoneaza orice rigoare cu exceptia<br \/>\ncelei privind calitatea codului. La fel de haotice par la prima<br \/>\nvedere noile metode de dezvoltare reunite sub numele de &#8220;programare<br \/>\nagila&#8221;, in care mai important este raspunsul rapid la schimbari<br \/>\ndecat urmarea unui plan, iar programul trebuie sa fie functional<br \/>\ncat mai repede.<\/p>\n<p>Pana la urma, cred ca am avut dreptate cand am estimat la o<br \/>\nsaptamana un proiect care avea sa dureze o jumatate de an. Daca<br \/>\nprimesti feedback foarte devreme nu risti sa dezvolti doua luni<br \/>\nintr-o directie gresita. Este un principiu al bazarului: &#8220;Release<br \/>\nearly, release often&#8221;.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>S-au facut previziuni sumbre privind viitorul programatorilor. Se spera ca se vor concepe computere capabile sa elaboreze programe sau ca vor deveni simple rotite intr-un urias angrenaj. Nimic nu s-a adeverit, iar marii programatori raman in continuare eroii vremurilor noastre.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[529],"tags":[7107,7571,464,7105],"class_list":["post-42949","post","type-post","status-publish","format-standard","hentry","category-opinii","tag-mircea-sarbu","tag-programatori","tag-viitor","tag-weboscop"],"_links":{"self":[{"href":"https:\/\/bm.dev.synology.me\/index.php?rest_route=\/wp\/v2\/posts\/42949","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bm.dev.synology.me\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bm.dev.synology.me\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bm.dev.synology.me\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bm.dev.synology.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=42949"}],"version-history":[{"count":1,"href":"https:\/\/bm.dev.synology.me\/index.php?rest_route=\/wp\/v2\/posts\/42949\/revisions"}],"predecessor-version":[{"id":60591,"href":"https:\/\/bm.dev.synology.me\/index.php?rest_route=\/wp\/v2\/posts\/42949\/revisions\/60591"}],"wp:attachment":[{"href":"https:\/\/bm.dev.synology.me\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=42949"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bm.dev.synology.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=42949"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bm.dev.synology.me\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=42949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}