nedeľa 8. júla 2007

Prvá tímová práca


Asi pred rokom (leto 2006) som začal s mojim priateľom pracovať na diskusnom fóre pre vývojárov. Moja myšlienka by sa dala prirovnať k issue tracking systému, aj keď som ten pojem vtedy nepoznal. Začalo to v autobuse cetou zo školy, keď som priateľa mojim nápadom trochu nadchol. Ešte nikdy som nepracoval na projektoch s niekým iným, tak som si pomyslel, že aké super to bude. Predstavil som si, ako naša práca rýchlo pôjde a tešil som sa, že niekoho môj nápad nadchol. Netušil som však, aké problémy tímová práca prináša. Chcel som, aby sme boli na tom rovnocenne, no môj spoločník ma od začiatku považuje (azda len formálne) za "vedúceho" projektu.

Naša práca začala návrhom databázy. Môj spoločník mal ohľadom nej už prvé pripomienky a keďže ich dobre argumentoval, bez väčších problémov som súhlasil. Okrem toho sa mi páčila diskusia typu "čo je lepšie?". Ďalej navrhol, aby sme pracovali pod vtedy novým frameworkom, s názvom CakePHP. Keď som si pozrel manuál a nejaké príklady, zdalo sa mi to byť zaujímavé a tak som sa to postupne začal učiť. Keď sme mali dohodnuté podmienky, dohodli sme sa, kto bude čo robiť a začali sme kódiť :-)

Môj spoločník neprestával vymýšľať stále nové nápady a tak prišiel na to, že by sme mohli používať aj nejaký Revision Control System. Keďže on je rodený linuxák a ja pracujem väčšinou pod oknami, bol s tým trochu problém. Nedokázal som vtedy poriadne sfunkčniť a pochopiť prácu systému darcs, ktorý v súčasnosti už hojne využívam. Svoje zmeny som ja posielal na mail vo forme ZIPu a spoločník zasa vo formáte diff, ktoré som musel ručne prepisovať do zdrojákov, lebo som ich nevedel aplikovať na zdroják automaticky... Boli to prvé známky nezhody, ktoré ma začali trochu štvať, ale potom som si zvykol.

Som typ človeka, ktorý kľúčové veci rád dohodne na začiatku a potom to v priebehu práce nemení. Je to z niekoľkých dôvodov, ako napríklad, že nemám rád, keď musím svoju prácu prerábať, ktorá je v pokročilom stave kvôli zmene nejakej kľúčovej veci. Ďalší dôvod je napríklad ten, že si na začiatku na niečo zvyknem a potom pre mňa nie je ľahké si zvykať na niečo iné. Môj priateľ ich tiež rád dohodne, ale bežne sa stane, že ich neskôr zmení a to ma privádzalo k nervom :-). Samozrejme aj ja som mal pár "skvelých" nápadov, ktorých som sa držal zubami-nechtami. Problémy vznikali tiež aj s hostingom alebo nefunkčnosťou nejakých vlastností. Ďalšie drobné problémy ako rovnaké kódovanie súborov a odsadzovanie riadkov ani nerátam. Najväčšie problémy boli samozrejme pri dohadovaní, čo ako bude fungovať...

Začiatkom augusta bol projekt s božou pomocou funkčne skoro hotový, keď tu zrazu mi môj spoločník oznámil, že projekt na neurčitú dobu "opúšťa". Fórum som chcel dokončiť čím skôr a rozhodne v lete, tak ma to dosť naštvalo a aj šokovalo. Nakoniec som projekt nechal tak aj ja...

K diskusnému fóru pre vývojárov sme sa vrátili až začiatkom tohto leta (2007), už ako o rok skúsenejší "programátori". Na začiatku som sa veľmi do projektu púšťať nechcel, a to hlavne z toho dôvodu, že som sa chcel venovať iným veciam, ako bol napríklad semestrálny projekt. Web ma veľmi neláka a tento projekt je jedným z mojich prvotín.

No nič, aj tohto roku sme sa pustili do projektu, ale keď som našu prácu sledoval, musím povedať (a pomyslene 3x zaklopať), že nám to ide naozaj lepšie, ako v minulom roku. Aj keď na začiatku môj spoločník trocha vymýšľal s darcsom, neskôr sa to znormalizovalo :-).
Priam bleskovou rýchlosťou sme sa dohodli používať kódovanie UTF8, odsadzovanie na 4 medzery bez použitia tabulátorov a framework CakePHP.

Plne som si začal uvedomovať, aké problémy môžu znova vzniknúť a preto som nakreslil pár konceptov, ktoré som si dal "odsúhlasiť". Keď mám povedať pravdu, teraz sa nimi vôbec neriadime a problémy aj tak sem tam sú :-/. Pomaly začínam chápať, že asi aj vždy budú a bolo by naivné myslieť si, že to vždy pôjde ako po masle. Najnovšie sme sa ťažko dohodli na tom, čo bude obsahovať bočná lišta a na ktorej strane bude (vľavo, vpravo). Argumentoval on, argumentoval som ja, no nakoniec sme sa našťastie dohodli.

Spoločník odrazu prestal byť spokojný s frameworkom CakePHP a tak našiel iný framework s názvom Konstrukt. Máme napísané už viac ako 50% kódu a preto nie som ochotný už nič prerábať a znova sa učiť ďalší framework. Povedal som mu to a v súčasnej dobe čakám na odozvu... (pozn. z roku 2010: vtedy mal Konstrukt problémy s kódovaním UTF8, tak sme do toho nešli, kedy som sa potešil, že ako ľahko som sa vyhol slovnej potýčke..)

Keď teraz sám pre seba čítam tento článok, rozmýšľam nad tým, či nebolo lepšie, keď som svoje projekty robil sám... (pozn. z roku 2010: Keď som sám, mám vždy pravdu - no nie?) Myslím si však, že aj napriek problémom, ktoré pri práci máme, je naša práca produktívna (pozn. z roku 2010: a myslím si, že bola oveľa produktívnejšia a mala správnejší smer, ako keby som to robil len sám) a máme z nej obaja radosť. Tímová práca prináša mnoho problémov, no niekedy ide práca rýchlejšie :-). Teraz to robím hlavne kvôli tomu, aby som sa naučil prijímať a presadzovať kompromisy a zlepšil si komunikatívnosť a argumentovanie :-))
Rovnako tak je tímová práca veľmi dôležitá pre naberanie nových skúseností, ktoré si ľudia v tíme navzájom dopĺňajú.

Poznámky z roku 2010:

Do tímovej práce som "spadol" viac menej nečakane, ale už dávno som to chcel zažiť. Až teraz zisťujem, ako veľmi som sa poučil z mojej vtedajšej skúsenosti.

Každý programátor má vlastnú predstavu. niekedy až veľmi odlišnú od ostatných. Predstava to nemusí byť zlá, no možno až tak nezapadá do kontextu ostatným.. Budovanie tímu je zrejme dlhodobejší proces, ktorý zahŕňa aj škrípanie ozubených kolies..

V tíme treba prejaviť tímového ducha - tj. schopnosť argumentovať a naopak nebiť sa do krvi pre blbosti - vedieť robiť kompromisy. Dôležité je držať sa pôvodných myšlienok a z nich vychádzať. Rozmýšľať a počúvať nápady iných, ale tiež snažiť sa, aby ostatní vypočuli tie naše. Tiež je dôležité nemeniť kľúčové veci dohodnuté na začiatku, ktoré majú vplyv na už vykonanú prácu, pretože projekt vtedy nerastie, ale naberá neurčitú podobu.

A to najdôležitejšie: veľa a o všetkom komunikovať

Toto leto bolo posledné, kedy sme sa projektu diskusného fóra pre programátorov venovali vo voľnom čase. K projektu sme sa však opäť vrátili, a to cez školský rok, kedy sme ho urobili odpiky ako zadanie pre predmet Technológie Softvérových Projektov 2 (TSwP 2). Použili sme jazyk Python, framework Django. Okrem fóra projekt vedel spracovať úlohy na štýl GTD (metóda *Getting Things Done* od Davida Allena). Naše skúsenosti a hlavne to, že sme už jeden druhého poznali, nám pomohli nájsť si spoločný jazyk a môžem povedať že skoro bez problémov sme projekt dokončili a úspešne obhájili :)

Pôvodné fórum ešte stále funguje na stránke: http://dev.phorum.cz

1 komentár :

Mašli povedal(a)...

Prácou v tíme jedinec získava určite veľa nápadov, skúseností,
zvyšuje si i svoje komunikačné schopnosti, stáva sa flexibilnejším. Mňa
osobne irituje, ak je môj spoločník produktívnejší. Potom mi akoby sami
„padajú veci z rúk“ a podvedome sa vzdávam, neviem prijať nižšiu
pozíciu. Ak som ja ten čo všetko ťahá, vytáča ma, že ten druhý bude
mať rovnaký zisk v podstate z „mojej roboty“. Málokedy sa stáva, že
môj spoločník je rovnocenný, pričom by mi aj sedel povahovo(na hystériu
som tam už ja :-D). Nevravím však, že ma to veľmi odrádza, alebo že sa
tomu vyhýbam.Radšej preferujem prácu vo väčšej skupine, nemám však rada,
keď mi niekto zo skupiny prekáža. Preferujem dualitnú prácu, kde ten druhý
jedinec je na tom vyššie odo mňa o nejaký ten stupeň, resp. že ma vedie,
ale stále som vedúci práce (napr. vzťah študent-učiteľ). Ale to je len
subjektívny pohľad, veď vieš, individualistky :-D