Jestem zwolennikiem automatyzacji. Jeżeli wykonujemy jakąś czynność kilka razy i jest to czynność, którą można zautomatyzować, to ta rzecz powinna zostać zautomatyzowana. Codziennie publikuje posty, jakbym codziennie radno o 8 musiał usiąść do publikowania wiadomości w sieciach socjalnych to by mnie szlak trafił. To by zawsze trwało około 5-10 minut. To jest 5-10 minut mnie na coś co mogę robić – rozkoszować się kawą, czy po raz tysięczny czytać bajkę o Dumpo (głos nagrany na taśmie się nie sprawdził, głos nagrany i przekręcanie przeze mnie kartek się nie sprawdziło, nagranie video się sprawdziło ale nie dlatego, że Ami nie oglądała, a dlatego, ze miała komórkę i mogła co innego oglądać).

Tak samo robię z pracą. Jeżeli mogę sobie ułatwić życie to robię to. Ale są momenty w których znaczna liczba ludzi by stwierdziła, że robię coś ręcznie co można by było z automatyzować. I pewnie ma rację. Mam jednak algorytm decyzyjny kiedy decyduje się na automatyzacje. I jeżeli choć jeden punkt nie zostanie spełniony. Z automatyzacji nici.

  1. Nie rozumiem jak ona działa
  2. Nie rozumiem jak ona jest wykorzystywana przez narzędzia zewnętrzne
  3. Nie rozumiem po co ona jest potrzebna

Nie rozumiem jak ona działa

To jest bardzo ważne, by automatyzacja miała ręce i nogi, muszę ją rozumieć. Co ona robi i do czego ona służy. Co jest potrzebne i co jest jej wynikiem. Jeżeli nie rozumiem jak coś ma działać pod spodem to uzależnienie się od tej automatyzacji może i przeważnie kończy się tragicznie. Nagle przestaje nam coś działać i nie wiemy dlaczego. Nie zrozumieliśmy tego na początku, coś wyklikaliśmy, teraz zapłacimy za to cenę.

Na przykład w ten sposób nadpisałem kiedyś całą stronę devWarsztatów wywalając wszystkich prelegentów i wszystkie warsztaty. Coś się zmieniło, ja nie rozumiałem skryptu do końca. Puściłem kod i boom, all zniknęło. Na szczęście backup i rollback pomogły.

Nie rozumiem jak ona jest wykorzystywana przez narzędzia zewnętrzne

Często automatyzacji podlega część naszej developerki. Kod będzie gdzieś z deployowany, zgrany, skopiowany. Jeżeli ja nie rozumiem jak narzędzie korzystające z mojego skryptu działa i na jakiej zasadzie to jest wykonywane, to ja wolę kontrolować to niż dawać się kontrolować narzędziu.

Dla przykładu, narzędzie może kontrolować to jak paczki nuget są tworzone, następnie kopiowane i na końcu wykonywany jest nasz skrypt. Nie wiem jak to narzędzie tworzy nuget, jest to opisane, ale tego nie rozumiem. Skoro nie rozumiem, to nie korzystam z tej automatyzacji w narzędziu. Sam dodaje u siebie tworzenie nuget. Ważne by proces był przeze mnie w pełni zrozumiały.

Nigdy nie zrozumiałem MSBuild. Zamiast tego zrozumiałem jak działa PowerShell i byłem wstanie zrobić za pomocą psake to samo co mogę zrobić w MSBuild. Ale to też oznacza, że nigdy nie zrobiłem build systemu w oparciu o Microsoft Build Server. Nie wiem, nie rozumiem, jak to działa i kiedy to działa. Ale rozumiem TeamCity. Rozumiem Octopusa. Rozumiem PowerShell. Rozumiem psake. Wiem jak te narzędzia ze sobą współgrają i na jakiej zasadzie działają. A jak wiem, to mogę z tego skorzystać.

Inny przykład, nie rozumiem jak VSTS działa z dockerem i jak ten cały proces jest spięty. Widziałem go, potrafiłbym go pewnie skopiować. Ale nie rozumiem. Więc wole mieć własny skrypt, który mi odpali mój projekt w dokerze.

To nie jest tak, że nie chce się nauczyć  tego jak to jest robione. Chcę, ale przeważnie brak jest informacji opisujących na jakiej zasadzie to działa, istnieje za to prosty tutorial: kliknij, upuść i będzie Ci all działało (do póki nie zaktualizujemy sytemu, nie wprowadzimy poprawki na buga, będziemy funkcję supportować itp.).

Nie rozumiem po co ona jest potrzebna

To jest pytanie typu kura czy jajko. Może być tak, że nie rozumiem po co ona jest potrzebna i nie potrafię tego napisać. Może być tak, że wiem jak ją napisać ale dalej nie wiem po co ona jest nam potrzebna.

To jest ważne rozróżnienie. Bo skoro wiem jak napisać, to znaczy, że potrafiłbym to zautomatyzować, tylko nie widzę sensu w tym. Nie jest to powtarzalne? Nie daje to korzyści? Ktoś więc musi mi to wytłumaczyć, tylko, że tutaj mogę się bronić i dawać argumenty dlaczego nie.

Nie wiem jak to napisać i nie wiem po co to jest – miejsce do dyskusji w której osoba nie tylko musi mi wytłumaczyć po co, ale także do czego jest nam ta automatyzacja potrzebna.

Ogólnie bez zrozumienia, nie ma u mnie automatyzacji.

Słowo końcowe

A jak u was wygląda automatyzacja? Kiedy się podejmujecie zautomatyzowania czegoś? Czy najlepiej w ogóle nic nie automatyzować bo i po co, 5 minut w tą czy w tamtą nie ma znaczenia?

 

4 KOMENTARZE

  1. Dokladnie. Aby stworzyć automatyzację, korzystać z rożnych aplikacji czy narzędzi, trzeba zrozumiec po co ją robimy i co nam to da.

    Zarówno zawodowo jak i prywatnie korzystam z różnych form automatyzacji.
    np. gulp / grunt – by nie zastanawiać się czy za kazdym razem uzylem preprocesorów / concat / mini / sftp do wszystkich plików ;-)
    prywatnie mocno korzystam z ifttt.com, mające mnóstwo gotowych przepisów: np. zagwiazdkowanie maila daje zaplanowane zadanie w todoist / evernote na jutro o 10:00. albo wysyłam fotkę do instagrama, automatycznie backupuje je na dropbox / gDrive. .

    a to tylko drobinka :)

  2. Też się zgadzam, że najpierw lepiej rozumieć proces, może nawet mieć trochę wprawy w ręcznym robieniu czegoś powtarzalnego zanim się weźmie za automatyzację ;)

    To ja dorzucę przykłady paru drobnostek które oszczędzają pewnie mniej niz minutę, ale zmniejszają irytację:
    * greasemonkey i skrypt zmieniający wersję artykułów na MSDN na angielską, albo wpisujący za mnie komentarz na allegro ;)
    * bookmarklety wypełniający za mnie formularze (przy web developerce)
    * automatyczne backupowanie danych co jakiś czas
    :P

ZOSTAW KOMENTARZ