Development / Laravel / Outsourcing programistyczny

AUTOMATYZUJ CO SIĘ DA – czyli jak uprościć życie zespołowi programistycznemu

Proces tworzenia oprogramowania to obecnie nie tylko tworzenie kodu. Współcześnie wiąże się to z wieloma dziedzinami jak: procesy testowania, aktualizowanie środowiska developerskiego i produkcyjnego, dbanie o bezpieczeństwo aplikacji, praca zespołowa, monitorowanie postępu prac nad projektem, kontakt z klientem, praca z repozytorium kodu oraz wiele innych drobnych spraw. Aby zminimalizować obciążenie programistów oraz osób prowadzących projekt, konieczne jest zautomatyzowanie niektórych procesów oraz przyjęcie pewnych standardów.
W DevPark z uwagi na rozwój zespołu, postawiliśmy na kilka narzędzi wspomagających go w codziennych obowiązkach, jak i na stworzenie środowiska pracy wykorzystującego współcześnie dostępne narzędzia.

CO SIĘ DZIEJE – czyli zarządzanie projektem

Niezwykle istotne dla osoby zarządzającej, klientów jak i samych programistów, jest przejrzyste przedstawienie obecnie prowadzonych prac oraz planowanie następnych. Podczas pracy online, gdzie część zespołu pracuje zdalnie, istotne jest wybranie narzędzia wspomagającego taką pracę. DevPark postawił na JIRA. Bardzo praktycznym narzędziem jest tablica SCRUM oraz lista tasków zorganizowana w postaci backlogu oraz sprintów. Dzięki tablicy – każdy członek zespołu dokładnie wie jakie zadania są do niego przypisane oraz jaki jest postęp prac innych. Wspomaga to również proces testowania, dzięki czemu łatwo jest śledzić budowę kolejnych elementów systemu niczym budowlę z klocków.

GDZIE JEST KOD – czyli repozytorium kodu

Z repozytorium kodu spotkał się chyba już każdy współcześnie pracujący programista. Bez niego, praca w zespole byłaby niemal niemożliwa, a na pewno bardzo uciążliwa. My postawiliśmy na Bitbucket, który idealnie integruje się z JIRA

JAK TO URUCHOMIĆ – czyli o serwerach i środowisku developerskim słów kilka

Dlaczego warto mieć w zespole doświadczonego administratora serwerów? Bo jeden taki człowiek, potrafi zaoszczędzić czas sporej ilości programistów. Oszczędność wynika nie tylko z odpowiedniej wiedzy dotyczącej samej administracji. Dość częstą praktyką jest, że konfiguracje środowiska powierza się programistom, co często wykracza poza ich zakres wiedzy i zajmuje im więcej czasu – niekoniecznie z idealnym efektem. Jest to duży błąd – ponieważ programista zamiast skupić swoją pracę na tym, na czym się zna, marnuje cenny czas na naukę spraw nienależących do jego dziedziny. Administrator zrobi to o wiele szybciej i efektywniej.
Kolejną zaletą doświadczonego administratora jest umiejętność stworzenia środowiska automatyzującego niektóre procesy. Zespół programistów co jakiś czas musi opublikować swoje zmiany – na serwerze developerskim w celu sprawdzenia, a później – na produkcyjnym.
Podczas pracy w SCRUM ilość drobnych zmian jest dość częsta. Choć proces publikacji złączonego kodu nie zajmuje sporej ilości czasu, o tyle ilość aktualizacji sumarycznie daje tego czasu dość sporo. W DevPark postawiliśmy na wykorzystanie JENKINS oraz DOCKER.
Dzięki użyciu Dockera znacząco zmniejszyliśmy zasobożerność kolejnych instancji środowisk developerskich, a proces uruchomienia kolejnego zmniejszył się kilkunastokrotnie. Dodatkowo, każdy programista może pobrać obraz kontenera z Dockera i uruchomić lokalnie identyczne środowisko.
Dzięki Jenkins, proces publikacji kodu na serwery robiony jest automatycznie. Programista bądź Project Manager śledzi jedynie czy zakończył się sukcesem. Znacząco uprzyjemnia to cały proces. Dodatkowo, przed opublikowaniem kodu, Jenkins uruchamia testy – co z kolei wymusza na programistach dbanie o ich aktualizację (a częsta domeną programistów jest zapominanie o testach jeśli występuje presja czasu).

POROZMAWIAJMY – czyli komunikacja w zespole oraz monity z systemów

Jednym z kluczowych aspektów pracy w zespole jest komunikacja – zarówno z klientem jak i pomiędzy zespołem programistycznym, szczególnie przy pracy zdalnej. Idealnie w tej roli sprawdza się SLACK. Pozwala tworzyć kanały komunikacyjne dla poszczególnych projektów, a także organizować komunikację z klientem poprzez utworzenie teamu i jego kanałów. Dodatkowa integracja z systemami takimi jak Bitbucket, Jenkins, JIRA pozwala na bieżąco monitorować zmiany i komunikaty wysyłane z tych systemów.

Oczywiście samo użycie systemów wspomagających pracę nie przynosi niesamowitego wzrostu wydajności bez odpowiedniej metodyki pracy i zgrania zespołu. Jednakże przy odpowiednich praktykach i w miarę zdobytego doświadczenia, pozwala znacząco zoptymalizować czas pracy jak i zmniejszyć obciążenie związane z ilością zadań do zrobienia dla poszczególnych osób w zespole.