Wiele osób wyobraża sobie, że moje automatyzacje to taki chaos złożony z małych, rozproszonych systemów, których utrzymanie to udręka 😬
Nic bardziej mylnego.
Całość opiera się na pewnej strukturze 🧵 ↓
Gdy opublikowałem opis swojej automatyzacji powiadomień o wywozie śmieci, było kilka komentarzy w stylu:
"Seriooo? nie możesz po prostu ustawić budzika, wpisu w kalendarzu, czy aplikacji na telefonie? overengineering!".
Oczywiście, że mogę — ale nie jest to efektywna metoda.
Gdy projektujesz np. zasilanie w kamperze, to (mam nadzieję) nie ciągniesz wszystkich możliwych kabli do jednego centralnego miejsca przy akumulatorze, zużywając przy tym kilometry kabla.
Zazwyczaj przeciąga się jedną główną wiązkę przez pojazd i podłącza do niej urządzenia.
Podobnie postępuję przy projektowaniu systemu automatyzacji.
U mnie tych "wiązek kabla" jest wiele i nazywają się przykładowo:
↳ powiadomienia prywatne
↳ powiadomienia rodzinne
↳ baza wiedzy
Mam jeden, centralny system do powiadamiania rodziny o różnych sprawach, więc dla mnie zupełnie naturalne jest wpięcie nowego "urządzenia" (np. powiadamiacz o śmieciach) do tego systemu.
Automatyzując tylko jedną rzecz, wygląda to, jak overengineering.
Choć na początku może się wydawać, że instalacja np. aplikacji powiadamiającej o wywozie śmieci to najprostsze rozwiązanie, to jednak rodzina nie chciałaby mieć oddzielnej aplikacji do każdego rodzaju powiadomień.
Przy jednym zadaniu to super wyjście.
Przy dziesiątkach — piekło.
Podobnie działa mój osobisty asystent AI i baza wiedzy. Komunikacja odbywa się przez jeden endpoint API, do którego spływają wiadomości z Telegrama, maili i skryptów shellowych. Zero redundancji, wszystko w jednym miejscu.
Jeśli wpadnę kiedyś na pomysł, że super byłoby dodać do asystenta możliwość obsługi jeszcze np. poleceń wydawanych przez Slacka, to... po prostu podepnę Slacka do endpointa API za pomocą jakiegoś no-code i zadanie zakończone w ~10 minut 🤷♂️
System centralny rozwiązuje problem.
To podejście znacząco upraszcza proces automatyzacji. Dlatego też bardzo selektywnie wybieram narzędzia, z którymi pracuję.
Jeśli polecisz mi nowe narzędzie SaaS, to na początek sprawdzę jedną rzecz: czy posiada ono API. Nie posiada? No to papa 🚮
Nie zdecyduję się na listę zadań, na którą nie będzie mógł zaglądnąć mój automatyczny asystent, na kalendarz, gdzie nie doda mi zadania itp.
Wszystko musi być kompatybilne z "systemem centralnym".
Brak implementacji takiego "huba automatyzacji" prowadzi do chaosu i późniejszych stwierdzeń "LOL! Ile Ty godzin musisz poświęcić na utrzymanie tego wszystkiego! Pewnie więcej niż zaoszczędzisz iksdede".
Sekret tkwi w starannym projektowaniu architektury systemu.
Dlatego, gdy słyszę "po prostu włącz powiadomienia w każdej apce osobno", czy "zautomatyzuj to w nowej aplikacji XYZ" — odpowiadam "nie".
Wolę mieć jeden system zarządzający wszystkim, niż setki małych rozproszonych systemów, które miałbym doglądać, konserwować i utrzymywać.