Wpis z mikrobloga

Jakiś czas temu zapytałem się Was, w tym wpisie, co powinienem zrobić, czy zostać w patologicznej firmie czy jednak zrezygnować?
Właściwie jednostronnie doradzaliście mi odejście. Postanowiłem to zrobić i uważam, że jest to jedna z najlepszych decyzji, jakie ostatnio podjąłem. W ramach podziękowania będę dzielił się z wami rewelacjami z jakimi miałem do czynienia.

W dzisiejszym wpisie postaram się przybliżyć wam jak wyglądała praca bez systemu kontroli wersji oraz braku podziału na development i produkcję przy 4-osobowym zespole.

W zasadzie istniała tylko jedna kopia projektu obecna na serwerze do którego miało się dostęp przez klienta FTP. Nie można było pobrać całego projektu na swój komputer i pracować lokalnie, ponieważ istniało duże prawdopodobieństwo, że ładując pliki z powrotem na serwer, nadpiszemy zmiany wprowadzane przez kolegów. Istniał nawet pewien rytuał, pytania współpracowników przed edycją czy plik jest wolny i ogłaszania wszem i wobec, że skończyło się edycję, zwalniając przy tym plik. Czasami tylko, ten system oparty o wzajemną komunikację i zaufanie zawodził i ktoś musiał nadrabiać 3h pracy.

Zapytacie pewnie, co jeśli właśnie zapisałem plik, zamknąłem edytor i wysłałem na serwer, a trzeb cofnąć bardzo dużo wprowadzonych zmian. Tutaj ćwiczyliśmy swoją korę mózgową, przywracając wersję pliku sprzed np. całego dnia pracy z pamięci. Ja byłem o tyle sprytniejszy, że wprowadziłem własny system wersjonowania oparty o samodyscyplinę. Co 15-30 minut zapisywałem kolejne wersje edytowanych przeze mnie plików, dodając sufiks w postaci aktualnej godziny. Okazało się to być bardzo pomocne, kiedy główny programista powiedział "Robisz jeszcze ten komponent o, który cię prosiłem? Jak tak, to nie rób i control-zetnij do poprzedniej wersji".

Cały ten system działał niesamowicie sprawnie, widać było, że wspólnym wysiłkiem jesteśmy w stanie osiągnąć niemożliwe. Tylko czasami zdarzało się, że w tym samym czasie parę osób robiło "push" na serwer, a projekt się wysypywał i każdy z nas analizował wprowadzone zmiany, by sprawdzić czy to czasem nie przez niego.

#programowanie #januszeit #januszebiznesu #naukaprogramowania już nie #pracbaza

Mam tych historii znacznie więcej, a nie chcę wołać za każdym razem wszystkich obserwujących wymienione tagi, dlatego proszę was o propozycję własnego tagu.
  • 34
@Shreder67: Nic nie stało na przeszkodzie, żeby zamiast robić sobie tego jak to nazwałeś "lokalne version control", żebyś korzystał z Git'a do tego. Po prostu zamiast pushować na mastera, kopiowałbyś na FTP, ale miałbyś korzyści płynące z historii, commitów itd. Jedynym bublem w tym misternym planie jest fakt, że zmiany kolegów musiałbyś i tak ręcznie "wkopiować" do swojego lokalnego repo (brak pull'a).
@asunez: Problem z brakiem vcs mogłem rozwiązać inaczej, ale to, że zastosowałem takie rozwiązanie, a nie inne wynika tylko z mojej niewiedzy. W projekcie nad którym pracowaliśmy pojawiła się cała masa innych problemów wynikających już bezpośrednio z jakości kodu napisanego wcześniej o których wspomnę w następnych wpisach.
@Shreder67: @rubytree: svna tez można zainstalować lokalnie jak ktoś nie umie w gita.
Ja w sumie od początku pracy zawodowej używam systemów kontroli wersji nawet do lokalnych plików, skrypcikow itp i backupuje to gdzieś-zawsze może szlag trafić komputer albo plik i wtedy co?
Kiedyś w jednej firmie mieliśmy system otaczania zmian komentarzami- próbowałem ich przekonać do svna-uznali, ze na co im to:)
@Shreder67 nieźle, dobrze zrobiłeś kumplu że odszedłeś z tej patologii ( ͡° ͜ʖ ͡°) w ogóle nie rozumiem jak można "planować" wprowadzenie vcs. Przecież to trwa pół godziny łącznie z postawieniem maszynki na zdalne repo. Od siebie dodam że robiłem jakiś rok temu audyt procesu developmentu w jednej małej firemce na śląsku i robili dokładnie to samo ( ͡º ͜ʖ͡º) widać że to