O pracy programisty w Zespole Rozwoju Technologii


O pracy programisty w Zespole Rozwoju Technologii

Czy chciałbyś poszerzać i zdobywać wiedzę o nowoczesnych technologiach informatycznych? Nudzi Cię monotonna praca stale w tym samym środowisku, ale jednocześnie nie chcesz zbyt szybko porzucać jednej dziedziny i przechodzić do zupełnie nowego obszaru?

Ponadto chcesz pracować we współczesnym stosie technologicznym i korzystać z interesującego procesu wspieranego narzędziami? Szukasz pracy w zespole pełnym inspirujących ludzi, przyjaznej atmosfery, gdzie otrzymasz konkurencyjne wynagrodzenie? W takim razie zapraszamy do naszej firmy do Zespołu Rozwoju Technologii.

Czym się zajmujemy i jak pracujemy?

Aby szybko i efektywnie dostarczać systemy dla naszych klientów stworzyliśmy nowoczesne, autorskie rozwiązanie Neos służące do budowy aplikacji biznesowych typu low-code. To coś więcej, niż zwykły framework, to cała platforma deweloperska sprzęgnięta z autorskim IDE, wbudowaną warstwą komunikacyjną, warstwą dostępu do baz danych oraz wieloma innych komponentami. Jesteśmy zespołem, który ją utrzymuje i stale rozwija. Pozostałe zespoły programistów korzystają z tej platformy, jako jednego z narzędzi pracy.

Dzięki Neosowi programiści z pozostałych zespołów są w stanie w ciągu kilkunastu minut przejść od pomysłu do prototypu rozwiązania, a w ciągu kilkunastu godzin do gotowego, już przetestowanego narzędzia, które mogą uruchomić u klienta. Jedna platforma sprawia, że nasze aplikacje mają ustandaryzowany wygląd i działanie. Dzięki temu członkowie zespołu mogą się skoncentrować na dostarczaniu wartości biznesowej. Nie walczą z gridami, kontrolkami, przyciskami i innymi niewygodnymi elementami interfejsu, czy dostępem do danych – takimi sprawami zajmuje się system.

Neos składa się z wielu komponentów tworzonych w różnych technologiach natywnych, takich jak C#, C++, JS, itp. Projekty rozwojowe dotyczą różnych komponentów, więc raz pracujemy w jednej technologii, a innym razem w innej. Czasami pojawia się potrzeba użycia nowych technologii, których wcześniej nie stosowaliśmy. Np. do stworzenia szyny komunikatów (Event Driven Automation) użyliśmy biblioteki MassTransit. Do programowej kompilacji kodu C# pisanego przez programistów aplikacji gotowych użyliśmy natomiast MSBuildWorkspace. Gdy stoi przed nami nowe wyzwanie, szukamy takich technologii, które pomogą nam to je zrealizować. Badamy je i jeśli spełniają wymagania biznesowe i techniczne, to je wdrażamy. Nikt z góry nie narzuca ani nie ogranicza nam technologii, których należy użyć.

Przykładowe projekty rozwojowe z ostatnich dwóch lat:

  • Event Driven Automation – projekt, mający na celu dostarczenie programistom aplikacji biznesowych prostych narzędzi programistycznych do definiowania zdarzeń i komend, umieszczania ich na szynie komunikatów oraz definiowania handlerów do przetwarzania tych komunikatów. W ramach tego projektu wykorzystaliśmy ideę Pipes&Filters biblioteki MassTransit, zintegrowaliśmy się z zewnętrznymi brokerami komunikatów, takimi jak Rabbit MQ oraz utworzyliśmy audytową bazę danych w PostgreSQL oraz własne narzędzia administracyjne i diagnostyczne.
  • Telemetria – projekt, mający na celu wysyłanie na serwer telemetrii statystyk pracy użytkowników w interfejsach aplikacji biznesowych w technologii Neos. W tym celu użyliśmy bazy danych Elastic Search oraz skorzystaliśmy z gotowych narzędzi analitycznych, takich jak Kibana i Grafana.
  • Możliwość debugowania kodu aplikacji biznesowych pod Visual Studio – aby dać programistom aplikacji biznesowych pełne możliwości debugowania kodu, który napiszą, umożliwiliśmy uruchamianie Visual Studio Code z naszego wewnętrznego narzędzia developerskiego wraz z automatycznym otwarciem właściwego pliku cs, aby pracownik mógł szybko postawić pułapkę i sprawdzać, co się dzieje.

 

Nieustanny rozwój własnej platformy

Platformę Neos rozwijamy od 11 lat, niektóre komponenty pokrył kurz. Ze względu na to realizujemy także projekty refaktoryzacyjne. Najważniejsze z nich, to:

  • przejście z architektury monolitu na architekturę modularną typu microkernel. W tym celu użyliśmy biblioteki Autofac w celu sprawnej realizacji wzorca Dependency Injection,
  • całkowita wymiana warstwy dostępu do bazy danych, aby uniezależnić się od silnika bazy danych Firebird, zwiększyć wydajność, testowalność i utrzymywalność kodu tej warstwy, a także, aby móc współpracować z najnowszymi driverami bazodanowymi,
  • rozwój warstwy edytora kodu C# wbudowanego w technologię Neos, w tym przejście z autorskiego rozwiązania na kompilator Roslyn.

Dzięki takim projektom, nasze rozwiązanie, mimo iż jest produktem istniejącym wiele lat,jest stale rozwijane i udoskonalane. Aby proces refaktoryzacji był realizowany sprawnie i nie degradował funkcjonalności, stale rozbudowujemy obszar testów automatycznych dbając o rozwój zarówno frameworka do testów jak i bazy testów.

 

Nowe projekty rozwojowe

W doborze właściwych projektów rozwojowych, które nadają kierunek rozbudowie technologii Neos wspomaga nas mocno Kolegium Technologiczne. Jest to grupa osób z różnych zespołów naszej firmy (włącznie z naszym), która reprezentuje wszystkich programistów działających na technologii Neos. Kolegium decyduje o tym, czym powinniśmy się zająć, aby przynieść firmie największe korzyści. Dzięki temu dobrze rozumiemy potrzeby firmy, które z kolei rozumie nasze możliwości.

W pielęgnowaniu starszych części technologii Neos wspomaga nas jej twórca, który jest jednym ze wspólników firmy i cały czas aktywnie z nami współpracuje. Dzięki temu nie musimy zajmować się kodem porzuconym, ani takim, co do którego nie znamy założeń biznesowych.

Bywa też tak, że w okresie stabilizacji nowej wersji Neosa całym zespołem mocno skupiamy się na poprawianiu błędów. W takiej sytuacji:

  • blisko współpracujemy z Zespołem Rozwoju Produktu, który jest pierwszym użytkownikiem naszych rozwiązań i jest w stanie wyłapać wszystko to, co umknie naszym testerom oraz testom automatycznym. Koledzy i koleżanki z tego zespołu szybko zgłaszają nam uwagi wraz ze szczegółami umożliwiającymi odtworzenie problemu, a my staramy się ekspresowo dostarczyć im odpowiednią łatkę,
  • wspierają nas w tym mocno procesy automatycznej emisji nowych wersji oraz automatycznego budowania środowisk testowych i deweloperskich. Dzięki temu potrafimy szybko dostarczać łatki, a użytkownicy naszych rozwiązań nie marudzą, tylko efektywnie z nami współpracują.

 

Rozwiązania, z których korzystamy na co dzień

W sprawnej pracy wspomagają nas procesy i narzędzia, które sami wypracowaliśmy i jednocześnie nadal rozwijamy i adaptujemy do zmieniających się potrzeb. Podstawowym rozwiązaniem, z którego korzystamy w codziennej pracy, jest JIRA, która pozwala nam pracować zarówno w trybie sprintowym (w zakresie realizacji projektów rozwojowych), jak i w trybie kanbanowym (do realizacji bieżących zgłoszeń). Dzięki JIRA przestrzegamy procesu, którego celem jest zapewnienie jakości, czyli poprawnego przejścia przez takie kroki jak CR i testy tematu.

Źródła przechowujemy oczywiście na gicie. Dzięki dopracowanemu procesowi “gitflow” pilnujemy tego, aby móc sprawnie prowadzić bieżący rozwój mergowany do gałęzi master, jak też aktualizować i utrzymywać wersje stabilne oznaczane jako RTM i LTS. Duże projekty rozwojowe prowadzimy na osobnych branchach per projekt.

W automatyzacji deploymentu i testowania wspiera nas Jenkins, na którym dopracowaliśmy liczne procesy wspierające wszystkie czynności typu DevOps. Posiadamy w firmie 3-osobową komórkę pielęgnującą infrastrukturę sprzętową, dbającą o aktualność i poprawne działanie wszystkich procesów, a także o pielęgnację serwerów wirtualnych, które wykorzystujemy do deweloperki i testowania.

W pielęgnowaniu dokumentacji, zarówno tej dla użytkowników technologii Neos, jak i naszej wewnętrznej pomaga nam środowisko Foliant oraz procesy, które automatycznie przebudowują dokumentację, po każdym commicie w jednym z plików “*.md”. Stanowią jej źródła i są przechowywane razem z innymi podstawami programistycznymi. Pozostałą dokumentację przechowujemy w chmurze Google Workspace. Dzięki temu posiadamy stale aktualne i dostępne dla wszystkich zainteresowanych opisy projektów, arkusze i inne niezbędne dokumenty.

 

To tyle na temat naszego zespołu. A jaką firmą jesteśmy?

Jesteśmy stabilną firmą istniejącą od ponad 20 lat. Dynamicznie rozwijamy się w zakresie liczby pracowników, przychodów i zysków. W kwestii rynku pracy trzymamy rękę na pulsie i oferujemy konkurencyjne wynagrodzenie nie tylko dla nowych pracowników, ale dla wszystkich, również tych, którzy pracują z nami już wiele lat. Pomaga nam w tym transparentność wynagrodzeń w firmie i przejrzystość w zakresie generowanych przychodów i zysku.

Zespoły w naszej firmie są autonomiczne – sami ustalamy zasady i sposoby pracy, do których się stosujemy. Tworzymy spokojne i bezstresowe środowisko pracy. W naszej kulturze pracy możesz swobodnie udzielać feedbacku każdej osobie w firmie – nawet prezesowi. Ty też będziesz otrzymywać od nas feedback.

Technologię Neos będziemy rozwijać przez wiele kolejnych lat, gdyż jest kluczowa dla naszej firmy. Pracując z nami, będziesz mógł zajmować się zarówno nowymi komponentami, które w niej powstają, jak również znaleźć swoją ulubioną część i stać się w niej ekspertem. Sam zdecydujesz, co najbardziej Ci odpowiada i jaki chcesz mieć na to wpływ.

Chcesz być częścią naszej firmy?

Jeśli chcesz pracować razem z nami to kliknij w przycisk poniżej, aby złożyć aplikację. Na rozmowie dowiesz się jeszcze więcej o naszej firmie i zespole. Przygotujemy dla Ciebie ciekawe zadania i/lub pytania, aby lepiej Cię poznać, zanim wspólnie podejmiemy decyzję o współpracy.