Wierzymy, iż ktoś, kto wybierze Javę, będzie mógł w niej kodować jeszcze na emeryturze. Wywiad z leaderami Solbeg

geek.justjoin.it 8 miesięcy temu

Pavel Hraznykh i Maxim Grinevich opowiadają o obecności Javy w ich życiu zawodowym oraz o związanych z tym wyzwaniach. Pytamy ich, czy postęp w zakresie cyfryzacji oraz rozwój AI ma także wpływ na Javę i dlaczego przez cały czas warto się jej uczyć. Zapraszamy do lektury!

Cześć! Na początek opowiedzcie, proszę, coś o sobie. Czym zajmujecie się na co dzień zawodowo?

Maxim: Zajmuję się budowaniem długoterminowych relacji z klientami i inżynierami, a także organizuję zespoły i rozwijam ich liderów. Muszę rozumieć, jakie będą kolejne kroki, przewidywać i planować, co będziemy mieć za rok jak i w dłuższej perspektywie, jakie umiejętności są wymagane i co z nimi zrobić. Ponadto staramy się budować rozwojowe środowisko. Każdy ma jakieś ograniczenia i tematy, które go interesują. Naszym celem jest wspieranie inżynierów w procesie samorozwoju, nie tylko pod kątem konkretnego projektu, ale także ich własnej przyszłości.

Pavel: Jako Lead Developer, oczywiście głównym moim zadaniem jest rozwiązywanie problemów technicznych, a także pomoc innym członkom zespołu i nadzorowanie ich działań, trochę zadań operacyjnych, czasem mentoring, ale w naszym zespole mamy bardzo dobrych inżynierów, dlatego nie ma potrzeby mentorowania ich zbyt często.

Maxim, możesz opowiedzieć o swoich głównych wyzwaniach związanych z budowaniem i zarządzaniem relacjami z klientami?

Maxim: Zazwyczaj klienci oczekują stabilności, wysokiego poziomu umiejętności i odpowiedzialności za to, co tworzymy. Nie potrzebują ludzi, którzy po prostu zrobią to, czego ich nauczono, ale partnera, który obejmuje wszystko, co związane z technologią. Staramy się zrozumieć, jakie są prawdziwe cele klienta i organizujemy wszystko, nie po to, by mówiono nam, co robić, ale po to, by zaproponować to, co zrobić warto. Czasami choćby audytujemy niektórych klientów, którzy tego potrzebują.

Z drugiej strony mamy klientów, którzy dokładnie wiedzą, czego chcą. Wtedy po prostu wchodzimy i mówimy: Ok, my wiemy jak to zrobić. Tak czy inaczej, budujemy długoterminowe relacje, klienci polecają nas dalej, a my budujemy sieć. 95% naszych klientów wraca po nowe produkty lub aktualizacje, a ogromną część tych produktów tworzymy przy użyciu Javy.

Jeśli chodzi o relacje z klientami, ważne jest, aby postrzegać ich jako ludzi, a nie tylko przedmiot naszej pracy. choćby jeżeli znacie się tylko online, zawsze działa to tak samo, kiedy się otworzysz, oni też zaczną się otwierać. jeżeli jesteś zainteresowany ich uczuciami, potrzebami i celami, zaczynają odpowiadać tym samym i starają się zrozumieć również ciebie. Kiedy buduje się relację i zaufanie, obie strony są pewne nie tylko wyników, ale i całego procesu.

Pavel, jak balansujesz zadania Managera zespołu z zadaniami Lead Developera?

Pavel: Dobre pytanie. Czasami jest to trudne, ponieważ czas, który mam, jest ograniczony. Wymaga to ode mnie wysokich umiejętności organizacyjnych i zarządzania czasem, umiejętności skutecznego delegowania zadań oraz utrzymywania równowagi między obowiązkami technicznymi a kierowniczymi.

Otwarta komunikacja jest kluczem do skutecznego łączenia ról i zapewnienia sprawnego działania zespołu. Dzielę dni na zarządzanie i zadania techniczne, ale muszę być elastyczny i dostosowywać priorytety ponieważ zdarzają się też pilne zadania. Jako manager przestrzegam kilku harmonogramów, muszę sprawdzić, co dzieje się w zespole, przywitać się z chłopakami, zadać kilka pytań dotyczących pracy. Od czasu do czasu mogę umówić się na rozmowę w cztery oczy i po prostu zapytać o kilka codziennych, pozapracowych spraw.

Przez pewien czas, co miesiąc organizowaliśmy spotkania z zespołem. Chodziliśmy na basen i siłownię. To nie jest zarządzanie, a coś w rodzaju innej więzi. Uważam, iż powinienem mieć więcej kontaktu z ludźmi, nie od strony technicznej, ale bardziej ludzkiej, a wizyta na siłowni łączy (śmiech).

Kiedy i dlaczego Java pojawiła się w Waszym życiu zawodowym? Czy było to związane z konkretnymi projektami, czy też może ewolucją Waszych zainteresowań?

Maxim: Doszedłem do stanowiska managerskiego około 7-10 lat temu. Wcześniej byłem inżynierem Quality Assurance i pracowałem z Javą. Po pewnym czasie, kiedy objąłem stanowisko kierownicze, zbudowałem zespół Java, który następnie rozrósł się do działu, jednego z największych w naszym Business Unit. W miarę jak Java zajmowała coraz więcej sfer, domen, w których mogła być używana, inwestowanie w rozwój działu zajmowało coraz więcej czasu. Java pojawiała się w naszej pracy coraz częściej ze względu na swoje wszechstronne zastosowanie.

Pavel: Prawdę mówiąc, to nie ja wybrałem Javę, to Java wybrała mnie.

Na studiach miałem wiele trudności z nauczeniem się jej, ale po dwóch latach, po wielu książkach i kursach, naprawdę polubiłem Javę. Początkowo myślałem o być może innym języku, ale Java ma dla mnie imponujące zalety w porównaniu do innych technologii.

Na podstawie Waszych doświadczeń, jakie korzyści są najczęściej wymieniane przy pracy z tym językiem?

Pavel: Java ma bardzo dużą, silną i niezawodną społeczność. To także wiele kursów edukacyjnych oraz aktywne wykorzystanie przez firmy. jeżeli chcesz mieć solidną aplikację, to tylko Java. Ponadto jest to narzędzie darmowe. JDK Oracle ma niektóre płatne elementy, ale większość jest darmowa. Java ma platformę adaptacyjną JVM. Z technicznego punktu widzenia nie ma potrzeby posiadania dodatkowych platform, ani instalowania dodatkowych narzędzi. Java znajduje się wewnątrz JVM i może uruchamiać inne nowoczesne języki.

Czy Java to przez cały czas popularny język? Czy warto się go uczyć?

Maxim: Warto, bo to jeden z języków, które będą z nami przez następne dekady.

Wiele wysoko odpowiedzialnych aplikacji (bankowych, transportowych, fintech) jest oparta na Javie. W perspektywie najbliższych dziesięciu lat nie powinno być zmian w tych domenach, które oznaczałyby rezygnację z Javy na rzecz innej technologii.

Wierzę, iż ktoś, kto wybierze Javę, będzie mógł w niej kodować jeszcze na emeryturze.
Jedynym problemem jest to, iż tego języka praktycznie trzeba się uczyć codziennie, bo on się ciągle rozwija. Jest to niekończąca się nauka i ciągłe tworzenie rzeczy na nowo.

Pavel: Po słowach Maxima nam ochotę na nowo uczyć się Javy (śmiech).

Zgadzam się, to codzienna nauka. Ale tak naprawdę Java ma o wiele więcej zasobów edukacyjnych niż inne języki. Jest bardzo popularna z różnych powodów. Po pierwsze, jak już wspomniałem, jest to związane z kompatybilnością międzyplatformową. Inną kwestią jest to, iż jest to bardzo silny i fundamentalny język dla Androida, Kotlina, Scali, Groovy i innych systemów, które również sprawiają, iż Java jest świetnym punktem dla rozwoju i przyszłości.

A co nowego słychać w Javie? Czy postęp w zakresie cyfryzacji lub AI ma także wpływ na Javę?

Maxim: Manager musi wiedzieć, kiedy lepiej zamilknąć, dlatego oddaję głos Pavlowi

Pavel: Jeśli myślimy o AI, o IoT, to Java jest w tej chwili najpopularniejszym językiem do tworzenia własnych rozwiązań dla uczenia maszynowego, sieci neuronowych, algorytmów wyszukiwania. To np. takie rozwiązania, jak Google Vertex AI. Jednym z bardzo ciekawych projektów z użyciem Java w AI jest mobilny robot do badań koła podbiegunowego, który dociera do Grenlandii i Antarktydy. Być może słyszałaś też o Chatbot Alice. To również ELSA Speak, w której wykorzystano techniczną bazę wiedzy Google i innych usług.

Java w AI to w rzeczywistości bardzo powszechna rzecz i daje ogrom możliwości. jeżeli chodzi o moje projekty AI w Javie, to na co dzień używam Apache Jena oraz aplikacji opartej na modelach RDF. Wykorzystywałem również silnik JOONE (Java Object Oriented Nature Enginee), natomiast ten model wymaga dużo czasu maszynowego i bardzo potężnej maszyny do uruchomienia silnika neuronowego.

Czy możecie podać jakieś konkretne przykłady projektów, nad którymi pracujecie w tej chwili w Javie?

Maxim: Istnieje mit, iż firmy outsourcingowe są zaangażowane tylko w projekty low-level lub o niskiej jakości, podczas gdy w kilku projektach zajmujemy się opracowaniem nowych, core’owych rozwiązań. Wynika to z długoterminowej współpracy i solidnego zaufania.

Przede wszystkim pracujemy w tej chwili nad rozwiązaniami dla transportu. Jesteśmy odpowiedzialni za przetwarzanie wszystkich płatności za bilety, w ponad 15 różnych miastach i stolicach, a w tej chwili nasz zespół pracuje nad budową nowego systemu.

Pracujemy również nad projektami fintech, takimi jak tworzenie korporacyjnych kart kredytowych. Nasz produkt, dzięki kilku przycisków, generuje dla klienta wirtualne karty kredytowe, które mogą być używane do płatności podczas podróży służbowych.

Zajmujemy się też rozwiązaniem bankowym przetwarzającym transakcje między bankomatem a bankiem, w międzyczasie pracując nad nowym produktem całkowicie od zera. Pracowaliśmy również nad projektami usług publicznych. Czasami są to też małe projekty, np. dotyczące wynajmu samochodów, monitoringu lub bezpieczeństwa, a także związane z użytkowaniem urządzeń mobilnych. Rozwijamy również nowe domeny, gdzie wcześniej zaawansowane systemy IT nie były popularne.

Jakie są największe wyzwania, z którymi zwykle spotykacie się przy prowadzeniu projektów w Javie?

Maxim: Używamy różnych narzędzi, także tych powszechnie znanych, jak Kafka, których nie zawsze można po prostu domyślnie zainstalować i używać. Musisz nie tylko je skonfigurować, ale także dogłębnie zrozumieć ich działanie, aby uzyskać maksimum możliwości i opracować swoje rozwiązanie. Trzeba przy tym pamiętać o ich ograniczeniach i sposobie ich budowy, aby zmaksymalizować wyniki systemu.

Nie chodzi tylko o znajomość Javy, musisz znać wszystkie narzędzia, których używasz, znać procesy wewnątrz tych narzędzi, ponieważ tylko to zrozumienie pomoże Ci zbudować szybkie rozwiązanie dla konkretnych potrzeb, zachowując wymagany poziom jakości.

Pavel: Pierwszym wyzwaniem jest oczywiście kwestia wydajności. Aplikacje tworzone w Java są zwykle duże i złożone. Następny problem to generalnie kwestia pamięci. Aplikacje Java są bardzo „pamięciożerne”, a musimy unikać wycieków i używania dodatkowej pamięci.

Kolejne wyzwanie to oczywiście skalowalność.

Jakie rady dalibyście młodym programistom, którzy dopiero zaczynają swoją przygodę z Javą lub pragną się rozwijać w tej dziedzinie?

Maxim: Po pierwsze, Java, podobnie jak C++, C# czy inne stare języki, nie jest technologią, do której można wskoczyć w ciągu kilku dni. Zwykle żartuję, iż w pewnym momencie, gdy wydaje ci się, iż wszystko rozumiesz, twoja podróż dopiero się zaczyna. Największym wyzwaniem jest zachowanie otwartości umysłu, ponieważ można coś wiedzieć, ale zawsze pojawia się coś nowego, jakieś nowe elementy, dodatkowe biblioteki. Największą zmianą jest niekończąca się nauka. Sądzę, iż wielu inżynierów, którzy weszli w ten świat, mogło w pewnym momencie oczekiwać, iż wiedzą już wszystko, ale to się nigdy nie zdarza.

Z drugiej strony, zawsze możesz wykonać kilka prostych zadań, takich jak tworzenie CRUD, tworzenie obiektów bazodanowych i praca z nimi, dostarczanie danych. jeżeli się nie uczysz, będziesz wykonywał tylko proste zadania.

Pavel: Jeśli chodzi o młodych inżynierów, którzy chcieliby zacząć pracę, powiedziałbym, iż głównym wyzwaniem jest zdobycie doświadczenia komercyjnego lub jakiekolwiek innego. Zalecam zacząć od GUID, od SAM, we współpracy z aplikacjami open source, przynajmniej jedną lub dwiema. Może to być łatwy projekt, ale z różnymi bibliotekami, nie powinno to być tylko tworzenie, aktualizowanie, odczytywanie i usuwanie niektórych encji. To powinna być jakaś logika biznesowa. Wiem, iż bardzo trudno wyobrazić sobie coś dostępnego, ale teraz w sieci junior może znaleźć kilka pomysłów na stworzenie własnej aplikacji.

Moja propozycja jest taka, aby nie zaczynać od typowych rzeczy, takich jak biblioteka, library management, thread management itp. ale zacząć od bardziej biznesowych aspektów, aby korzystać z większej liczby bibliotek. Dependency management jest niezbędny do tego, aby stworzyć dobrą aplikację z interesującymi bibliotekami i silnymi rozwiązaniami. Trzeba też nauczyć się Linuxa.

Oczywiście junior powinien mieć solidną wiedzę na temat core’u języka, ale kluczową częścią jest posiadanie wizji architektury, związanej z bibliotekami. Kolejnym punktem są oczywiście umiejętności miękkie związane z krytycznym myśleniem o swoim projekcie, aby robić postępy i tworzyć ciągle nowe i lepsze rozwiązania.

Następnie umiejętności negocjacyjne, umiejętność zadawania adekwatnych pytań i zrozumienia nie tylko z perspektywy wysokiego poziomu, nie tylko z perspektywy „jak to zrobić”, ale też z głębszej.

Trzeci punkt to oczywiście języki. Może to być angielski, na początek przynajmniej w stopniu umożliwiającym czytanie dokumentacji lub dodatkowo inny język. Oczywiście książki, kursy i meetupy. Wielu inżynierów spotyka się na meetupach i zaczyna współpracować, dzieli się wiedzą i doświadczeniem, rozwija własne projekty, tworzy startupy.

Zawierając to w kilku punktach: naucz się podstaw, dołącz do społeczności Java, zdobądź doświadczenie w prawdziwym projektem, naucz się angielskiego.

Maxim Grinevich. Senior Project Manager oraz Program i Portfolio Manager w branżach IT, Rails, Bankowości, Radiologii, Mobile i Fulfillment. Jako Leader jest szczególnie doceniany za motywowanie oraz wspieranie kreatywności w zespołach. Jest doświadczonym sędzią największej i najbardziej prestiżowej globalnej nagrody dla PMO i profesjonalistów z dziedziny PM (PMO Global Awards).

Pavel Hraznykh. Swoją wiedzę i umiejętności w zakresie tworzenia aplikacji high-load, projektowania skalowalnych architektur i optymalizacji wydajności buduje od 12 lat. Organizuje i prowadzi projekty od podstaw. Potrafi stworzyć i wdrożyć rozwiązania w oparciu o ogólny opis lub dyskusję. Kierował zespołem 30 programistów i pracował nad kilkoma projektami deep tech.

Idź do oryginalnego materiału