splash
Apie ką aš čia?
Apie technologijas, .NET, internetinius sprendimus, darbo organizavimą, laiko valdymą ir kita.
Parašė Gintaras Slavinskas Data: 2009-10-03

Š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 [...]

 

2009-11 mėnesio archyvas

Programuotojo darbo procesas: #5 Programos apimties matavimas

Parašė Gintaras Slavinskas Data: Lapkritis 15, 2009

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.

The Big Picture – kitoks kalendorius

Parašė Gintaras Slavinskas Data: Lapkritis 14, 2009

Šį įrašą pradėsiu nuo pastabos apie tai, kur buvau pradingęs pusantro mėnesio. Taigi, praeitą mėnesį pakeičiau darbovietę, todėl norėjosi visas pastangas skirti naujiems darbo principams, technologijoms ir metodams įsisavinti. Taip pat dalį savo laiko skyriau ir projektui, kurį vystau su bendraminčiais. Todėl ir neliko laiko prisėsti prie kompiuterio ir parašyti apie mane dominančius dalykus.

Na bet grįžkime prie šio įrašo – „The Big Picture – kitoks kalendorius“. Kadangi internete nuolatos ieškau geriausių laiko planavimo įrankių, tai vieną kartą atradau The Bic Picture svetainę. Šis projektas mane sudomino ne milžinišku funkcionalumu o savo inovatorišku kalendoriumi. Išties šis projektas yra ne kas kitas, o kalendorius pateiktas kitu kampu. Na, teisingumo dėlei, paminėsiu, kad šis projektas turi ir užduočių valdymo užuomazgų. Tiems, kas naudojasi Google Calendar, Live Calendar ar kitomis panašaus pobūdžio programomis, patariu išbandyti ir šią programą, kadangi ji gali būti tai ko jūs kartais galėdavote pasigęsti (na bent jau aš asmeniškai pasigesdavau):

  • Interaktyvaus ir lengvo kalendoriaus valdymo ir informatyvaus atvaizdavimo,
  • Užduočių susietų su įvykiais.

Na ir tuojau pat noriu jums įrodyti, jog ši programa išties tai suteikia. Bent jau aš asmeniškai nebuvau atradęs jokios programos, kurioje skirtingus kalendorius būtų galima lengvai atskirti pagal paskirtį ir svarbą. Skirtingus kalendorius buvo galima skirti tik pagal pavadinimą, spalvą ir, geriausiu atveju, mažą miniatiūrą. Na o šiame projekte panaudotas išties įdomus metodas atvaizduoti kalendorius:

TheBigPicDesktop

Kalendorių skirstymas

Išties pačios programos autoriai šiuos skirtingus kalendorius įvardina kaip projektus, bet mano nuomone, bent jau kol kas, tai tėra atskirti kalendoriai, kadangi suteikiamos galimybės tai tik įrodo.  Kodėl man patiko atvaizdavimas? Atsakymas paprastas – man visada norisi matyti atskirų kalendorių svarbą, nors asmeniškai kiekvienas prisimename, kurie kalendoriai yra svarbiausi, tačiau vizualus to pabrėžimas yra gera programos savybė.

Sekantis šios programos bruožas, kuris man patiko, yra tas, jog galima vizualiai susieti įvykius su užduotimis:

TheBigPicTasks

Užduotys ir įvykiai

Išties ši programos savybė yra tai, ko aš ilgai ieškojau kitose programose. Nežinau kaip jums, bet man yra ypač svarbu yra matyti įvykius ir užduotis vienoje vietoje o ne atskirai, nes neretai jie būna susiję. Na bet nepamirškime pagrindinės šios programos sąvybės – tai yra kalendorius:

TheBicPicOrgCalendar

Kalendorius

Taigi, ši programa suteikia įdomų įrankį, valdyti savo laikui, o iš kai kurių bruožų galima spręsti, jog ateityje šis projektas gali progresuoti ir tapti pilna užduočių valdymo sistema (ko aš labai laukčiau).  Na jei jūs dar neatradote tinkamiausio kalendoriaus, patariu jums išbandyti šį, galbūt tai ir bus tai, ko jūs ieškote.

P.S. Nesupraskite manęs klaidingai, tai iš ties nėra kompiuterinė programa, šis kalendorius yra pasiekiamas ir valdomas interneto ir naršyklės pagalba, bet sutikite šis produktas tikrai nėra internetinis tinklalapis ir savo savybėmis yra artimesnis programoms.