TLDR Jak Wy się uczyliście wszystkich technikaliów nie związanych typowo z samym pisaniem aplikacji, takich jak budowanie CICD, orkiestracja, operowanie w chmurze itd.?
Temat:
Zastanawia mnie jak to jest u innych osób z nauką w pracy różnych cuda-wianków nie związanych z samym przepisywaniem dokumentacji z języka naturalnego na język zrozumiały dla komputera, a bardziej z kwestiami infrastrukturalnymi.
Mój kontekst:
Jestem z nich totalną nogą i przyznam szczerze, że nawet nie bardzo wiem jak nieinwazyjnie dla portfela te tematy ugryźć. W pracy kodzę, ładnie odnajduję się w czyimś kodzie (przejęta aplikacja, utrzymanie, dodawanie funkcjonalności), ale w zasadzie gniję sobie w jednym języku i na spotkaniach, podczas gdy widzę że dookoła technologie sobie latają jak powalone i na dniach w zasadzie uderzyło mnie jak bardzo ubogim stackiem dysponuję.
W projekcie mamy scalę i trochę pythona. Komunikacja z Airflowem, cicd (cicd i repo na Azure DevOpsach), batchowe dane na ADLSie, obliczenia na k8sie albo Databricksach, mamy UI, pewnie o jakichś innych rzeczach zapomniałem. Teoretycznie aplikacja hula, mogę ją sobie zmieniać, rzeczy dowożę spoko i generalnie ogarniam całkiem spoko to co muszę ogarniać.
No ale właśnie o to chodzi, że ogarniam to, co muszę. Ta aplikacja już istnieje. Nie mam nawet pojęcia czy byłbym w stanie skonfigurować ją samemu, postawić całą architekturę. Umiem połączyć klocki, komponenty, ale co z tego na dłuższą metę? Nawet nie wiem czy jestem w stanie postawić wirtualną maszynkę, na której bym postawił instancję Airflowa. Może bym umiał lecąc z dokumentacją, może nie. Kod airflowowy? Ale jak on miałby na nią lądować? Jak miałoby wyglądać CICD? Nigdy sam nie robilem, odziedziczyłem. Połączenie z Databricksami i ADLSem? Chyba jestem w stanie połączyć, ale nie wiem. Databricks - jak skonfigurować klastry? To że jestem w ogóle w stanie dobić się do keyvaulta to w zasadzie przypadek, bo akurat kiedyś stworzyłem samemu sobie instancję Azure'a (i wygenerowałem koszty z czapy) i sobie ogarnąłem ot tak, rekreacyjnie. Moje konfigurowanie klastrów to robienie sobie ich analogicznie do już istniejących (podpatrując service principale z innych projektów i ogólnie konfigurację). Nawet nie wiem jak kod z samej .jarki łączy się dokładnie z ADLSem, bo funkcja juz była gotowa.
Generalnie nie jestem aż takim tępym trepem jak by po tym wstępie mogło się wydawać i rozumiem mniej więcej jak wyglądają zależności między poszczególnymi aplikacjami (skąd odbiera jakie credentiale kod zaszyty w .jarce, co się z czym łączy i tak dalej), bez tego nie byłbym w stanie w ogóle pracować natomiast gdybym miał zacząć projekt od zera to bym chyba osiwiał i na koniec projektu mógłbym ze stresu powiesić się na gumie od majtek (ale z chęcią taki projekt bym w sumie przygarnął).
Do sedna
W zasadzie nie wiem jak w tej sytuacji się rozwijać, bo na każdym kroku czuję, że brak swobody we wszystkim dookoła rdzenia moich obowiązków totalnie związuje mi ręce. Mnie nie wystarczy obejrzenie filmiku na yt czy przeczytanie dokumentacji, ja po prostu muszę zbudować coś produkcyjnego, patrzeć jak to wybucha i to łatać. Innej opcji nie widzę.
Dwa widziane przeze mnie rozwiązania problemu:
- postawić sobie samemu instancję Azure'a, narazić się na koszy z czapy (i nawet te bez czapy dalej są kosztami, a przecież można by było wydawać odpowiedzialnie pieniądze korporacyjne w zbożnym celu zamiast wydawać swoje bo "a nuż nauka się przyda"), ale ostatecznie to i tak nie rozwiąże to wszystkich moich problemów, bo rozwiązania treningowe to nie rozwiązania produkcyjne
- siedzieć dalej w projekcie i liczyć na to, że manna z nieba skapnie (i skapnie, ale tempo będzie dla mnie totalnie niesatysfakcjonujące, bo mi już odbija z frustracji). W zasadzie to chyba będę dalej siedział przy tej opcji
- zwolnić się i wpakować się w jakiś mobbingujący konsulting, gdzie może zostanę zmuszony do tego, by wszystko ogarnąć za hajs firmy (albo i nie ogarnę i zostanę wywalony na ryj). Ale to konsulting i nowa firma, więc nie wiem z czym przyjdzie mi się mierzyć. I albo się uda trafić, albo się nie uda i będę jeszcze bardziej sfrustrowany.
Jak u Was wyglądał proces nauki tego rodzaju technikaliów? Uczyliście się sami z tutoriali? Kolejno technologie dochodziły w projektach? W jakich projektach? Przejmowaliście projekty już istniejące czy greenfieldy?