Zarządzanie projektem i praca w grupie – #PPZF cz. 3

Zarządzanie projektem programistycznym to coś, czego uczymy się niemal codziennie. Podobnie z pracą zespołową – każda rozmowa, spotkanie czy konferencja poprawia nasze umiejętności komunikacji, planowania czy przewidywania zdarzeń. Dzisiaj pokażę wam kilka aplikacji, które starają się usprawnić właśnie te obszary naszego programistycznego życia.

Na początek jednak małe podsumowanie tego co znajduje się w cyklu #PoznajProgramowanieZaFree:

  1. Środowiska programistyczne i edytory tekstu (dostępny tutaj)
  2. Wdrażanie (instalacja) i utrzymywanie tworzonych rozwiązań (dostępny tutaj)
  3. Zarządzanie projektem i praca w grupie (jesteś tutaj)
  4. Skąd czerpać wiedzę, czyli najlepsze darmowe zasoby internetowe (dostępny tutaj)

Gotowi? Część trzecia przed nami!

Praca zespołowa to naturalny etap rozwoju projektu

W każdym projekcie większym od typowej aplikacji konsolowej przychodzi w końcu czas na zaproponowanie kolejnej osobie możliwości dołączenia do projektu. Być może potrzeba nam rąk do pracy, być może po prostu chcielibyśmy się komuś pochwalić – ważne jest tylko to, że w całym procesie zwanym  “wytwarzaniem oprogramowania” pojawia się obok nas kolejna osoba.

Na starcie warto byłoby wybrać kanał komunikacji w projekcie. Następnie musimy też zadbać o możliwość współdzielenia kodu i wspólnej pracy nad nim. Kiedy mamy już miejsce na przechowywanie kodu źródłowego, to warto byłoby mieć pogląd na bieżące postępy prac nad projektem. Oczywiście nie wszystko musimy trzymać w głowie – przydadzą się nam narzędzia do notowania i tworzenia bazy wiedzy o naszym projekcie. A czy współdzielić będziemy tylko kod? Oczywiście, że nie – będziemy się pewnie wymieniać plikami, dokumentami czy schematami. Dysk w chmurze jest wtedy rozsądnym rozwiązaniem.

Zapraszam więc do zapoznania się z przykładem lekkiego “stacka” technologii potrzebnych do pracy zespołowej i zarządzania projektem, opartego o znane i lubiane aplikacje webowe i nie tylko.

Komunikacja w zespole – Slack, Skype, Gitter

Na początek komunikacja – komunikacja która jest podstawą każdego dobrze prowadzonego projektu. Zarówno ta “w realu” jak i ta przez łącza internetu.

W projektach programistycznych zwykłe komunikatory nie do końca wystarczają – potrzeba nam aplikacji która poza funkcją pisania umożliwi nam wymianę plików, być może wideorozmowy, a przede wszystkim czaty grupowe i kanały dla wielu osób. Co więcej, każda kolejna integracja takiej aplikacji z rozwiązaniami zewnętrznymi (jak np. Slack i aplikacje todo czy boty) będzie dla nas zyskaniem kolejnych pięciu minut.

Slack, Skype oraz Gitter to rozwiązania, które spełnią większość potrzeb zespołów programistycznych. Są to aplikacje multiplatformowe, dostępne zarówno w wersjach natywnych jak i webowych. Slack i Gitter to produkty o wiele młodsze niż microsoftowy Skype – warto je pochwalić za nowoczesny UI oraz za ogromną liczbę integracji z tzw. “3rd party apps”. Skype ma zapewne tyle samo przeciwników jak i zwolenników, jednak od ponad dwóch lat jest to dla mnie podstawowy komunikator w pracy zawodowej i wciąż daje radę.

Repozytoria kodu / Platformy do zarządzania projektem – Github, Gitlab, Bitbucket

O repozytoriach kodu i korzyściach z używania systemu kontroli wersji pisał już w swoim poście Adrian (link tutaj).

W tym podpunkcie nie ma chyba zbyt wiele do dodania – nie ma projektu programistycznego bez współdzielenia kodu. Amen.

Wymienione portale to zazwyczaj nakładki na typowe repozytoria – są to rozwiązania gdzie poza kodem znajdzie się miejsce na zgłaszanie uwag do projektu, oznaczanie kolejnych wydań i monitorowanie postępów prac. Kwestia najlepszego zależy raczej od indywidualnych upodobań – ostatnio na topie jest chyba Gitlab, jednak i Github wziął się ostro do roboty po licznych komentarzach użytkowników na zostawanie w tyle.

Zarządzanie projektem i monitorowanie postępów – Trello

Działanie “na żywo”, czyli spotkania, analizy, rozmowy i rozwiązywanie napotykanych problemów to coś bardzo mocno związanego z zarządzaniem projektem. Jednak koniec końców przychodzi moment, kiedy nasze wnioski i bieżące postępy prac trzeba zebrać w jednym, dostępnym dla wszystkich miejscu. Aplikacji które pomagają w tych czynnościach są setki, ale ja osobiście polecam Trello.

Trello to prosty interfejs – listy i karty. Listy to przykładowo ToDo, In Progress, Done. Karty to poszczególne zadania bądź tematy / funkcjonalności. Do tego sporo rozszerzeń, opcji dostosowywania interfejsu i innych gadżetów.

Narzędzie tego typu dostarcza nam szybki pogląd na to gdzie aktualnie jesteśmy, w którą stronę idziemy i jakie pomysły zbieramy. Wiedza o tym kto zajmuje się danym zadaniem bez uderzania do niego co 5 minut z pytaniem “hej, co robisz?”.

Must have w każdym większym projekcie (aplikacja to IMO kwestia gustu).

Notatki i baza wiedzy – Evernote, OneNote

Powiedzmy, że jesteś szefem projektu. Masz w jednym palcu całą wiedzę związaną z historią projektu, z jego przebiegiem i zmianami. Nie musisz się obawiać przestojów w projekcie, bo przecież wiesz o nim wszystko.

A co gdybyś nagle musiał pilnie wyjechać i nie byłoby z tobą kontaktu przez dwa tygodnie? Czy członkowie projektu czekaliby na twój powrót bez wiedzy o tym w którą stronę iść? Czy sukces projektu byłby zależny jedynie od twojej fizycznej obecności w zespole?

Stanowczo odradzamy takie podejście!

Wspólnie prowadzone notatki, podsumowania spotkań i roadmapy na przyszłość w formie dokumentów do standard nawet w takich miejscach jak Google czy Facebook. Na początku być może wydaje się to zbędnym narzutem czasowym, jednak nagle po zrzuceniu setek wiadomości w jedno miejsce pojawi się w twojej głowie mnóstwo miejsca na nowe pomysły rozwoju projektu. Reszta zespołu również zareaguje pozytywnie, kiedy w dowolnym miejscu i czasie będzie mogła zobaczyć “w którą stronę właściwie to wszystko zmierza”.

Współdzielenie plików – Google Drive, Dropbox, OneDrive

Tego typu rozwiązań nie trzeba wam zapewne przedstawiać, jednak prawdziwy pazur pokazują one moim zdaniem dopiero przy pracy zespołowej. Współdzielone foldery, miejsca na dysku, przestrzenie w chmurze – to dzięki nim takie wynalazki jak płyty CD czy już nawet pendrive’y odchodzą w zapomnienie.

Share’owanie plików w projekcie i trzymanie ich w jednym wspólnym miejscu to niemal standard. Oczywiście narzędzia wymienione powyżej również oferują możliwość wymiany plików, jednak dla mnie taki współdzielony “fizyczny” folder a’la Dropbox czy Google Drive to strzał w dziesiątkę. Tutaj warto też zwrócić uwagę na to, czy dane rozwiązanie wspiera platformy mobilne – nie zawsze mamy przecież dostęp do komputera stacjonarnego.

Uff… sporo tego!

To prawda – aplikacji które można wykorzystać do pracy zespołowej i zarządzania projektem są setki. Najważniejsze jednak, żeby rozwiązania “on-line” nie zasłoniły nam działań “off-line”. Żaden komunikator nie zastąpi rozmowy na żywo, Trello nie usunie z naszego planu dnia spotkań, a Evernote nie będzie lepszym pomysłem niż burza mózgów w szerszym gronie z zapisywaniem pomysłów na tablicy.

Wymienione rozwiązania należy traktować jak wspomagacze – najlepiej byłoby, gdybyśmy w trakcie pracy ich… po prostu nie zauważali. Po czasie sami przekonacie się, że żadna, nawet najmodniejsza aplikacja nie zwróci wam czasu spędzonego na żmudnych aktualizacjach kolejnych wersji czy czasu spędzonego na nauce skomplikowanego interfejsu.

Nauczenie się odpowiedniego “flow” pracy z tymi aplikacjami również wymaga czasu, ale skrojony na miarę projektu dobór narzędzi tego typu uprzyjemni życie każdego zespołu programistycznego.