Subject: zkusenosti Date: Sat, 10 Jan 2004 17:30:24 +0100 (CET) From: Johanka Dolezalova To: projektova.komise.at.ksi.ms.mff.cuni.cz Dobry den a Ahoj, na obhnilobe jste jako obvykle rikali, ze kdo obhajil, ma poslal ty svoje zavery, klidne zcela uprimne. Presto si myslim, ze muj zaver "nejzkurvenejsi cast zivota za mnou" by asi neprosel, proto to posilam v priloze v trochu delsi a civilizovanejsi podobe. Zbytek tymu mozna taky casem neco sepise, ale netusim a cekat na ne nebudu :) johanka ---------------------------------------------------------------- Zkusenosti z projektu Panelak - Zemljanka Commander Drahomira 'Johanka' Dolezalova Lehce priblizim nas projekt: nebyl to nastesti zadny megalomansky napad, chteli jsme napsat hezky souborovy manazer, ktery toho bude umet lepe nez manazery (pro Unix) dostupne a bude mit lepe napsane (= asynchronni) jadro. Ja jsem (po mnoha personalnich i ideologickych zmenach planu) nakonec delala Cursed GTK, portovani grafickeho toolkitu GTK2 na konzoli. Ano, neco jsem se naucila. Lepe programovat, pracovat s ruznymi uzitecnymi nastroji (CVS, debugger, GNU Autotools, balickovani rpm...), coz se mi jiste bude jeste nekdy hodit, stejne tak i dalsim lidem, protoze jsem o tom napsala par clanku. Poucila jsem se, ze lidi, se kterymi spolupracuji, by meli byt nejen schopni, ale meli by mit take podobnou organizaci prace - chce-li nekdo mit neco hned z krku a jiny to dela na posledni chvili, tak kazdemu zvlast to treba vyhovuje a svou vlastni vec vzdycky v pohode stihne, ale vzajemna spoluprace drhne a oba ucastniky nervuje. Nicmene hlavne to pro me byl jeden rok plny otravnych schuzek (ktere nikam nevedly), dalsi rok zabity praci na projektu totalne (ne ze by me to chvilemi i nebavilo, ale zabity myslim pro jakoukoli jinou civilizovanou cinnost, treba diplomku), behem (pro me) nejintenzivnejsiho pul roku jsem moc nejedla, nespala, porad zvracela a prodelala ledasjakou (nikoli vsak pohlavni) nemoc, aneb ne, opravdu to za to nestalo a opravdu bych si to uz nechtela zopakovat. Navic mam pocit, ze zbytek tymu na tom ztratil jeste vic casu nez ja, a i kdyz je to asi vic bavilo a mozna jim to i vic dalo (ja se zivit programovanim nechci a nebudu), objem prace byl skutecne neumerny bodovemu ohodnoceni (ktere navic nikdo z nas uz neoceni, jak to u delsich projektu byva) i poctu stravenych let, o komplikacich zpusobenych prodlouzenim studia nemluve. Ale o tom uz tu psalo mnoho lidi prede mnou, stejne tak o tom, ze nove studijni plany to zrovna moc neresi (ackoli ja osobne jako lingvista bych se podle nich jiz projektu vyhnula :)). Ze si jeste rypnu do tech, kdo je vymysleli: jak po tech chudacich muzete chtit, aby behem dvou let (ve tretaku asi budou mit jine starosti, vzhledem k tomu, ze na rozdil od nas maji bakalarskou praci) studia zvladli projekt, N povinnych predmetu a diplomku? To se prece NEDA! Jestlize ted studuje bezny informatik 6 (nekdy i 10) let, co bude potom? Vzdyt uz ted nedostavaji koleje, musi za dalsi studium platit apod... Nyni pro deti, co je projekt jeste ceka: Asi jste dosud plni idealu :), tak vas z nich zkusim vylecit. Jak uz take psal nekdo prede mnou, daleko dulezitejsi nez volba tematu je volba lidi. A to nejen spoluprojektantu, ale i vedouciho. Je velmi prinosne az nutne, aby mel projekt jednu dominantni osobnost, ktera je schopna organizovat, programovat, ktera ma dobre srovnane, co se ma delat a jak, je schopna ostatni kopat a oni ji poslouchnou. Lhostejno, zda je to vedouci, nebo clen tymu. Absolutni demokracie se hrube nevyplaci, optimalni je osviceny absolutismus doplneny rozumnou mirou demokracie. Mejte stale na pameti (ale hlavne na zacatku pri vybirani tematu a planovani), co je vasim hlavnim cilem. A hlavnim cilem je projekt obhajit. Nevymyslejte megalomansky simulator sveta, operacni system apod. Vyberte si nejaky hezky sikovny programek, ktery vam nebo nekomu chybi a u ktereho je hned alespon zhruba jasne, co by mel delat a jak toho dosahnete. Neradujte se, kdyz vam komise schvali nadupanou specifikaci, protoze ted ji jeste budete muset splnit, proto se snazte toho naslibovat co nejmene. Z techto vsech duvodu je lepsi, kdyz si vyberete projekt, ktery nejaky vedouci vymyslel a vypsal, protoze v tu chvili by on mel mit srovnano, co a jak, mel by mit zajem na tom, aby se projekt dopsal a obhajil v rozumnem case, a mel by vas tedy rozumne kopat. Samozrejme podobnou roli muze sehrat i dominantni clen, ktery take prijde s nejakym zajimavym tematem, ale pozor na "kecaci typy" - meli jsme jednoho clena, ktery neustale chrlil myslenky, takze jsme si mysleli, ze srovnano to ma a co vymysli, co pak i napise. Omyl, jeho nazory se postupne zacaly menit kazdy tyden, kodu napsal poskrovnu, ale neustale do vseho kecal, proto jsme jej nakonec museli vyhodit. Na kazdeho clena, ktereho neznate, si sezente reference, minimalne si od nej nechte ukazat, co uz naprogramoval (zapoctaky apod.) Jsou lide, kteri neradi programuji nebo kterym to moc nejde (ja). Takove musim zklamat - jeden clovek se neuzivi jen na pomocnych kopacskych pracech, programovat musi vsichni, bez vyjimky a hodne. Neumite-li cecko...vsak se pisi i projekty v Jave, v PHP, V Delfach... Naucte se aspon nejaky skriptovaci jazyk nebo schopne pracovat s databazi a vyberte si projekt, kde budete uzitecni. Specifikacni fazi rozhodne nepodcente, ale neprezente. Rozumne jsou 3 mesice, nerozumych je 14 dni nebo jeden rok :). Vsechno si piste, na jedno misto - na nasich celorocnich schuzkach padla rada napadu, ktere zapadly, ackoli prosly i konferenci, a pozdeji jsme pracne znovu objevovali jiz objevene. Najdete dostupne programy resici danou problematiku, nehledejte jen, co se vam na nich nelibi, ale i proc to tak maji, jestli vy vubec budete schopni dany problem vyresit lepe nez ony. Vykradejte myslenky, nevykradejte kod :) S dokumentaci tady asi budu mlatit prazdnou slamu :), ale opravdu se vyplati psat ji prubezne. Treba ve vycpavkovem case, kdy vam neco nejde, nedari se, nechce se vam ani omylem programovat...neopijejte se ani se neodreagovavejte ctenim pornostranek, odreagujte se psanim dokumentace :). Piste, jak program zkompilovat, nainstalovat (bude se hodit pro prubezne testery), komentujte funkce (pro automaticky generator docky), odpocinete si pri tom a pak muzete dal kodovat, stejne to jednou budete muset udelat a vas kod za vas nezdokumentuje nikdo jiny. Je velmi zadouci, aby sel projekt rozdelit na casti a kazdy byl zodpovedny za tu svou. Vyplati se i slibit clenum, ze kdyz budou mit svoje hotove, nikdo uz po nich nebude chtit nic dalsiho (vetsiho) - jinak maji (s vidinou, ze jim pak zase bude neco hozeno na krk) tendenci se flakat. Uz pri volbe tematu projektu je rozdelitelnost vyznamnou vlastnosti, na kterou se vyplati pohlizet. Ja neskoncila v blazninci z hadek se zbytkem tymu jen diky tomu, ze jsem si vybrala naprosto nezavislou cast, kterou jsem mohla patlat na vlastnim pisecku (a nemusela posleze jiz chodit na schuzky :)). Na druhou stranu pri prilisne nezavislosti muzete az pozde zjistit, ze nekdo treba nic neudelal, proto je treba vsechny casti programu pravidelne konstrolovat, odhadovat termin dokonceni a zkouset jejich vzajemnou propojitelnost. Nu, kecu jiz bylo dost, nyni k pouzitym nastrojum (vycet rozhodne neni konecny, jen s cim jsem prisla do styku ja) mailova konference - nutnost, bez komentare CVS - hostovano na sourceforge.net (jako u mnoha jinych projektu..) V zaverecne fazi vyvoje se vyplati pouzit vestavenou bugzillu, velmi jednoducha na pouzivani a vyhnete se hadkam, kdoze mel co opravit, proc to neopravil, jestli mu ten mail prisel, a proc teda do haje ta chyba zustala i v odevzdane verzi, kdyz o ni vsichni vedeli GNU Autotools - autoconf, automake, libtool - usnadnuji generovani configure skriptu a zajisteni prenositelnosti Doxygen - generovani dokumentace ze zdrojoveho kodu. Nevyplati se vsak spolehat na to, ze "posledni den neco vygenerujem a odevzdame", hlavni cast generovane dokumentace tvori vase vlastni komentare, proto musi byt peclive. html2latex - vytistene HTML neni hodno nazvu "tistena dokumentace", tato utilita sice zplodi vystup vhodny k dalsimu upravovani (tak den prace), ale kazdopadne pomuze a budete mit obstojne vysazenou dokumentaci, i pokud LaTeX neni vas uplne nejlepsi kamarad rpmbuild - zvlast pokud mate hodne exoticke zavislosti a potrebujete, aby vasi praci nekdo prubezne testoval, vyplati se dodat mu jiz zkompilovany rpm (deb..) balicek, pocet zavislosti se snizi na polovinu (ubyde potreba devel balicku, autoools apod.) a usetrite testerovi praci s instalaci.