Wyślij zapytanie Dołącz do Sii
Wyślij zapytanie Dołącz do Sii
top-image
WSTECZ

Nadprogramowy wysiłek procentuje? Sprawdź, jakie inicjatywy podejmują developerzy .NET i fullstack w realizowanych projektach

Mówi się, że lepsze bywa wrogiem dobrego, a powiedzenie „done is better than perfect” w wielu sytuacjach znajduje zastosowanie. Jednak w Sii Polska nadprogramowy wysiłek procentuje. Takie podejścia wielokrotnie reprezentowali nasi inżynierowie, którzy dzięki swojemu doświadczeniu i eksperckiej wiedzy byli w stanie proponować klientom modyfikacje i usprawnienia, by dostarczyć im najlepsze rozwiązania. Często wychodzili poza określone wymagania klienta, tworząc lepsze produkty od planowanych. O przykładach takich realizacji opowiedzieli inżynierowie Sii Polska.

Sii Polska ma w tym roku co najmniej trzy okazje do świętowania. Przy okazji swoich 16 urodzin, spółka przekroczyła rekordowy miliard przychodów i liczbę 6 000 zatrudnionych pracowników. Ogromną ich część stanowią inżynierowie, a wśród nich programiści m.in. .NET, C#, Java, Python, C++ czy Front-end. W ramach projektów realizowanych przez Centrum Kompetencyjne Digital, opracowują nowoczesne oprogramowanie, tworzą rozwiązania z obszaru RPA, technologii chmurowych, cyfrowej obsługi klienta i e-commerce oraz wspierają klientów w zakresie cyfrowej transformacji.

Wśród realizacji jednostki można wymienić, chociażby stworzenie systemu planowania produkcji dla Ingenico Group, francuskiego producenta terminali płatniczych; systemu zarządzania licencjami i subskrypcjami dla Alinea Egmont, lidera innowacyjnych rozwiązań cyfrowych w sektorze edukacyjnym; transformację monolitycznego backendu w nowoczesną platformę microservice w chmurze dla Gyldendal, innowacyjnego domu wydawniczego w Norwegii czy stworzenie nowoczesnego systemu pomiarowego dla Leica Geosystems AG, globalnej korporacji wspierającej specjalistów ds. pomiarów na całym świecie. To zaledwie parę przykładów, pokazujących przekrojowo różnorodność projektów, w które zaangażowani są inżynierowie Sii Polska, tworząc interdyscyplinarne zespoły o uzupełniających się kompetencjach. W wielu z nich uczestniczą .NET i Fullstack developerzy.

O proaktywności i poszukiwaniu możliwie najlepszych rozwiązań, które przynoszą klientom wymierne korzyści, a im samym ogromną satysfakcję, opowiedzieli inżynierowie z Centrum Kompetencyjnego Digital.

Zmiany, które przewyższają oczekiwania klienta

Najlepszym przykładem wewnętrznej inicjatywy inżynierów Sii jest aplikacja webowa służąca do analizy i prezentowania danych szpitalnych. W efekcie prac powstał niezwykle użyteczny i łatwiejszy w obsłudze oraz utrzymaniu niż pierwotnie założono produkt. Beneficjentem aplikacji był dział klienta, będący częścią międzynarodowego koncernu, który dostarcza innowacyjne oprogramowanie i usługi doradcze w obszarze opieki zdrowotnej.

Pomysł na wprowadzenie nowych rozwiązań technologicznych w postaci nieplanowanej wcześniej aplikacji webowej powstał po stronie jednego z inżynierów na długo przed jego wdrożeniem.

– Będąc zaangażowanym w projekt dla klienta przez blisko 2,5 roku, miałem okazję bardzo dobrze poznać funkcje dostarczane przez naszą aplikację. Jej zadaniem było m.in. oszacowywanie i analiza kosztów pobytu pacjentów w szpitalu – mówi Bartosz Kaczorowski, Inżynier ds. Oprogramowania w Sii Polska. – Wiedząc, że od paru lat w projekcie nie były wprowadzane nowoczesne funkcje oparte na nowych technologiach, coraz częściej rozmawiałem z zespołem o potencjalnych kierunkach rozwoju. Wspólnie chcieliśmy zminimalizować czas potrzebny na dostarczenie nowej wersji oprogramowania do szpitali, zredukować czas poświęcony przez programistów na wsparcie przy wdrażaniu systemu oraz uniezależnić aktualizacje oprogramowania od uprawnień użytkownika zalogowanego na Windows – dodaje.

Pierwszym krokiem zespołu deweloperskiego było przygotowanie prototypu webowej wersji aplikacji File Inspector. Aby zwiększyć atrakcyjność rozwiązania, inżynierowie zdecydowali się wprowadzić dodatkowe funkcje, takie jak integracja z nowym serwisem do walidacji danych oraz możliwość przeglądania historii operacji wykonywanych na aplikacji.

Kolejnym krokiem było przygotowanie szczegółowego planu podziału prac w projekcie, na podstawie którego mógł być opracowany kosztorys czasowy projektu. Dzięki niemu manger projektu był w stanie oszacować koszt przedsięwzięcia, a deweloperzy mieli lepszą wizję projektu. Po zaakceptowaniu wcześniej wymienionego planu intensywnie rozpoczęły się prace. Wraz z tech-leaderem zostały przygotowane dwutygodniowe sprinty, w ramach których krok po kroku były realizowane zadania opisane w planie podziału prac. Dzięki temu tech-leader, manager oraz cały zespół miał jasny obraz, na jakim etapie znajduje się projekt.

– W ramach dodatkowej inicjatywy przed prezentacją postanowiliśmy wykorzystać środowisko Azure do stworzenia naszej aplikacji i zaprezentowanie jej przed klientem – wspomina Bartosz Kaczorowski. Jeszcze przed samą demonstracją zebraliśmy ponownie wszystkie informacje o wadach starej wersji i skonfrontowaliśmy ją z naszym rozwiązaniem, które było odpowiedzią na istniejące problemy. Ostatecznie udało nam się przygotować demo aplikacji, które zostało zaprezentowane klientowi. Klient mógł uczestniczyć w demonstracji nie tylko jako obserwator, ale również sam mógł skorzystać z aplikacji dzięki umieszczeniu jej w środowisku Azure. Nasz odbiorca był pod wrażeniem wykonanej pracy, m.in. krótkim terminem realizacji, dostarczeniem wszystkich funkcji starej aplikacji oraz wdrożeniem nowych rozwiązań – dodaje.

Klient postanowił rozwijać aplikację zgodnie z naszymi rekomendacjami. Jedną ze zmian było zastąpienie technologii RabbitMQ na rzecz gRPC dzięki czemu, nie trzeba było instalować dodatkowego oprogramowania po stronie klienta. Główną zaletą aplikacji jest jej elastyczność, dzięki oparciu o architekturę client-server (czyli instalacja wszystkiego na serwerze, podczas gdy klienci mogą korzystać z przeglądarki). Aktualnie została wydana wersja do testów w środowisku produkcyjnym.

Aplikacja hybrydowa i migracja z Angular JS do Angular

Zgoła odmiennym przypadkiem był projekt realizowany dla producenta innowacyjnych urządzeń audio prowadzącego działalność w ponad 50 krajach na całym świecie. Inżynierowie Sii pracowali nad aplikacją służącą do centralizacji i zarządzania dużą ilością sprzętu audio. Postawiono na nowe technologie i działania poprawiające jakość kodu aplikacji, dzięki czemu udało się zwiększyć jej bezpieczeństwo i wydajność, a na etapie prac – poprawić efektywność działań zespołu projektowego.

– Pracę u klienta rozpocząłem 3 lata temu. Wtedy aplikacja była napisana w AngularJS. Kiedy wraz z moim zespołem podjęliśmy się współpracy, framework był w fazie end-of-life, czyli wsparcia dla poprawek bezpieczeństwa, ale bez nowych funkcjonalności – mówi Vadim Peczyński, Senior Software Engineer w Sii Polska. Gdy dołączyliśmy do projektu, Angular implementował wsparcie dla nowych wersji języka TypeScript, zwiększał wydajność oraz tworzył silnik Ivy (pełne wsparcie od wersji 9). Od samego początku zależało nam na wykorzystaniu nowych technologii oraz silnego typowania do poprawy jakości kodu aplikacji. Często też paczki NPM nie były dłużej wspierane, a ludzie zaangażowani w ich rozwój skupiali się na wersjach paczek dostępnych dla nowego wtedy Angular 7.

Podczas rozpoczęcia prac największy problem w migracji stanowiła potrzeba skonfigurowania własnego skryptu Webpacka. Podstawowa konfiguracja nie jest bardzo skomplikowana, a w Internecie można znaleźć wiele przykładów, jednak zainstalowanie odpowiednich pluginów i stworzenie optymalnego skryptu dla dwóch frameworków nie jest już prostym zadaniem. Oprócz samego bundlowania aplikacji, w możliwie najmniejszych paczkach, priorytetem była również możliwość uruchomienia testów jednostkowych w obu frameworkach jednocześnie. Przygotowanie skryptu Webpack’a zajęło nam zdecydowanie najwięcej czasu.

Kolejnym krokiem była zmiana architektury aplikacji i instalacja paczek angular-hybrid, które umożliwiły „współpracę” między dwoma frameworkami. Wprowadzony został również nowy plik main.ts, który był kluczowy dla zainicjowania nowego Angular 9 w aplikacji. Cały proces przygotowania aplikacji hybrydowej, przy uwzględnieniu różnych prób i błędów, zajął około 2 miesiące. Jednocześnie zespół był zaangażowany w tworzenie nowych funkcjonalności.

– Najpierw aplikacja przeszła przez weryfikację naszego zespołu testowego. Później została wdrożona z sukcesem na produkcję. Choć to nie jest zupełny koniec naszej pracy – proces migracji cały czas trwa, to wprowadziliśmy aplikację na nowy poziom, zwiększając jej bezpieczeństwo oraz implementując nowe rozwiązania. Rozwój aplikacji hybrydowej pozwala nam stopniowo przepisywać komponenty i serwisy, ulepszać, zmieniać i wykorzystywać nowe wersje paczek, a jednocześnie pracować nad zadaniami z backlogu. Dzięki takiemu rozwiązaniu możemy przeanalizować każdy fragment kodu i go poprawić, co się rzadko zdarza przy pracy z już dojrzałą aplikacją. Znacznie wzrosła również nasza efektywność, po pierwsze dzięki lepszej znajomości kodu, a po drugie dzięki wsparciu narzędzi, takich jak Intellisense i Angular Language Service. Stworzenie aplikacji hybrydowej było, moim zdaniem, krokiem w dobrą stronę. Wymagało to od nas wiele wysiłku, ale wydaliśmy aplikację na czas, a praca nad nowymi rozwiązaniami sprawiła nam mnóstwo satysfakcji. Jesteśmy gotowi na kolejne wyzwania – dodaje Vadim Peczyński.

Inicjatywa i proaktywność przynosi obopólne korzyści – nie tylko biznesowe dla klienta, ale również te mniej mierzalne, choć równie istotne – dla inżynierów. Specjaliści Sii mogą rozwijać swoje umiejętności i czerpać satysfakcję z poszukiwania i wdrażania autorskich usprawnień, często na ogromną skalę. Czy więc nadprogramowy wysiłek opłaca? Zdecydowanie! W Sii cenimy zaangażowanie każdego z 280-osobowej społeczności zrzeszającej programistów .NET.

Sprawdź aktualne oferty pracy, a może to Ty już wkrótce zmienisz oblicze kolejnej aplikacji.

Może Cię również zainteresować

Pokaż więcej newsów

Bądź na bieżąco

Zapisz się do naszego newslettera i otrzymuj najświeższe informacje ze świata Sii.

ZATWIERDŹ

This content is available only in one language version.
You will be redirected to home page.

Are you sure you want to leave this page?

Einige Inhalte sind nicht in deutscher Sprache verfügbar.
Sie werden auf die deutsche Homepage weitergeleitet.

Möchten Sie fortsetzen?