Praca JAVA Software Engineer’a w Magnetic Point

Java to najpopularniejszy język programowania, wykorzystywany do tworzenia zaawansowanych rozwiązań software’owych. Jednym z obszarów działalności Magnetic Point jest partnerska współpraca z brytyjsko-polską firmą Cognifide, w ramach której współtworzymy zaawansowane projekty webowe dla największych światowych marek. Realizujemy aplikacje internetowe dla klientów o zasięgu globalnym, dlatego bardzo często pracujemy w zespołach rozproszonych, gdzie developerzy zlokalizowani są w kilku miastach w Polsce i na świecie.

Organizacja pracy

Wielkość każdego zespołu zależy od skali projektu. Zdarzają się realizacje, w których team liczy jedynie kilka osób, ale również takie, gdzie zespół składa się z kilkudziesięciu specjalistów, podzielonych na wiele podzespołów, równolegle pracujących nad wydzielonymi funkcjonalnościami.

Do współdzielenia pracy używane są różnorodne narzędzia. Dominują produkty firmy Atlassian - Jira, Bamboo, Bitbucket, choć znajdzie się też gratka dla wielbicieli klasyki i starego, poczciwego Jenkinsa.

CMS od Adobe

Wszystkie projekty, tworzone w ramach współpracy z Cognifide, oparte są o Adobe Experience Manager. Jest to zaawansowany system CMS, który znalazł uznanie w oczach wielu globalnych firm. Dzięki temu w portfolio Cognifide oraz Magnetic Point można znaleźć realizacje dla takich klientów jak Ford, Lincoln, Virgin Media, Adobe, Investec, Penguin Random House, Robert Walters.

Java Developerzy korzystają z technologii, które dostarcza im system AEM (Apache Sling, OSGi - implementacja Apache Felix, JCR - implementacja Jackrabbit Oak). Codzienna praca to jednak dodatkowo rozmaite technologie i języki programowania - w pracy przy projektach szerokie zastosowanie ma również skryptowy język Groovy.

Groovy Console - narzędzie, którego API wykorzystywane jest do automatycznego uruchamiania skryptów migracyjnych
Groovy Console - narzędzie, którego API wykorzystywane jest do automatycznego uruchamiania skryptów migracyjnych.

Większość naszych projektów aktualnie korzysta z wszelkich funkcjonalności języka Java w wersji 8, a w codziennej pracy wychodzimy z założenia, że code review jest tak samo ważny jak proces powstawania kodu.

Różnorodność pracy developera

W pracy Java Developera możemy wyróżnić kilka głównych obszarów, które powtarzają się pomiędzy projektami. Java developerzy lubiący działanie na czystym kodzie Javowym z pewnością polubią pracę z AEMem - tworząc nowe komponenty i dedykowane rozwiązania oraz rozszerzając istniejące funkcjonalności.

Z drugiej strony coraz częściej dla naszych klientów budujemy platformy, na które składa się wiele współpracujących ze sobą podsystemów. Adobe Experience Manager, który jest jednym z takich podsystemów, pozwala ludziom biznesu łatwo modyfikować prezentowane treści korzystając z gotowych do użycia komponentów. Komponenty pozwalają w intuicyjny sposób zarządzać prezentowanymi danymi, nie wnikając skąd one faktycznie pochodzą. Przy takim podejściu AEM pozostaje systemem do zarządzania treścią, natomiast za integrację z innymi podsystemami odpowiada dedykowana warstwa. Takie podejście sprawia, że integrowane podsystemy nie przenikają się wzajemnie.

Cognifide wspiera rozwój właśnie takiej warstwy integracyjnej, która powstała z inicjatywy naszych inżynierów i jest realizowana w duchu open-source. Warstwa ta jest systemem reaktywnym, który dzięki wykorzystaniu technologii Vert.x i RxJava 2.0 pozwala na bardzo efektywne wykorzystanie zasobów systemowy zachowując jednocześnie bardzo elastyczny model skalowania. Dodatkowo integracje przez nas tworzone mogą być realizowane w różnych językach programowania dzięki architekturze sterowanej zdarzeniami (wiadomościami).

Zainteresowanych narzędziem odsyłamy na Github’a https://github.com/Knotx oraz na stronę internetową http://knotx.io.

Schemat działania frameworka Knot.X, wykorzystywanego do implementowania integracji z zewnętrznymi usługami
Schemat działania frameworka Knot.X, wykorzystywanego do implementowania integracji z zewnętrznymi usługami.

Narzędzia autorskie Cognifide

Firma Cognifide posiada w swoim w portfolio szereg autorskich rozwiązań, które ułatwiają codzienną pracę i rozwijają AEMa. Jednym z głównych produktów Cognifide jest Zen Garden (https://www.cognifide.com/products-and-services/our-technology/zen-garden), narzędzie usprawniające pracę z Adobe Experience Managerem, zwiększające wydajność developerów, twórców treści i designerów. Zaproponowane przez programistów Cognifide pomysły inspirują programistów Adobe i wpływają na to jak dziś wygląda Adobe Experience Manager. Java Developerzy korzystają z funkcjonalności oferowanych przez Zen Garden, zmniejszając czas realizacji projektu.

Wykorzystanie produktu sprawia, że od pierwszych tygodni trwania projektów autorzy doskonalą treści, a zespół developerski pracuje jednocześnie nad systemem, z którego autorzy korzystają. Nowa wersja aplikacji często wymaga dostosowania struktury treści, na której operuje, a skrypty odpowiadają za przygotowanie tej struktury.

Jakość przede wszystkim

Jednym z narzędzi szeroko wykorzystywanych w projektach jest także AET (https://github.com/Cognifide/aet). AET to aplikacja webowa do automatyzacji testów, która pozwala na wizualne porównywanie aktualnie wyrenderowanej wersji strony internetowej do jej wcześniej zdefiniowanego wzorca. Przy jej pomocy możemy także badać „stan zdrowia” strony (health check), analizując metryki takie jak markup strony pod kątem W3C i accessibility, błędy JS oraz kody odpowiedzi HTTP. Dzięki temu możliwe jest wczesne wychwycenie niepożądanych zmian zarówno w źródle strony, jak i w jej widoku wyrenderowanym przez przeglądarkę. Ma to olbrzymie znaczenie podczas fazy developmentu, w szczególności przy podejściu CI/CD, kiedy niezbędna jest pewność, że każda kolejna zmiana w kodzie może zostać wydana w dowolnym momencie.

AET
Przykładowy raport narzędzia AET, pokazujący różnice w wyrenderowaniu strony względem wzoru.

Nie tylko JAVA

Zadania projektowe uzależnione są od danego stanowiska i specjalizacji. Jeśli jednak developer chce realizować zadania z innych obszarów – ma taką możliwość. W projektach pracujemy m.in. nad konfiguracją serwera Apache, analizą repozytorium wymagającą znajomość GITa czy automatyzacją zadań, związanych z continuous integration na Bamboo. Jeśli dodatkowo lubisz pracować przy interfejsie użytkownika, koledzy pracujący na stanowisku Front-end Developerów zawsze chętnie przyjmą dodatkową pomoc. Jeśli natomiast interesujesz się automatyzacją testów - osoby pracujące na stanowisku QA Engineer na pewno zaproszą Cię do zespołu.

Do tego szerokie używanie w projektach search engine’ów jak SOLR czy Elasticsearch pozwala na oderwanie się od zadań operujących na czystym kodzie Javowym.

Jeżeli jesteś zainteresowany dołączeniem do zespołu Magnetic Point, koniecznie odwiedź naszą stronę internetową i zapoznaj się z działem kariera https://www.magneticpoint.com/kariera