nxhinierimi i Programeve nuk eshte Shkenca Kompjuterike
Inxhinierimi i Programeve nuk eshte Shkenca Kompjuterike
Zakonisht kur kandidate te ndryshem intervistohen preballen me pyetje te tipit:
“Na pershkruani kendveshtimin tuaj mbi zhvillimin e programeve?” dhe zakonisht kerkohen paralelizma praktik si me arkitektet, artistet inxhiniert elektrike etj, pra praktika te njohura dhe te standartizuara. Shumica mundohen te japin pergjigjen ne menyre te rastesishme duke munduar te thone dicka qe sipas tyre intervistuesi do te degjoje. Disa e prezantojne veten e tyre si “shkencetare” te tjere qe jane eksperte ne gjuhe te ndryshme programimi prezantohen si “komando” ose pjestare te nje “grupi te nderhyrjes se shpejte”, kurse disa te tjere e prezantohen me ane shprehjes “Kur ideoj(design) une jam nje arkitekt. Kur ideoj nderfaqen me perdoruesin jam nje artist. Gjate ndertimit jam nje punetor ndertimi. Kur testoj produktin jam nje person mjaft I keq ”.
Natyrisht lindin pyetjet: Cila eshte menyra me mire per te pershkruar zhvillimin e programeve? Si shkence? Si art? Si sajese? Si dicka totalisht ndryshe?
1. Cfare vendi ze Inxhinierimi i Programeve?
Qe ne 1967, kur nje grup njerezish nga disiplina te ndryshme(shumica e te cileve sot identifikohen si shkencetare te shkencave kompjuterike) u mblodhen per te diskutuar “Inxhinierimin e Programeve” ne jug te Gjermanise, e klasifikuan ate si nje nenbashkesi te shkencave kompjuterike. Rrjedhimisht, neper departamente te ndryshem te ketyre shkencave gjejme njerez qe specializohen ne tema si automata, zhvillim gjuhesh, sisteme shfrytezimi, inxhineri programesh etj. Po ne keto departamente studentet ndjekin kurse me tema te ndryshme si kompilatoret, baza te dhenash, si dhe inxhinierim programesh.
Zakonisht kurset quhen vetem “Inxhinierim Programesh” megjithese nganjehere gjejme dhe perzierie te formave “Inxhinierimi i Programeve sipas paraidgmave OO” ose “Inxhinierimi i Programve sipas komponenteve”.
Ne kete ese prezantohet nje kendveshtrim ndryshe. Me mire sesa ta klasifikojme Inxhinierimin e Programeve si nje nenteme te shkencave kompjuterike le ta klasifikojme ate si nje element te bashkesise { Inxhinieri Civile, Inxhinieri Mekanike, Inxhinieri Kimike, Inxhinieri Elektrike, …..}. Kjo mund te duket thjesht si nje diskutim akademik mbi perkatesine e seiciles, por ne te vertete thelbi eshte cilesia dhe stili i edukimit. Programet universitare per inxhinierite jane mjaft te ndryshme nga programet mbi shkencat si matematika ose artet liberale. Keto diferenca vijne si pasoje e pikesynimeve te ndryshme te studenteve. Bindja eshte se studentet qe kane si pikesynim karriera ne zhvillim programesh duhet te ndjekin nje program me stil si te degeve inxhinierike sesa stili i shkencave kompjuterike.
Eshte e rendesishme te theksohet se ketu nuk po krahasohen dy fusha te shkences. Pasi baza shkencore e inxhinierise elektrike eshte fizika ashtu dhe baza shkencore e inxhinierimit te programeve eshte kryesisht shkenca kompjuterike. Trajtimi i tyre si dy baza te ndryshme do te conte ne konfuzion. Ketu prezantohen kontrastet midis edukimit ne nje shkence dhe edukimit ne nje disipline inxhinierike me baze te njejte. Duke pranuar qe te dy programet do te kene te perbashketa ne materialet e tyre thelbesore, do ta kemi me te thjeshre te kuptojme diferencen.
2. “Eshte” vs. “Duhet”
Debati mbi perkatesine e fushes se programeve ne art apo shkence ka nje kohe te
gjate hapur. Donald Knuth, 30 vjet me pare, filloi shkrimin e 7 volumeve mbi “Artin
e Programimit te Kompjuterave” . Tre volumet e para arrten numrin e 2200 faqeve
duke sugjeruar qe te 7 bashke do te arrinin me shume se 5000 faqe. Nese ky eshte
“arti” i shkencave kompjuterike eshte pak e veshtire per te imagjinuar madhesine e
“sheknces” se kesaj fushe.
Grupet qe mbeshtesin idene e pershkrimit si “art” te kesaj fushe debatojne mbi
argumentat e lirise dhe frymezimit qe shkenca si lejon ne nje kontekst kaq te gjere.
Kurse nga ana tjeter argumentat bazohen ne larmine e programeve dhe shkallen e
madhe te gabimeve te cilat jane te patolerueshme. Por te dy kendveshtrimet nuk jane
te plota dhe bejne pyetjet e gabuara. Eshte zhvillimi i programeve art? Eshte
shkence? Eshte nje sajese?
Pyetja e vertete nuk eshte “Cfare eshte zhvillimi i programve sot?” por “Cfare
duhet te jete zhvillimi i programeve ne menyre profesionale?”. Pergjigja eshte
evidente: “Zhvillimi i programeve ne menyre profesionale duhet te jete inxhinieri”.
Eshte e tille? JO. Duhet te jete? ABSOLUTISH PO.
3. Perse lind nevoja per nje inxhinieri te re?
Inxhinieret jane profesioniste qe edukohen per te perdorur matematiken, shkencen
dhe teknologjine perdite ne krijimin e produkteve te sigurta qe i sherbejne mases se
gjere. Meqe produktet e sotme perfshijne nje game aq te gjere saqe asnje individ nuk
mund te kete te gjitha njohurite per ti ndertuar ato ka cuar ne ndarjen e inxhinierise
ne specialitete te ndryshme duke u fokusuar ne produkte te ndryshme.
Ne dekadat e fundit programet jane bere pjese e nje game te gjere produktesh
duke perfshire shume produkte per inxhinierie. Per me teper, programet perdoren nga
nga inxhinieret per te zhvilluar produktet e tyre, jo te kompjuterizuara, cilesia e te
cilave varet pjeserisht nga korrektesia e programeve te perdorura.
Ne te njejten periudhe shkencetaret e kompjuterave kane derdhur shume energji
ne zhvillimin e metejshem te kompjuterave dhe programimit te tyre. Sot njohurite
jane me te medha se ne te kaluaren kur u nis ideimi i inxhinierise se programeve.
Metodat e mesimdhenies ne ditet e sotme nuk kenaqein askend. Ne anen tjeter
konsumatoret e ketyre produkteve shprehen te pakenqaur me cilesine e tyre si dhe
kompanite qe i prodhojne keto produkte ankohen per numrin e vogel te specialisteve
te mirefillte te kesaj fushe. Gjithashtu kompanite qe punesojne informaticiene kane
shprehur shqetesimin mbi rendesine qe kane diplomat ne shkencat kompjuterike
ose inxhinierite tradicionale ne lidhje me zhvillimin e programeve.
Permiresimi i gjendjes mund te arrihet vetem me minimizimin e “ngjeshjes” qe
behet sot ne programet akademike. Permisresim do te sillte dhge ngritja e institucioneve akreditimi per disiplinat e kesaj fushe ne paralelizem me ato qe ekzistojne per inxhinierite tradicionale. Per momentin insitucione te tilla nuk ekzistojne pasi akoma nuk eshte identifikuar nje e ide apo stil i perbashket qe mesohet ne te gjitha kurset e shkencave kompjuterike.
Normalisht qe ne kete ese hapet dhe debati i krijimit te ketyre institucioneve te cilat do te garantojne cilesine dhe do te thjeshtesonin menyren e vleresimit ne kete fushe. Eventualisht keto njesi akreditimi do te thjeshtesonin krijimin e nje programi ne shkenca kompjuterike si dhe percaktimin e sakte te bazes se tyre.
4. Inxhinieri vs. Shkence
Statistikat shprehen se vetem 40% e programuesve me diploma ne shkenca kompjuterike dhe praktikisht 0% prej tyre kane diploma ne inxhinieri programesh. Kjo shpreh qarte konfuzionin qe eshte krijuar mbi dallimin e inxhinierise se programeve me shkencat kompjuterike. Sic dihet dallimi midis shkences dhe inxhinierise eshte i njejte si dhe ne fusha te tjera[1]. Shkencetaret mesojne cfare eshte e vertete, si te ndertojne hipoteza dhe si te zgjerojne njohurine ne nje fushe te caktuar. Inxhinieret ne kahun tjeter mesojne cfare eshte e vertete, cfare eshte me vlere dhe si te aplikohen njohuri te pranuara gjeresisht per probleme praktike. Shkencetaret duhet te jene ne korent me avancimet e fundit ne kerkime per fushen e tyre. Inxhinieret duhet te njohin mjaft mire praktikat efektive dhe te testuara ne te kaluaren. Nese merresh me shkence eshte normale te ngushtosh kerkimet e tua ne nje fushe tejet te specializuar. Nese merresh me inxhinieri duhet te kesh nje njohuri te gjere te faktoreve qe prekin produktin tuaj. Shkencetaret nuk kane nevoje per institute akreditimi pasi ata i referohen njeri-tjetrit. Inxhinieret duhet te akreditohen pasi referimi i tyre eshte publiku i gjere. Nje student i thjeshte (undergraduate) per shkenca kompjuterike meson se si te vazhdoje ose zgjeroje shume ne pah