Šių metų rugsėjo 29d., tikrai netikėtai man pačiam, buvau pakviestas į Microsoft padalinio Lietuvoje rengiamus „Spaudos pusryčius“, kuriuose buvo supažindinta su kompanijos ateities planais, į šį renginis buvo pakviesti spaudos atstovai ir tinklaraštininkai. Iš tiesų aš savęs ne tik kad nelaikau profesionaliu tinklaraštininku, bet ir apskritai tinklaraštininku, esu tik žmogus, kartas nuo karto pasidalinantis savo [...]
Programuotojo darbo procesas: #5 Programos apimties matavimas
Bene svarbiausia, mano nuomone, programuotojo darbo dalis yra sugebėti tinkamai suskirstyti ir įvertinti – išmatuoti atliktą darbą. Jei yra prastai išmatuojamas atliktas darbas, tai beveik neįmanoma gerai suplanuoti ir įvertinti savo būsimųjų darbų trukmę ir reikalingus resursus. Na o kas nutinka, kai yra nesilaikoma grafiko (turiu galvoje vėlavimą), tai gali papasakoti kiekvienas programuotojas. Kenčia ir kokybė ir reputacija, neprikausomai nuo to, kokios kvalifikacijos bebūtų specialistas. Todėl ypač svarbu sugebėti tinkamai įvertinti – išmatuoti savo atliekamus darbus.
Yra keletas būdų, kaip galima įvertinti savo atliekamą darbą, patys artimiausi man, yra du būdai:
- Matuoti savo darbą pagal parašytą kodo eilučių kiekį ir laiką,
- Matuoti savo darbą pagal įgyvendintus funkcinius taškus ir laiką.
Taigi, pirmuoju atveju tektų pasirašyti programą, kurį skaičiuotų parašyto programinio kodo eilutes, nes “rankiniu” būdų skaičiuoti programos kodo eilutes būtų pernelyg sunku ir beprasmiška, kadangi būtų neišvengiama klaidų ir užtrunkama daug laiko. Kad tokia programa pateiktų patikimus rezultatus, pats programuotojo rašomas turėtų būti pastovus ir vienodas t.y. įvairios programos kodo struktūros turi būti vienodas. Kitaip tariant, reikia naudotis ankstesnėje temoje aptartu kodavimo standartu. Vėlgi, dėrėtų nepamiršti, jog parašyto programos kodo eilutės gali ne tik didėti, bet ir mažėti, pvz.: optimizuojant parašytą programos kodą, neretai tenka ištrinti dalį parašyto ir jį pakeisti efektyvesniu. Tokią programą siulyčiau rašyti laikantis tokių principų:
- Programa turi skaičiuoti ir skirstyti programos kodą, suskirsčius jį į: naujai parašytą, modifikuotą ir ištrintą. Beabejo tektų pasirašyti ir kažkokį programos kodo versijavimo mechanizmą, kuris būtų panaudojamas vertinant einamuoju metu parašytą kodą su anksčiau parašytu.
- Ši programa turi turėti funckija, kuri skirstytų programos kodą pagal kategorijas ir sudėtingumą. Pvz.: kategorijos atitikmuo būtų programos kodas skirtas atvaizduoti vienos ar kelių duomenų bazės lentelių duomenis viename sąraše, o sudėtingumo atitikmuo (mažas, vidutinis ir didelis) būtų tas duomenų bazės lentelių ir laukų kiekis, kurį reikia atvaizduoti.
- Trečias ir paskutinis principas, kuriuo reikia vadovautis rašant programą skaičiuojančia programinio kodo eilutes, yra tas, jog ši programa turėtų atsižvelgti į programinio kodo dydžio ir laiko skirto tam kodui parašyti tendenciją kisti. Kadangi vystantis technologijom keičiasi ir darbo principai, todėl, šios programos pateikiami, duomenys turėti atitikti šių dienų realijas. Manau ne vienas .NET srityje dirbantis programuotojas galėtų pritarti, jog programavimas gana žymiai pasikeitė atsiradus linq.
Prisipažinsiu, šio metodo kol kas pačiam praktiškai išbandyti taip ir neteko, bet kai sugebėsiu pats sudėti į vieną programą tuos skaičiavimo principus, kuriuos ką tik aptariau, būtinai su jumis pasidalinsiu įspūdžiais ir rezultatais. Galėtų iškilti klausimas kodėl tada aš apie šį metodą išvis kalbu? Atsakymas paprastas, jei parašytą programa sugeba tinkamai įvertinti parašyto programos kodo eilučių kiekį ir laiką skirtą tam kodui parašyti, žymiai pagerėja ir supaprastėja ir pagerėja planavimas ir būsimųjų programų dydžio ir laiko resursų įvertinimas. Didelė dalis darbo yra automatizuojama, ko negalima padaryti antruoju metodu, kurį aš pats ir naudoju.
Darbo vertinimas pagal funkcinius taškus ir laiką yra pakankamai paprastas. Iš pradžių reikėtų savo darbą susiskirstyti (kaip ir pirmuoju atveju) į kategorijas. Tokių kategorijų pavyzdžiai galėtų būti: duomenų bazės projektavimas, specifikacijos rašymas, programos, atvaizduojančios duomenų bazės duomenis sąraše, rašymas ir pan. Kaip ir pirmuoju atveju, kategorijų duomenis reikia susiskirstyti pagal darbo sudėtingumą: mažas, vidutinis ir didelis. Tačiau šiuo atveju vienintelis atlikto darbo matas būtų laikas. Toks matavimo būdas turi vieną didelį privalumą prieš pirmąjį, galima išmatuoti įvairaus tipo darbus, ne vien programavimo. Tačiau tokiu matavimo būdų naudojantis gauti duomenys ne visada suteiks patikimus duomenis, todėl planavimo rezultatų paklaida neretai bus didesnė.
Aš pats galvoju, jog pats efektyviausias būdas būtų naudoti šiuos abu metodus iškart, pirmąjį – programavimui, o kitus su programavimu nesusijusiems darbams.
Tai štai būtų tokie mano pasiūlymai – pamąstymai, kaip galima įvertinti savo atliktą darbą. Žinau, šiame įraše išdėsčiau tik pačius principus, kokie mano manymu yra reikalingi atliekant darbo įvertinimą, na bet mano tikslas ir nėra parašyti vadovėlio. Na o kaip jūs matuojate savo atliktą darbą ir ar išvis tai darote? Lauksiu nuomonių komentaruose.
Žymos: Matavimas, Planavimas, Programavimas
- PDP: #8 Programinės įrangos kokybė
- PDP: #7 Tvarkaraščiai ir darbo progreso sekimas
- Darbo žurnalas – “patobulinta” užrašinė





2009-11-18 Data: 20:43
na pagal įrašo temą, tai labiausiai tiktų pirmas variantas, bet pagal tai, kas rašoma, tai darbo(ne programos) atlikimo matavimui labiausiai tiktų antrasis, gi nesusideda darbas vien iš kodo eilučių rašymo
Nors kažkada manęs klausė kiek eilučių…
2009-11-22 Data: 13:02
Taip taip, dėl to ir rašiau, kad geriausias variantas būtų pirmojo ir antrojo derinys.
2010-01-24 Data: 00:38
Paprastai darbo matavimai atliekami tam, kad darbų kordinatorius (vadovas) galėtų lengviau susigaudyti, kokioje stadijoje yra projektas, kokie darbai padaryti/nepadaryti.
Tačiau nustebau perskaitęs ir radęs čia paminėta kitą įdomią priežastį – savo paties darbo vertinimo tikslumo kėlimas. Tai svarbus momentas, nes, paprastai, žmonėms nepatinka fiksuoti darbo laiko.
Nemanau, kad kodas tiesiogiai atsipdi nuveiktą darbą, jo dydį. kartais (gal ir dažnai) keletas protingai parašytų eilučių problemą išsprendžia efektyviau nei kelios dešimtis. Tad, manau, sureikšminti kodo eilučių nereikėtų (kaip tai parašyta tavo siūlomoje programoje).
jei kodas rašomas su visual studio, eilučių kiekį galima lengvai suskaičiuoti šiuo būdu:
http://blog.schuager.com/2009/01/line-count-in-visual-studio.html
2010-01-25 Data: 20:52
Pilnai pritariu, kad vien eilučių skaičiuoti tikrai neverta, nes nemažai laiko praleidžiame interneto platybėse ieškodami informacijos, o ne programuodami. Bet vėlgi ir šioje srityje reikėtų pabandyti įvertinti tą % savo darbo laiko, kurį mes praleidžiame ieškodami informacijos o ne planuodami. Matai aš pats dar tik mokausi ir bandau ieškoti to gero sprendimo, kuris padėtų, o ne trukdytų pačiam darbui ir žinoma savo darbo vertinimui.