wtorek, 1 kwietnia 2008

Zarządzanie grupą rozproszonych programistów

Rozpoczynam temat z myślą, że jakieś bardziej doświadczone osoby pomogą mi w doborze jak najlepszych praktyk pracy zdalnej grupy programistów.
Z tego co mi się wydaje jedną z ważniejszych rzeczy w udanym projekcie informatycznym jest komunikacja w zespole. Do jak najlepszej komunikacji jak na razie został wybrany skype (nie ma problemu z tworzeniem konferencji paro osobowych).
Skype w praktyce (jeśli zespół jest rozproszony wtedy może zastępować codziennie spotkania w pracy):
- codziennie ta sama godzina konferencji, na której każdy z programistów opisuje co zrobił wczoraj i co planuje na dzisiaj (maksymalny czas na osobę nie powinien przekroczyć 3 -4 min).
Jak jest zaleta tej technologi ? Każdy z programistów wie co dzieje się w projekcie i do kogo się można zwrócić w razie wystąpienia jakiegoś problemu.
W jaki sposób zorganizować programowanie w parach (XP)? W tym wypadku przychodzi nam z pomocą NX dzięki któremu możemy współdzielić ekran, myszkę i klawiaturę z osobą po drugiej stronie globu.
Co do innych narzędzi usprawniających pracę programistów to zastanawiam się nad:
- cruise control (zautomatyzowane budowanie całego projektu uwzględniające junit i generujące raporty o aktualnym stanie projektu)
- trac + mylyn (jako w tyczka do Eclipse) (organizacja zadań z priorytetami)
- do tworzenia dokumentacji jakieś wiki (osobiście polecam jedno z prostszych dokuwiki)
- maven + svn (tutaj chyba nic nie muszę pisać:))
Jeżeli już ktoś pracował w rozproszonym środowisku programistów, proszę o wskazówki jak można usprawnić pracę i komunikację w takim zespole (i jakie narzędzia, praktyki były stosowane).

4 komentarze:

Łukasz Lenart pisze...

Nie wiem, czy nie lepszym rozwiązaniem jest Hudosn prostsza instalacja, duża rozszerzalność za pomocą wtyczek.

Nie wiem jak by to rozwiązać zdalnie, ale u nas jest taka zasada, że ten kto zepsuł builda musi poczęstować się cukierkiem o nie zbyt przyjemnym smaku (ponoć duński przysmak ;-)

Piotr Gabryanczyk pisze...

Co do rozproszonego zespolu - coz wspolczuje...
Prowadzilem taki projekt jakis czas temu - na prawde ciezko to wszystko skoordynowac. Mysle ze wiki bardzo wam pomoze. Co do programowania w parach - wydaje sie ze przez siec to bedzie "surreal". W programowaniu w parach bardzo wazny jest aspekt "fizyczny" (sam sie smieje jak to czytam), wiec przez "kabel" bedzie inaczej...

Co do narzedzi - z wiekszoscia sie zgadzam, wiec napisze tylko o tych pozostalych:

Cruisecontrol - era kamienia lupanego. Koniecznie zamien go na TeamCity. Konfiguruje sie pieknie przez web-interface. Uczysz sie go w 15-30min. Po czym masz dzialajacy build. Zamiast jednego serwera mozesz miec kilka build-agentow, wiec kilka buildow na raz. I najwazniejsze obsluguje tzw. "remote run" - to calkowita rewolucja - zanim zrobisz check-in teamcity odpala twojego patch-a na serwerze i sprawdza czy popsules build. W ten sposob unikasz 95% popsutych buildow.
Aha i wersja do 3 agentow jest za friko!!!

Co do mavena, jesli wszyscy programisci w projekcie go znaja dobrze, to pewnie wam sie uda. Jesli w tym projekcie chcecie sie go nauczyc to kategorycznie odradzam! Kilka razy przechodzilem przez mavena i za kazdym razem kosztowalo to duzo wysilku i czasu. Wiem jest bardziej elegancki niz ant i zaoszczedza pare minut przy klepaniu standardowych zadan jak kompilacja/jar/etc., zalatwia tez "niby" biblioteki, ale jest trudno zrobic cos niestandardowego przy uzyciu mavena. W swoich projektach ja po prostu uzywam standardowego pliku anta z makrami do tych wszystkich wymienionych zadan. Trzymam tez strukture plikow jak maven-ie "convention over configuration"

Piotr Gabryanczyk

Łukasz Lenart pisze...

Możesz podać jakieś przykłady problemów z Mavenem? Od dłuższego czasu zgłębiam ten temat, chodź maven jest rozległym tematem i skomplikowanym to powoli się do niego przekonuję.

Łukasz Lipka pisze...

dzięki za informacje Hudson i TeamCity nowe narzędzia do przetestowania w jakimś projekcie:) a co do programowania przez sieć w parach nie widzę problemu, robiłem tak raz refaktoryzacje do wzorców projektowych pewnego projektu przez NX z kumplem oddalonego o 800km i szło to super:) ja widziałem co on robi i w razie czego mogłem mieć wpływ na to co pisze, a po za tym cały czas byliśmy w kontakcie na skype, to prawie tak jakbyśmy siedzieli w jednym pokoju:)Z tego co czytałem to faktycznie TeamCity ma znaczącą przewagę nad Cruisecontrol, ale jeszcze nie miałem czasu tego przetestować:/ co do anta i maven zdecydowanie wybieram maven(w szczególności jak jakiś kod nie jest uzależniony od specyficznego IDE każdy może sobie go pisać w swoim ulubionym IDE)(po za tym jest mnóstwo pożytecznych wtyczek do niego i coraz większe wsparcie jeśli idzie o IDE). To by były moje trzy grosze:) ale chętnie poczytam jeszcze o narzędziach wspomagających prace grupową i o problemach jakie mogą występować w takich zespołach.