Jak jeden commit zmienia workflow? O dyscyplinie!
Opowiadam o wpadce, która zmieniła mój workflow i zmusiła mnie do stworzenia checklisty przed commitem. Dzielę się zasadami, które dają mi większą kontrolę nad kodem - i życiem.
Programowanie
Jestem takim geniuszem programowania, że kiedyś w jednym z projektów wycommitowałam swoje hasło do jednego z kont. Nie wiem szczerze mówiąc, jak one się tam znalazło. Chyba jakaś kopiuj-wklejka, która zniknęła mi z pola widzenia. Co więcej… problem jednak, polegał na tym, że zbyt szybko sprawdzałam kod przed commitem. Większość rzeczy robię zbyt szybko. Czasem warto, czasem nie, ale tym razem zabolało. Oczywiście kolejny commit nie wchodził w grę, no bo jednak hasło tak czy siak by zostało w historii. W sumie hasło zawsze można zmienić, ale tutaj w historii przede wszystkim zostałby mój wstyd. Dziwne w ogóle, że kod nie wypluł tego jako błąd, ale hasło nieszczęśliwie wkleiło się w jakiś komentarz. Pewnie jako błąd wychwyciłabym to przed zacommitowaniem.
Wtedy, miałam taką taktykę, że po commit’cie wchodziłam na Github i sprawdzałam czy poszło to co powinno, i czy zmiany są OK. Dzisiaj wiem, że ta taktyka nie była najlepsza. Chociaż była i tak lepsza niż żadna! Gdybym nie panowała nad tym w żaden sposób, to pewnie te hasło wisiałoby sobie w kodzie, aż ktoś, kto by do tego zajrzał zapytałby mnie co to za dziwny zbitek liter i cyferek… Czy próbowałam na kogoś rzucić jakiś czar?
Tak czy siak… Powinnam była sprawdzać kod przed commitem, a później tylko kontrolnie zerkać. Teraz tak robię, wtedy nie. Commit szybko usunęłam i przywróciłam kod sprzed commitu, żeby nie było śladu w historii. Oczywiście zmieniłam też hasło na nowe, bo tamte było już całkowicie spalone. Na szczęście nie był to też komercyjny projekt, ani nic dużego, co od razu trafiłoby do internetów.
Checklista
Ta sytuacja zmusiła mnie do zmiany mojego flow, bo jak się okazuje - aktualny system był awaryjny. Był to idealny pierwszy krok, do przygotowania sobie checklisty przed zacommitowaniem nowej zmiany. Checklista świetnie sprawdziła mi się w aktualnej pracy i też w projektach, które aktualnie robię. A zatem - co sprawdzam przed commitem?
Jestem frontendowcem, więc najpierw zaczynam od mini listy związanej z wyglądem nowej funkcjonalności. Na ten wygląd w tym momencie składają się: dark/light mode, responsywność, otwieranie/zamykanie menu w aplikacji.
W zależności od tego jaka to funkcjonalność to często też sprawdzam, czy jakieś rzeczy wokół tego się nie wysypały. Te side-effects czasem potrafią mnie przytłoczyć. Niby prosta, mała zmiana, a do przetestowania jest połowa systemu.
Usuwam wszystkie console.log, debugery, sztuczne timery czy testowe placeholdery.
Poprawiam komentarze, nazwy funkcji i nazwy zmiennych. Czasem piszę je w bałaganie, żeby coś tylko sprawdzić czy przetestować. Daję sobie tutaj czas na weryfikację, czy nie wysyłam jakiegoś bałaganu.
Sprawdzam sanityzację inputów - jeżeli jakikolwiek dodawałam lub zmieniałam. Zdarza mi się o tym zapomnieć, więc dorzuciłam to do checklisty przed pushem.
Mamy u siebie system lang dla różnych języków. To co jest ważne, to żeby nie wpisywać żadnych wyświetlanych treści na sztywno tylko poprzez lang. Z tym też wiąże się ciekawa historia - przybliżę ją jako anegdotkę niżej.
Ostatni etap sprawdzeń to porównanie kodu przed i po. W VSC robi się to bardzo wygodnie. Usunięte linijki są zaznaczone na czerwono, a dodane na zielono. W ten sposób sprawdzam czy nie dodałam gdzieś entera, czy mam dobre tabulacje i czy czegoś nie usunęłam. Czasem koduję z AI, więc na tym etapie sprawdzam też czy AI nie dodało jakichś dodatkowych, niepotrzebnych śmieci.
I ostatnia najważniejsza rzecz! Sprawdzam czy mój kod jest aktualny i nie mam żadnych zmian do pobrania z zdalnego repo. Robię to już przed samym commitem, po wpisaniu jego treści i wybraniu plików.
Teraz anegdotka!
Kiedy dołączyłam do projektu pierwszy raz spotakałam się z tworzeniem aplikacji w różnych językach. Używamy tutaj lang’ów, mamy do tego odpowiednie pliki. Jak dodajemy treść, to dodajemy ją od razu w językach, które obsługuje aplikacja. Oczywiście nie wiedziałam o tym na początku. Implementowałam większą rzecz, w której trochę tych słów występowało i wszystkie zakodowałam normalnie jako treści. Miałam to opublikować w konkretnym terminie, zaraz zresztą przed moim urlopem. Przekazuję kod do Code Review i dostaję odpowiedź: “A czemu treści nie są w lang?” … W jakim LANG? Teraz już wiem w jakim. 3 godziny zajęło mi przeniesienie wszystkich treści. Urlop był potrzebny bardziej niż myślałam.
Offtop
Dzisiaj w offtopie troszkę o dyscyplinie. Robię pewne rzeczy tylko po to żeby je robić, bez motywacji, bez celu, bez otoczki wokół tego. Czytam książkę i trafiłam na taki cytat, którym chciałam się tutaj podzielić.
Dyscyplina to wolność - Jocko Willink
Ten cytat totalnie ze mną rezonuje. Weźmy za przykład bieganie. Całe życie utrzymywałam, że nie lubię tego robić. Wypracowałam ze sobą pewien schemat - oparty na niemyśleniu o bieganiu, tylko na bieganiu. Nie planuję treningów sama - robi to dla mnie trener. Biegam zawsze w te same dni - to jest element dyscypliny. Biegam bez względu na pogodę - to też element dyscypliny. Mam zestaw ubrań na ciepło i zestaw ubrań na zimno. Nie myślę co ubrać, bo wiem. Jeżeli dziś jest dzień biegowy to po skończeniu pracy, po prostu biegam. Biegam najczęściej tę samą trasę - dzięki temu nie myślę, gdzie dziś pobiec. To brzmi jak nie-wolność. Ale dla mnie to wolność. Dzięki temu nie zastanawiam się czy ja na to dzisiaj mam ochotę, czy ja mam motywację, czy ja to lubię, czy ja mam czas, czy mam co ubrać albo gdzie mam biec. Ja to po prostu robię. Robię w ten sposób, w pewnym sensie mechanicznie, automatycznie sporo rzeczy. To mi daje wolność, to pozwala mi skupiać się na innych rzeczach - bardziej wartościowych dla mojej głowy.
Nawaliłam dzisiaj tyle myślników co jakiś pospolity AI. Trudno, uwielbiam je!
Za tydzień będzie dużo o cyber-sec, zostaw maila!


Każdy ma takie wpadki, moja największa to nieudany rebase, gorąco nie polecam! ;)
Kto nie usunął bazy produkcyjnej niech pierwszy rzuci kamieniem 😀 a tak serio fajna lista i podejście do dyscypliny. Rezonuje i ze mną.