DevOps Engineer w 2024 roku – trendy, wymagania i oczekiwania. Wywiad z Łukaszem Listwanem
Aby być dobrym DevOpsem, trzeba umieć jasno komunikować się, dobrze współpracować, radzić sobie z problemami, dostosowywać się do zmian i być empatycznym. A jakie technologie obecnie są obowiązkowe na stanowisku DevOps Engineer? Przeczytajcie wywiad z Łukaszem Listwanem, który pracuje jako DevOps w ASSA ABLOY.
Spis treści
Cześć! Na początek opowiedz, proszę, o swojej ścieżce kariery. Co zadecydowało, że wybrałeś obszar DevOps?
Swoją podróż po świecie IT rozpocząłem od stażu, w którym głównym językiem programowania był C. Jednak zdałem sobie sprawę, że to nie jest obszar, w którym chciałbym pracować. Zdecydowałem się więc na zmianę i zacząłem uczyć się Pythona. Ze stażysty w Pythonie stałem się juniorem, a później midem. Moja praca jako Software Engineera skupiała się głównie wokół tego języka, który stanowił około 90 proc. kodu, który tworzyłem.
Mój kontakt z obszarem DevOps zaczął się, gdy w projekcie zdecydowaliśmy się przenieść się z platformy Gerrit na GitLaba. W ramach tego procesu musiałem zająć się przeniesieniem całego projektu, utworzeniem procesu CI/CD oraz zarządzaniem środowiskami testowymi.
Następnie postanowiłem zgłębić tajniki chmur. Zacząłem się uczyć przy pomocy kursów na platformie Udemy przygotowujących do certyfikacji AWS Associate Architect. W ten sposób poznałem świat chmury i zobaczyłem, jak wiele można osiągnąć, korzystając z tych technologii.
W międzyczasie robienia certyfikacji AWS rozpocząłem aktywne poszukiwania pracy jako DevOps Engineer. Już po dwóch miesiącach znalazłem pracę na tym stanowisku . Ta droga była dla mnie nie tylko zawodowym wyzwaniem, ale również pasjonującą podróżą, która trwa nadal.
Co najbardziej lubisz w swojej pracy jako DevOps Engineer? Jakie aspekty tej roli sprawiają, że czujesz się spełniony zawodowo?
To, co lubię najbardziej w mojej pracy, to różnorodność. Zadania rzadko się powtarzają, a dynamika projektów sprawia, że muszę często dostosowywać priorytety. Zdarza się, że problemy wymagają natychmiastowej uwagi, zwłaszcza gdy coś ważnego przestaje działać.
Jestem otoczony wieloma technologiami i narzędziami, co sprawia, że moja praca jest niezwykle zróżnicowana. Choć czasami przyswajanie dokumentacji różnych technologii może być przytłaczające, jednak jest to wyzwanie, które lubię. Zmienne otoczenie pracy sprawia, że zawsze trzeba być elastycznym i gotowym na nowe zadania.
To, co mnie najbardziej satysfakcjonuje, to umiejętność łączenia ze sobą różnych narzędzi i technologii w ramach praktyk DevOps w jednym projekcie. Harmonia między różnymi elementami, które składają się na efektywną pracę zespołową sprawia, że spełniam się zawodowo. To połączenie różnorodności, wyzwań i ciągłego rozwoju sprawia, że praca w obszarze DevOps jest dla mnie satysfakcjonującą ścieżką kariery.
Jakie są największe wyzwania, z którymi zazwyczaj musisz się mierzyć w pracy?
Moim zdaniem największym wyzwaniem jest obszar związany z networkingiem. Bez względu na to, czy pracujesz w chmurze, czy na lokalnych serwerach, networking zawsze stawia przede mną pewne trudności.
Walka z aspektami sieciowymi jest stałym elementem mojej pracy. Czasem debugowanie tego obszaru może być niezwykle trudne, a zapomniane lub źle skonfigurowane iptables potrafią wprowadzić spore zamieszanie. To obszar, który wymaga szczególnej uwagi i precyzji, aby uniknąć nieprzewidzianych problemów.
Jakie są Twoje główne zadania związane z pracą na stanowisku DevOps Engineer?
Główne obszary, które stanowią centralne elementy mojej pracy, to:
- Tworzenie / utrzymywanie pipeline’ów CI/CD: Narzędzia takie jak Gitlab (lub inne, np. Jenkins, TeamCity, GitHub Actions) są używane do dostosowywania pipeline’ów do specyfiki projektu – od budowy aplikacji przez testy po deployment. To wymaga komunikacji z zespołem deweloperskim, utrzymania stabilności i rozbudowy pipeline’ów w miarę rozwoju projektu.
- Tworzenie / utrzymywanie środowisk: Zajmuję się różnymi środowiskami, takimi jak te do uruchamiania jobów w pipeline’ach, środowiska testerskie, zapewniające infrastrukturę dla gitlab-runnera oraz środowisko produkcyjne reprezentujące ostateczną wersję aplikacji dla użytkowników końcowych. Zarządzanie obejmuje skalowanie, konfigurację, monitorowanie i utrzymanie środowisk.
- Maintenance: Moje obowiązki obejmują rutynowe prace utrzymaniowe, optymalizację, usprawnianie, naprawę błędów, dbanie o stabilność aplikacji i środowisk. Regularnie reaguję na awarie i dążę do stałego doskonalenia procesów.
Czy mógłbyś opowiedzieć, jakie są obecnie najważniejsze umiejętności wymagane od specjalisty DevOps?
Po pierwsze, umiejętność mówienia zrozumiałym językiem. Ważnym jest, aby potrafić tłumaczyć skomplikowane techniczne rzeczy tak, aby było to jasne dla wszystkich.
Po drugie, często wymagana jest szeroka współpraca z różnymi osobami, aby odpowiednio zrozumieć problem i go rozwiązać. To prowadzi do lepszych oraz efektywniejszych rozwiązań.
Po trzecie, trzeba być dobrym w radzeniu sobie z problemami. Jako DevOps często zmagasz się z trudnymi sytuacjami, technicznymi i organizacyjnymi. Trzeba być elastycznym i szybko znajdować rozwiązania.
Po czwarte, dopasowywanie się do ciągłych zmian to aspekt, który definiuje specjalistę DevOps. W dziedzinie, w której postęp technologiczny jest nieunikniony, zdolność do szybkiego przyswajania nowych umiejętności jest kluczowa. Stała gotowość do nauki pozwala utrzymać się na czele zmian i efektywnie dostosowywać się do nowych wymagań.
Na koniec, ważna jest empatia. Trzeba rozumieć innych członków zespołu i interesariuszy, żeby dobrze współpracować i rozwiązywać konflikty.
Podsumowując, by być dobrym DevOpsem, trzeba umieć jasno komunikować się, dobrze współpracować, radzić sobie z problemami, dostosowywać się do zmian i być empatycznym.
Czy istnieją jakieś konkretne technologie, czy narzędzia, których znajomość jest kluczowa dla pracy w obszarze DevOps?
Osoba pracująca na stanowisku DevOps, w zależności od projektu, może wykorzystywać różnego rodzaju technologie i narzędzia. W związku z tym zakres kluczowych technologii wykorzystywanych na tym stanowisku może się różnić.
Według mnie kluczowymi narzędziami / technologiami niezbędnymi dla dobrego DevOpsa są m.in. znajomość co najmniej jednej platformy pozwalającej na tworzenie CI/CD (Gitlab, Jenkins, TeamCity etc.), znajomość konteneryzacji / orkiestracji (Docker, Docker-compose, Kubernetes etc.), znajomość co najmniej jednej technologii pozwalającej tworzyć infrastrukturę za pomocą kodu (Ansible, Terraform, Chef), znajomość narzędzia pozwalającego na monitoring (np. Prometheus + Grafana) oraz na pewno na plusem będzie znajomość nawet w stopniu podstawowym jakiegoś języka skryptowego typu Python lub Shell. Warto również nadmienić, że aktualnym standardem w branży jest znajomość chmury (AWS, GCP lub Azure).
Uważam, że szeroki zakres technologii, które musi znać DevOps jest jednym z powodów, dla których jest na to stanowisko tak mało ofert stażowo / juniorskich.
A czy są jakieś konkretne cechy charakteru/umiejętności interpersonalne, które są szczególnie ważne dla specjalisty pracującego w tym obszarze?
W pracy tej kluczowym elementem skuteczności jest nie tylko wiedza techniczna, ale również zestaw cech charakteru i umiejętności interpersonalnych. Oto kilka z nich, które są szczególnie ważne dla specjalisty pracującego w tym obszarze:
- Zaangażowanie i motywacja – silne zaangażowanie, entuzjazm i motywacja do osiągania celów zespołu i organizacji są ważne dla sukcesu w tej branży.
- Umiejętność zarządzania stresem – praca jako DevOps może być wymagająca i dynamiczna, więc umiejętność radzenia sobie ze stresem i utrzymania spokoju pod presją jest istotna.
- Proaktywność – gotowość do podejmowania inicjatywy w rozwiązywaniu problemów i doskonaleniu procesów.
- Umiejętność przyjmowania konstruktywnej krytyki, dążenie do ciągłego doskonalenia i otwartość na naukę nowych umiejętności.
- Odpowiedzialne podejście do swoich obowiązków, umiejętność samodzielnego działania i podejmowania decyzji w ramach przydzielonych zadań.
Czy w ostatnim czasie zauważyłeś zmiany w wymaganiach stawianych przez firmy poszukujące pracowników na stanowisko DevOps?
Zauważyłem wzrost wymaganego doświadczenia. Nowe oferty dla juniorów niemalże nie pojawiają się, a firmy poszukują specjalistów z wieloletnim doświadczeniem, którzy bardzo dobrze znają się na konkretnych technologiach.
Jakie rady miałbyś dla osób, które dopiero zaczynają swoją drogę w świecie metodologii DevOps? Jak zdobyć pierwsze doświadczenie zawodowe?
Rozpoczęcie kariery jako DevOps może być trudne, zwłaszcza dla nowych w branży. Większość ofert pracy na staż czy dla juniorów wymaga znajomości wielu różnych technologii, co może być wyzwaniem dla początkujących.
Po pierwsze, ucz się samodzielnie. Wiele technologii używanych w metodologii DevOps, takich jak Docker, Kubernetes, Python, Shell czy praca z chmurą, możesz po prostu zgłębiać samemu. Projekty, które dodasz na GitHuba, będą świetnym dowodem twoich umiejętności podczas poszukiwania pracy.
Po drugie, zdobądź doświadczenie. Nie zawsze musisz zaczynać jako DevOps. Praca na innych stanowiskach, na przykład jako Operations Engineer czy Python Developer, może dać Ci cenną wiedzę. Często możesz trafić na zespoły, które już stosują praktyki metodologii DevOps, co pozwoli Ci się z nimi zapoznać.
Chociaż to nie zawsze jest łatwe, zbudowanie solidnych podstaw poprzez samodzielną naukę i zdobywanie doświadczenia na pokrewnych stanowiskach może być kluczem do sukcesu w świecie DevOps. Ważne jest, aby być zdeterminowanym i gotowym do wkładu wysiłku.
Czy branża IT wciąż intensywnie poszukuje specjalistów w tym obszarze, czy może rynek jest już bardziej nasycony?
Rynek pracy w tym obszarze rozwija się intensywnie, ponieważ wiele firm przechodzi na bardziej zaawansowane praktyki dostarczania oprogramowania, a metodologia DevOps odgrywa kluczową rolę w tym procesie.
Popyt na specjalistów jest wynikiem rosnącego zainteresowania praktykami ciągłej integracji i dostarczania (CI/CD), automatyzacji procesów oraz potrzeby zespolenia działań programistycznych i operacyjnych dla skrócenia cykli dostarczania oprogramowania. Na ten moment po ilości ofert pracy na stanowisko DevOps Engineera można śmiało stwierdzić, że rynek wciąż nie jest nasycony.
Jakie trendy obserwujesz w kontekście przyszłości pracy DevOps Engineera? Czy widzisz jakieś nowe technologie lub metodyki, które mogą znacząco wpłynąć na rozwój tego zawodu w najbliższych latach?
Koncepcja GitOps zyskuje na znaczeniu, umożliwiając zarządzanie infrastrukturą jako kodem poprzez systemy kontroli wersji. W obszarze CI/CD, procesy automatyzacji dostarczania oprogramowania stale się rozwijają, ułatwiając szybkie wdrażanie zmian.
Kubernetes i konteneryzacja utrzymują swoją popularność, umożliwiając skalowalność i przenośność aplikacji. Serverless Computing również zdobywa uznanie, eliminując potrzebę zarządzania infrastrukturą obliczeniową a takie serwisy jak AWS Lambda, AWS Fargate czy Azure Functions zyskują na popularności.
W obszarze bezpieczeństwa DevSecOps staje się powszechny, traktując bezpieczeństwo jako integralną część procesu dostarczania oprogramowania.
Warto także zauważyć rozwój sztucznej inteligencji i automatyzacji w operacjach systemowych (AIOps), co pomaga szybciej reagować na problemy. Ze względu na rozwój Internetu Rzeczy (IoT), edge computing nabiera znaczenia, przenosząc obliczenia bliżej źródła danych. Te trendy wskazują na rozwój DevOps w kierunku bardziej zautomatyzowanych, bezpiecznych i efektywnych praktyk dostarczania oprogramowania. Jednak warto śledzić nowości, ponieważ branża IT podlega szybkim zmianom.
Łukasz Listwan. DevOps Engineer w firmie ASSA ABLOY z kilkuletnim doświadczeniem jako programista. Zawodowo z aspiracjami do poszerzania horyzontów w usługach chmurowych głównie AWS oraz w rozwoju osobistym jako inżynier. Prywatnie entuzjasta sportu oraz gier komputerowych z zamiłowaniem do rywalizacji.
Zdjęcie główne pochodzi z Unsplash.com.