This is the basic stuff
This is the basic stuff – takie stwierdzenie padło z moich ust, kiedy na warsztatach z klientem, przy podstawach wysokiej dostępności zaczęliśmy od „prostych” rzeczy takich jak działanie load balancera, health check i jak ma się do tego wysoka dostępność. Podstawowych w moim rozumieniu. Ten wpis nawet pierwotnie miał to tłumaczyć. Przed rozpoczęciem pisania puściłem aktualizację systemu i w ramach aktywnego oczekiwania postanowiłem chwilę pobiegać, aby ułożyć w głowie co chcę napisać. Czynność ta spowodowała wywrócenie całej koncepcji owego postu.
Warsztaty o których wspominałem, prowadziłem z Gutkiem, który jednego z wieczorów podsumował z jaką łatwościś wspominam „basics”. Zwrócił mi uwagę, że nie wszystko może być tak podstawowe i oczywiste jak mi się wydaje… No właśnie czym są podstawy w świecie IT? Świecie bootcampów? Tak często zmieniających się technologii? Masy “ekspertów”?
Mając w chwili obecnej tych “kilka lat doświadczenia zawodowego w IT”, dochodzę do wniosku, że podstawy, to solidnie przerobiona teoria wraz z jej zrozumieniem na poziomie studiów inżynierskich z „informatyki”. Matematyka dyskretna, podstawy systemów operacyjnych, podstawy architektury systemów, algorytmy, struktury danych, sieci, podstawy systemów rozporoszonych. Moim zdaniem, osoba która uzyskała stopień inżyniera w 9 na 10 przypadków nie ma tej wiedzy lub jej zrozumienia. W sumie od początku wszyscy nastawiają się na PRAKTYKĘ bo kto by się teorią przejmował ;-). Stare dobre „łączymy teorię z praktyką, nic nie działa i nikt nie wie, dlaczego”. Tak samo wcześniej wspomniane bootcampy. Kilka osób, które spotkałem po takowych faktycznie robiły coś “we froncie”. “Zakomitowały” plik do repozytorium, czy inne istotne rzeczy z punktu widzenia fakturowania klienta, ale brak im było… szukając dobrego określenia – wyrobionego warsztatu pracy z komputerem i środowiskiem, w którym pracują.
Co dają podstawy? W mojej opinii dają możliwość zrozumienia jak coś działa. Podwaliny do budowy naszej zawodowej intuicji. Łatwości łączenia co z czym zadziała. Co nie ma sensu, a co jest warte przetestowania albo nawet pewnikiem do działania.
Potem w dalszej części pozwala to na szybsze poznawanie nowych rzeczy. Tak naprawdę od strony naszych technologii nie ma żadnych niesamowitych innowacji, jak to wszyscy mówią. Innowacja jest w spsobie użycia, dotarcia do użytkownika, modelach biznesowych. W implementacji to odkopywanie konceptów, upraszczanie ich w użyciu. Nie szukając daleko – pojęcia wirtualizacja, kontenery, model aktora. To naprawdę stare koncepty, które teraz są „new normal”, albo wchodzą do szerszego użycia.
Znając podstawy łatwo być nam „quick Learner”, uczyć się szybko. Prowadzi to jednak do pewnego problemu – zaczynamy zakładać, że wszyscy wokół oczywistości znają i nie będzie problemu z ich zrozumieniem czy realizacją (oj cierpią na tym wyceny niektórych projektów).
Upraszczanie ma też inny pozytywny aspekt, jeśli stosujemy je do produktów naszej pracy. Stary dobry KISS. Używanie podstawowywych komponentów, usług, technik, wzorców czy algorytmów, często może przynieść naprawdę świetny efekt. Bardzo często nie potrzebujemy do tego wagonu supernowoczesnych microservices, Kubernetes, wyrafinowanych PaaS, SaaS czy też rozwiązania klasy „enterprise” za taczki pieniędzy czy abstrakcji goniącej abstrakcję :-)
Jeśli chcesz zacząć z podstawami na nowo, to zacznij od materiału dla studentów. Jeśli zamiast materiałów miałbym polecić książkę “na start”, to jest to „Zrozumieć programowanie” od Gynvael Coldwind.
Jeśli natomiast miałbym oceniać siebie - to jestem przeciętny w podstawach. Skąd taka ocena? Widzę innych jak używają podstaw do rozwiązywania, wydawałoby się skomplikowanych problemów oraz wiem jak dużo mi brakuje i gdzie wracam do podstaw, aby nabrać płynności :-)
Czy te kilkaset słów ma dla Ciebie jakieś sens?