Archiwum kategorii: R&D

Konteksty i ich wpływ na rozwój oprogramowania

W branży IT niezmiernie ważnym obszarem jest development. Angielskie słowo “develop”, w dosłownym tłumaczeniu oznacza rozwijać i to właśnie ten rozwój jest dla nas obecnie niesamowicie istotny. Dziś, pisząc o nim, mamy na myśli przede wszystkim ekspansję wykorzystywanych w organizacji metod pracy nad oprogramowaniem. To aspekt, który mocno determinuje odkrywanie innowacji technologicznych, eskalację oprogramowania oraz samo wdrożenie systemu. Obserwując różne, popularne w ostatnich latach modele pracy zespołu wybraliśmy, najważniejsze w naszej opinii, zalety każdego z nich. Ich połączenie okazało się dla nas na tyle interesujące, że postanowiliśmy wdrożyć u siebie model pracy w zespołach kontekstowych.

Czym są i jak powstały zespoły kontekstowe?

Konteksty charakteryzują się ukierunkowaną strukturą rozwoju, a ich główna idea polega na kumulacji wiedzy w ramach konkretnego, ograniczonego obszaru. Inspirację dla modelu zespołów kontekstowych stanowiło podejście Domain Driven Design. W przypadku naprawdę rozwiniętego oprogramowania mamy do czynienia z pewnym rozmyciem się wiedzy, w wyniku którego, zachodzące w nim procesy mogą stać się niejasne. W praktyce może to powodować zahamowanie rozwoju oprogramowania. Skupiając pracę i rozwój projektu w niezależnych kontekstach umożliwiamy zespołom gromadzenie wiedzy i dzielenie się zdobytym doświadczeniem. Ponadto, wymuszona przez konteksty mniejsza skala, a więc skupienie się na ograniczonym, konkretnym obszarze, znacznie ułatwia analizę czy projektowanie. Zespół kontekstowy posiada swoich, jasno określonych właścicieli, którzy dbają o spójność i jakość wykonywanych prac. Dobrze postawione granice konkretnych obszarów (kontekstów) nie tylko przyspieszają rozwój projektu, ale także stymulują komunikację między zespołową tam, gdzie w danym momencie jest ona najbardziej potrzebna i wartościowa.

Do tej pory w i-systems procesy tworzenia i rozwoju oprogramowania skoncentrowane były w ramach konkretnych mikrozespołów, które składały się z osób o różnych specjalizacjach. Zauważyliśmy jednak, że w tym modelu, wiedza jest bardzo mocno skumulowana w konkretnym zespole, który tak naprawdę nie ma gdzie adresować pozyskanego feedbacku. Jeśli zatem wykonywane były jakieś zmiany czy podejmowane były jakieś działania, to wiedza o tym co i dlaczego zostało zrobione pozostawała tylko w zespole, który się tymi konkretnymi działaniami zajmował. Po zakończeniu projektu zespół podejmował się realizacji kolejnych prac, a tym samym feedback pozostawał nieskonsumowany. Z drugiej jednak strony, dzięki pracy w mikrozespołach, pracownicy są bardzo silnie zaangażowani w jeden, konkretny projekt, przez co czują się bardziej odpowiedzialni za jego wdrożenie i rozwój. Taki charakter działań buduje również przestrzeń do twórczego myślenia i eksperymentowania, co pozytywnie wpływa na pojawianie się innowacyjnych rozwiązań.

”Dostrzegając siłę, jaka tkwi w mikrozespołach postanowiliśmy utrzymać ich główną ideę, przeobrażając jednak zespoły zajmujące się do tej pory tylko danym projektem, w zespoły kontekstowe, których rolą jest tworzenie i rozwój danego kontekstu” – stwierdza Konrad, koordynator zespołów IT w i-systems.

Odpowiednia metoda pracy = efektywne budowanie systemu

Tworzenie oprogramowania, w wielu obszarach jest bardzo podobne do budowy domu. W przypadku obydwu procesów mamy do czynienia z koniecznością podjęcia licznych, często wzajemnie od siebie zależnych działań. Obszar wspólny stanowi tu także konieczność pogodzenia pewnych niezbędnych w realizacji założeń oraz unikatowych preferencji klienta. Co zatem jest gwarantem efektywnego budowania systemu? Przede wszystkim dobór odpowiedniej metody pracy. Praca w wykorzystywanym przez nas modelu, jakim jest dedykowany SaaS oraz postawienie na wspomniane już wcześniej zespoły kontekstowe sprawiają, że oprócz głównych funkcjonalności naszego systemu, klientom gwarantujemy również realizację ich indywidualnych potrzeb biznesowych, dbając jednocześnie o to, aby core systemu stale rozwijał się i wyznaczał nowe trendy.

Do podstawowych korzyści płynących z pracy w zespołach kontekstowych należy zaliczyć:
– wybór zawsze najlepszego rozwiązania – dane zadanie omawiane jest w zespole specjalistów, po czym wybierany zostaje najlepszy sposób jego realizacji
– eliminacja ewentualnego przestoju – cały kontekst potrafi zrealizować wyznaczony cel, ponieważ wiedza jest skumulowana i przekazywana w ramach zespołu
– ciągłe podnoszenie jakości rozwiązań – każdy zespół odpowiedzialny jest za rozwój konkretnego obszaru
– stała możliwość poszerzania kompetencji programistów poprzez przekazywanie wiedzy w zespole
– realny wpływ zespołu na rozwój danego kontekstu
– dostarczenie klientowi najwyższej jakości rozwiązań, dzięki połączeniu pracy kilku zespołów kontekstowych

Konteksty w praktyce

Obecnie, w i-systems funkcjonuje dziewięć zespołów kontekstowych, które pokrywają najważniejsze, kluczowe dla firmy obszary. Członkowie każdego z zespołów dobierani są na podstawie posiadanych kompetencji, wiedzy oraz doświadczenia, dzięki czemu każdy kontekst składa się z najlepszych specjalistów w danej dziedzinie. Kontekst CI odpowiada za wdrożenie i rozwój praktyki Continuous Integration, zajmując się w szczególności wyszukiwaniem najlepszych rozwiązań z zakresu optymalizacji i stabilizacji testów automatycznych oraz rozwoju środowisk i ich konteneryzacji. Kontekst integracji trzyma pieczę nad połączeniem oprogramowania dostarczanego przez i-systems z zewnętrznymi systemami klasy ERP, z kolei kontekst order, to zespół osób specjalizujących się w szeroko pojętej obsłudze zamówień. Czwarty zespół, to kontekst RMA, czyli osoby odpowiedzialne za obszar zwrotów/reklamacji, a zespół piąty to kontekst CRM, który odpowiada m.in. za możliwość migracji z obecnej struktury czy dodanie wielu użytkowników do jednego konta. Obok tych zespołów, w obecnej strukturze wyróżniamy jeszcze kontekst PIM, odpowiadający za stworzenie systemu do zarządzania informacją o produkcie oraz kontekst rabatów, którego członkowie pracują nad refaktoryzacją polityk rabatowych, tak by zapewnić użytkownikom większą swobodę w tworzeniu własnych rabatów. Kontekst GUI, to z kolei zespół, który jest swego rodzaju pomostem między backendem a użytkownikiem – jego głównym zadaniem jest wsparcie i uzupełnienie pozostałych zespołów kontekstowych. Ostatnim z funkcjonujących obecnie zespołów kontekstowych jest Shop App, który zajmuje się tworzeniem webowych i mobilnych aplikacji klienckich, a także pracuje nad PWA.

W naszych planach na najbliższy czas jest stworzenie jeszcze dwóch zespołów kontekstowych – Allegro i POS.

Każdy z zespołów zajmuje się przypisanym do siebie obszarem, realizując przy tym wszystkie zmiany, które go dotyczą, w każdym projekcie, w którym się pojawia. W przypadku, gdy jakiś element dotyka wielu kontekstów jednocześnie, obowiązkiem zespołów staje się stworzenie komunikacyjnego interface’u, z którego skorzystać będzie mógł każdy zainteresowany.

Model zespołów kontekstowych niesie ze sobą naprawdę wiele korzyści. Dzięki wykorzystaniu tego podejścia, klient otrzymuje najwyższej jakości system sprzedaży, który umożliwia mu stały rozwój, oferując jednocześnie nieograniczone możliwości customizacji. Ponadto, w przypadku wykorzystania tego modelu pracy, klient nie musi już pełnić roli nawigatora projektu, ma bowiem pewność, że kolejne elementy jego systemu tworzone są przez specjalistów. Zespół programistów z kolei, dzięki kontekstom jest silnie zaangażowany w rozwój danego obszaru, a poprzez pracę wśród grupy osób o podobnej specjalizacji ma możliwość ciągłego poszerzania swoich kompetencji i budowania trwałych relacji.

Poznaj praktykę Continuous integration Badania i Rozwój w i-systems

Progressive Web App w ekosystemie e-commerce

Progressive Web App (PWA) to rozwiązanie, które dopiero zaczyna pojawiać się w kontekście e-commerce. Powszechnie kojarzy się tylko z nowoczesnymi platformami, jednak jej idea oraz główne założenia mają głębszy sens i coraz częściej znajdują zastosowanie w systemach sprzedażowych.

Cechy Progressive Web App

Progressive Web App zaprojektowane zostało w celu zapewnienia klientowi jak najlepszych doświadczeń, niezależnie od tego z jakich urządzeń korzysta. Takim urządzeniem może być desktop, smartfon, telewizor, a w przyszłości także inne nośniki z dostępem do internetu. Z punktu widzenia użytkownika, PWA działa jak aplikacja mobilna, jednak uruchamiana jest jak standardowa strona internetowa czy serwis transakcyjny. Aby rozwiązanie spełniało cechy PWA, musi być m.in.: w pełni responsywne, serwowane przez protokół https, w celu zapewnienia bezpieczeństwa, opisane przez plik manifest.json, umożliwiające wysyłanie notyfikacji użytkownikom oraz działające także w trybie offline.

Działanie Progressive Web App w trybie offline

Wśród czynników wyróżniających PWA na tle innych rozwiązań mobilnych podaje się właśnie możliwość jej działania w trybie offline. Dzieje się to dzięki procesom Service Workers, które ściągają część danych w tle, podczas korzystania użytkownika z aplikacji. W czasie tworzenia Progressive Web App, można precyzyjnie określić metodę działania Service Workers i tego, jak dużo działań ma być wykonywanych w tle. PWA bardzo dobrze radzi sobie również w momentach ograniczonego dostępu do internetu.

Różnica miedzy Progressive Web App (aplikacją webową), aplikacja mobilną i responsive web design

Pisząc o rozwiązaniach mobilnych, często spotykamy się z wieloma, podobnymi nazwami. Warto więc sprecyzować, czym dokładnie charakteryzują się poszczególne rozwiązania.

– Aplikacja mobilna, tworzona jest wyłącznie na urządzenia mobilne. Z punktu widzenia funkcjonalności, aplikacje mobilne są najbogatszym rozwiązaniem, z którego użytkownik może korzystać na smartfonie. Oferują one bowiem użytkownikom możliwości wysyłania push notyfikacji, wykorzystania skanera kodów kreskowych czy użycia beaconów (w celu ustalenia lokalizacji).

– PWA (aplikacja webowa) to rozwiązanie, które w swojej idei oddziela frontend od backendu, zwana także jako headless ecommerce Jest to aplikacja internetowa uruchamiana tak jak zwykła strona internetowa działająca po stronie przeglądarki użytkownika, ale kreująca wrażenie działania na zasadzie natywnej aplikacji mobilnej.

– Aplikacja systemu – w powszechnym znaczeniu są to wszystkie rozwiązania i komponenty składające się na działanie systemu. W kontekście e-commerce można odnieść to do całego core danego oprogramowania.

– Responsive Web Design to technika projektowania systemu, która umożliwia jak najlepszą jego prezentację wizualną, niezależnie od rodzaju urządzenia, na którym wyświetlane są treści. Dzięki jej zastosowaniu, wygląd systemu i układ wykorzystanych w nim treści są automatycznie dostosowywane do rozmiaru okna przeglądarki, z poziomu której system jest wyświetlany.

Główna idea PWA – hermetyzacja zadań

Skoro istnieją bogatsze w funkcje rozwiązania mobilne, pojawia się pytanie, dlaczego warto zwrócić uwagę na Progressive Web App? Na początku trzeba mieć świadomość, że słowo app, w kontekście PWA, nie do końca dotyczy rozwiązań mobilnych. Chodzi bardziej o aplikację i budowę całego systemu, który przy okazji będzie się dobrze wyświetlał na urządzeniach mobilnych.

Główną ideą Progressive Web App jest poprawa wydajności i szybkości działania systemów. Dzieje się to za pomocą hermetyzacji zadań, czyli budowania systemu w taki sposób, aby jedna jego część odpowiadała tylko za jedną wykonywaną czynność.

System transakcyjny sprowadza się do części backendowej, czyli serwerowej oraz frontendowej, którą nazwać można kliencką. Komunikację między tymi dwoma komponentami umożliwia REST API, wykorzystujące format JSON. Komunikacja odbywa się poprzez protokół HTTP, czyli o konkretne dane, wysyłane jest konkretne zapytanie. W takim modelu, serwer jest tylko wykonawcą zapytań, dzięki czemu jest on dużo szybszy.

Sama praca nad systemem też jest podzielona między frontendem a backendem. Odrębne zespoły pracują nad niezależnymi jednostkami bez wzajemnej ingerencji, przy czym system nadal działa jako całość. To sprawia, że proces wdrożenia i rozwoju jest bardziej poukładany i istnieje większa kontrola nad projektem.

Progressive Web App dla użytkownika końcowego

Stworzenie części frontendowej w rozwiązaniu PWA może wizualne dużo nie różnić się od standardowego rozwiązania. Dla klientów jednak, zauważalnych będzie kilka istotnych różnic:

– szybsze działanie strony poprzez lepszą logikę funkcjonowania poszczególnych części składowych – przyspieszenie nawet o 30%,

– poprawa UX, a co za tym idzie, lepsze doświadczenie zakupowe,

– możliwość odczuwania takich samych doświadczeń zakupowych, niezależnie od rodzaju wykorzystywanego przez użytkownika urządzenia.

Progressive Web App dopiero zaczyna pojawiać się w kontekście e-commerce. Pierwsze badania przeprowadzone przez 5 Miles czy Alibaba pokazują, że jest to rozwiązanie potrafiące podnieść konwersję (nawet o 76%), poprawić wydolność systemów (nawet o 88%), a także zmniejszyć ilość wykorzystywanych danych nawet o pięć razy. Wszystkie te czynniki oraz przeprowadzone w ramach działań Research & Development i-systems prace, zaowocowały powołaniem zespołu kontekstowego, odpowiedzialnego za Progressive Web App. O kolejnych działaniach tego zespołu oraz jego pierwszych wdrożeniach będziemy informować na blogu i-systems. Już teraz zachęcamy do lektury.

Zapisz się do newslettera