top of page

Cand sa reinventezi roata

Actualizată în: 21 feb. 2018

La inceputul fiecarui proiect, indiferent de dimensiunea lui, trebuie luata o decizie foarte importanta: Ce anume reutilizam,cumparam si ce anume facem de la zero?


Pentru ca lucrez in software in continuare am sa scriu despre aceasta situatie din punctul de vedere al unui inginer software.


Am lucrat in multe proiecte si in fiecare, deciziile luate la inceput legate de care componente trebuie refolosite, cumparate sau facute de la zero au fost printre cele mai importante.


Factorii ce intra in luarea acestei decizii sunt multi:

  • costul componentelor ce trebuie cumparate

  • costul de dezvoltare al acestor componente

  • timpul necesar pentru implementarea componentelor

  • experienta si cunostintele inginerilor din proiect

  • experienta celui care ia decizia

Orice modul cumparat reduce timpul de implementare al proiectului. Nu e nici o mare revelatia faptul ca daca cumperi toate componentelor software, nu ai nevoie de multe resurse. Nu mai ai nevoie de atat de multe licente de compilare, nu mai ai nevoie de atat de multe echipamenete si nu mai ai nevoie de atat de multi oameni.


Insa care sunt costurile ascunse ale cumpararii tututor componentelor.


In primul rand nu ai scapat de timp de development. Nu vei gasi niciodata o singura firma care sa faca toate componentelor. Probabil vei trimite un set de specificatii la fiecare firma contractata sa implementeze diferite module si te rogi ca fiecare isi va face treaba la timp.


Toate bune si frumoase , dar cineva va trebui sa integreze acele componente in soft-ul final.

Orice componenta cumparata va trebui integrata de catre o persoana care va consuma timp si bani incercand sa inteleaga implementarea acelei componente. Costul acestei integrari nu trebuie ignorat.


Sa spunem in continuare ca ai noroc si dispui de resurse. Ai toate echipamentele, tool-urile si oamenii de care ai nevoie. Nu trebuie sa cumperi nici o componenta.Perfect nu?Nu chiar.

Mai este o decizie de luat. Refolosim componente facute pentru alte proiecte sau facem de la zero. In general reutilizarea componentelor este o idee foarte buna. De ce sa refaci ceva ce altcineva si-a batut capul si a implementat.


Corect, insa nu poti sti :

  • cat de bine a fost implementata acea componenta.

  • cate de bine documentata e acea componenta.

  • cat de reutilizabila este acea componenta.

  • cat timp se va pierde integrand acea componenta.

In general ce am observat este ca daca o componenta a fost scrisa pentru un anumit proiect fara avea in plan sa fie reutilizata acea componenta nu trebuie refolosita.


O componenta software scrisa pentru a fi reutilizata necesita mai multa munca si o gandire mai atenta. Nu poti pur si simplu sa smulgi o bucata de cod dintr-un proiect sa o intregrezi in alt proiect si sa te astepti sa mearga pefect.


O situatie frecventa legata de reutilizare este decizia de a lua componente software gasite pe internet. In ziua de azi poti gasi cam orice librarie sau modul ai nevoie cam in orice limbaj de programare iti doresti. Trebuie doar sa sti cum sa cauti.


In foarte multe proiecte am luat si refolosit module gasite pe internet. Din lene, din lipsa de cunostinte, din lipsa de timp am luat decizia sa dau click pe butonul de download si sa integrez diferite componente in programele la care am lucrat.


Concluziile pe care le-am tras sunt urmatoarele:

  • daca nu aveti de ales (nu aveti timp, nu stiti cum sa faceti) luati orice modul; atat timp cat este legal sa il folositi.

  • daca nu aveti o idee foarte clara despre ce aveti de facut va sfatuiesc sa luati de pe internet. Cel putin asa veti avea ocazia sa lucrati cu o componenta finalizata (fie ea si prost facuta). O veti integra si daca cumva nu e cea ce doriti, macar acum stiti mai bine ce trebuie facut.

  • daca stiti foarte bine ce vreti sa faceti, cum sa faceti si aveti cunostintele necesare, nu mai pierdeti vremea pe net si scrieti componenta. Daca e clar cea ce trebuie facut si aveti cunostinetele necesare sa o faceti atunci nu are rost sa mai cauti.

  • daca stiti foarte bine ce vreti si in echipa nu sunt cunostintele necesare intrebarea care trebuie pusa este : “Avem nevoie de cunostinetele astea?”.Daca da sfatul meu este sa pierdeti vremea si sa implementati voi componenta. Cunostintele vor ramane in echipa si echipa va fi recunoscatoare.

Un cost ascuns in decizia de a cumpara o componenta este experienta pierduta.Daca decizia in final este sa se cumpere o anumita componenta tocmai s-a ratat o ocazie ca unul sau mai multi ingineri sa isi imbunatateasca cunostintele si experienta prin implementarea acelor componente.


Desigur ce am scris mai sus este un lux pentru multe firme, insa nu trebuie ignorat efectul asupra angajatilor. Daca firma dispune de ingineri entuziasti, cu bune cunostinte , dornici sa se imbarce in noi proiecte poate este o idee buna sa nu se cumpere acele componente ci sa se faca in-house.


Un ultim aspect al acestei probleme este experienta si varsta celui care ia decizia. Consider ca trebuie sa ai multi ani in domeniu si multe batalii sub centura pana cand ai toate cunostintele si simturile dezvoltate incat sa poti lua o astfel de decizie buna.


La finalul zilei decizia de a cumpara sau face este esentiala in constructia bugetului unui proiect, in costul final al produsului si in bunastarea si starea de spirit al echipei.

54 afișări0 comentarii

Postări recente

Afișează-le pe toate

Cate Firme Software?

In decembrie 2017 cineva mi-a trimis un link cu distributia IT-C in cele mai mari orase ale tarii facuta de firma Brainspotting. Un pdf ...

Comments


bottom of page