Skrypty, spokój i sztuka niepowtarzania niczego dwa razy

Skrypty, spokój i sztuka niepowtarzania niczego dwa razy
translate This post is also available in English.
  • Niektórzy medytują. Ja piszę skrypty w bash, które dają mi znać, że wszystko jest w porządku.

Dobrze więc – automatyzacja.

Temat, o którym mógłbym mówić godzinami, aż ktoś uznałby, że mam alergię na pracę albo że coś jest ze mną nie tak. I częściowo miałby rację – nie znoszę powtarzania tych samych czynności, zwłaszcza jeśli maszyna może zrobić to za mnie.

Dlaczego?

Ach tak, "dlaczego?" - fundamentalne pytanie. Ludzie nie lubią, gdy je zadaję; jedni czują się wtedy kwestionowani, inni po prostu nie chcą zbyt głęboko rozmyślać nad własnymi nawykami.

A ja pytam, bo chcę zrozumieć proces. Bo kiedy go naprawdę rozumiem, mogę go ulepszyć - i oszczędzić czas oraz wysiłek wszystkim zainteresowanym.

Osobiście chodzi mi przede wszystkim o odciążenie umysłu. Jeśli coś może dziać się automatycznie, po co zajmować się tym ręcznie? Doba ma tylko 24 godziny - część z nich trzeba przespać, część sprzedajemy innym - nam samym zostaje niewiele. Po co tracić ten czas na zadania, które można zlecić maszynie - bez udziału człowieka?

Ale no, nie automatyzuję tylko po to, by oszczędzić czas. Robię to, by zachować spokój.

Każdy skrypt to cicha umowa z moim własnym mózgiem - obietnica, że jutro, za tydzień czy też w chwili zmęczenia nie będę już musiał myśleć o czymś, o czym nie chcę.

Skromne początki

Myślę, że moja pierwsza automatyzacja była bardzo prosta - Raspberry Pi działające jako serwer druku, dzięki któremu każdy w domu mógł drukować i skanować przez sieć (typowe "urządzenie wielofunkcyjne"). Nie było w tym tak naprawdę nic efektownego, ale działało mega. Oszczędzało wszystkim konieczność przepinania kabli i noszenia plików na pendrive’ach.

Wtedy jeszcze nie rozumiałem, o co w tym naprawdę chodzi. Ot, frustracja zamieniona w wygodę. Nagle nikt nie musiał już pytać: „hej, możesz włączyć komputer, muszę coś wydrukować”.

I tak to się zaczyna - irytacja zmieniona w coś pożytecznego. Naprawiasz coś raz, bo masz dość, a potem odkrywasz, że ta naprawa może być naprawdę przydatna. Ulepszasz. Przepisujesz. Tworzysz lepszą wersję. Aż w końcu skrypt nie wymaga już poprawek. Wtedy właśnie dzieje się magia. Wszystko po prostu działa.

Z czasem zaczynasz eliminować coraz więcej tych drobnych frustracji i uświadamiasz sobie, że możesz pójść z tym zdecydowanie dalej. I wtedy budzi się ciekawość…

Uporządkowane szaleństwo

Można by powiedzieć, że to, co robię, to pewien rodzaj szaleństwa.

Pewnie - mógłbym zrobić to szybciej ręcznie niż pisać skrypt xkcd #1205, i tak dalej. Ale czy na pewno?

Znam siebie na tyle dobrze, że wiem, że powtarzalne czynności po prostu wyłączają mi myślenie. Umysł zaczyna marzyć, a wtedy pojawiają się błędy - czasem drobne, czasem kosztowne. Automatyzacja przebija się przez ten szum - zmniejsza napięcie, zastępuje mentalną checklistę przewidywalnym systemem. Każdy skrypt to mały akt zaufania - przekonanie, że sprawy potoczą się tak, jak trzeba. Dzięki temu mózg może trochę odetchnąć i robić swoje bez tego nieustannego szmeru niedokończonych zadań.

Maszyna, jeśli dobrze poinstruowana, nie męczy się, nie potrzebuje snu i nie popełnia błędów. No właśnie - jeśli jest dobrze poinstruowana.

Problem polega na tym, że trzeba przełożyć świat ludzi na świat logiki. Jeśli to się uda, zyskujesz przewidywalność stabilnego systemu. Nie musisz się martwić, że coś się zepsuje. Możesz polegać na maszynie. Skupić się na twórczych rzeczach, które odkładałeś. Zająć się prostymi sprawami w domu. A może nawet po prostu pojechać gdzieś - i w końcu naprawdę odpocząć.

Pomyłka z gracją

Wszystko działa pięknie i gładko, dopóki nie przestaje. Co wtedy? Co, jeśli to ludzkie zamieszanie nie daje się do końca przełożyć na binarną naturę krzemu? Coś pęka. A gdy automatyzujesz życie, rzeczy stają się trochę… skomplikowane. W końcu nie możesz pozwolić sobie, by życie zawiodło przez prosty błąd. Ale jeśli zawiedzie - jak zaufać, że maszyna nie zawiedzie znowu?

I tu tkwi sedno - nie powinieneś był jej ufać już od samego początku.

Maszyna wykonuje kod i jest tylko tak „mądra”, jak kod, który w niej działa. Innymi słowy - potrzebny jest mądrzejszy kod. Błąd jest więc po stronie człowieka.

Dlatego zaczynasz pisać skrypty z zabezpieczeniami. Czasem też pozwalasz im wywalić błąd - i wtedy robisz coś ręcznie, raz jeszcze.

Trzymam się czterech zasad:

  1. Program ma działać.
  2. Jeśli zawiedzie - ma spróbować się naprawić.
  3. Jeśli to się nie uda - zaangażuj człowieka.
  4. Jeśli człowiek musiał interweniować - program wymaga poprawki.

To oczywiście oznacza niekończącą się iterację, aż kod przestanie spadać z krzesełka. A jeśli nie - no to trudno, czasem trzeba odpuścić.

Rytuał pisania skryptów

Pisanie skryptów ma w sobie pewien rytm - przyjemny stuk klawiatury, linie tekstu przesuwające się po terminalu. Najpierw frustracja, gdy coś nie działa, potem ulga, gdy wszystko wreszcie zadziała jak należy. I cisza po wszystkim.

Ha, zacząłem od nawiązania do medytacji - i chyba faktycznie to jest moja jej forma.

Rozwiązuję problem - raz. Może dwa. Czasem wiele razy. Myślę o wszystkich przypadkach brzegowych, o tym, co mogłoby pójść źle. A gdy coś nowego przyjdzie mi do głowy, mogę to po prostu dopisać.

W końcu osiągam coś stabilnego. Coś, co po prostu jest i działa. A kolejne zadanie, które kradło mi czas i uwagę, znika z mojego życia.

Może właśnie dlatego wszystko automatyzuję - bo nie znoszę marnotrawstwa. Nie czasu - w końcu czas spędzony z przyjemnością nie jest stracony - lecz myśli. Gdy każda powtarzalna czynność brzmi w głowie jak szum, chcesz zamienić ten szum w ciszę.

Sztuka niepowtarzania niczego dwa razy

Chyba o to właśnie chodzi - nie o oszczędność czasu, lecz o jego odzyskanie. Każdy proces, który działa beze mnie, oddaje mi kilka minut, kilka wolnych myśli, odrobinę przestrzeni, by znowu być człowiekiem. Nie muszę się zastanawiać, czy kopie zapasowe się wykonały, certyfikaty odnowiły, strony działają, zmywarka skończyła, sieć rozmawia, a zdjęcia są bezpiecznie zarchiwizowane. Po prostu działają.

A jeśli coś zawiedzie... to dostanę o tym znać.

Automatyzacja nie pozbawia życia wysiłku, ale czyni je lżejszym. To stałe, ciche napięcie, mówiące "czy o czymś nie zapomniałem?" - ustępuje miejsca zaufaniu. Zaufaniu do systemu i do tej wersji mnie, która go stworzyła.

I właśnie tam kryje się prawdziwy spokój. Wiedząc, że maszyny mają wszystko pod kontrolą, mogę wreszcie zająć się tym, czego nie da się zapisać w kodzie - życiem.