Arkadiusz Gabryś - programista

Szczegółowy opis doświadczenia zawodowego (10+ lat)

IMOBIT (7 lat i 2 miesiące) lis 2013 - gru 2020

Niewielka firma ze względu na co byłem odpowiedzialny za cały proces powstawania oprogramowania od rozmowy z klientami, przez proponowanie rozwiązań, projektowanie aplikacji i baz danych, do implementacji, testowania, wdrażania na produkcji i późniejszego wsparcia i utrzymania.

Przez praktycznie cały okres 7 lat pracowałem zdalnie odwiedzając biuro jedynie co jakiś czas. Jeździłem też do klientów i naszego elektronika. Zostałem również wysłany parę razy na delegację za granicę. W okresie gdy zaczęliśmy zatrudniać więcej nowych pracowników odpowiadałem za ich szkolenie, pomagałem we wdrożeniu i weryfikowałem ich pracę.

Projekty:

  1. 1 miesiąc - aplikacja Android na tablet (Java)
    • komunikacja bluetooth z zewnętrznym urządzeniem
    • obsłużenie autorskiego protokołu komunikacyjnego z wyżej wymienionym urządzeniem
    • system obsługi zleceń i czat na żywo
    • aplikacja zastępuje launcher systemowy i blokuje dostęp do innych funkcji tabletu
  2. 4 lata - LocusSCADA - lokalizacja i gromadzenia danych (C#, MVC 4 WebApp, MSSQL)
    • usługa systemu windows, działająca 24h na dobę przez cały rok
    • wysoka przepustowość usługi gromadzącej, przetwarzającej i archiwizującej dane
    • wielowątkowość w celu obsłużenia dużej ilości urządzeń i danych w zadanym budżecie czasowym
    • system czasu rzeczywistego wyświetlający dane na mapie w aplikacji webowej
    • komunikacja z bazą danych MSSQL z użyciem Entity Framework i LINQ to SQL
    • złożony algorytm grafowy liczący pozycję obiektów na mapie
    • instalator Inno Setup pisany w Pascalu
  3. 4 lat - Mesbit - obsługa linii produkcyjnych (C#, WinForms, MSSQL)
    • aplikacje desktopowe na ekrany dotykowe na stanowiskach na linii produkcyjnej
    • .NET 4.7 na systemach Windows
    • aplikacje wielowątkowe
    • komunikacja z bazą danych MSSQL z użyciem Entity Framework i LINQ to SQL
    • komunikacja sieciowa z maszynami na liniach produkcyjnych przez TCP/IP z samodzielną implementacją różnych protokołów komunikacji
    • lokalna komunikacja przez potoki nazwane
    • systemy działające 24h na dobę przez cały rok, występujące w wielu różnych konfiguracjach zależnych od stanowiska na linie produkcyjnej
    • wydajne gromadzenie i przechowywanie logów
    • obsługa taśmociągu
    • inżynieria wsteczna w celu zrozumienia działania zewnętrznych systemów, czy protokołów komunikacji maszyn
    • aplikacja na skanery ręczne z systemem Windows Mobile 6.5.3
    • tworzenie własnych systemów brokerów wiadomości typu Rabbit MQ/SignalR
    • administracja systemów Linux (bash) i Windows (PowerShell)
    • automatyzacja z użyciem PowerShell:
      • automatyzacja testów i zadań administracyjnych
      • symulacja komunikacji sieciowej po TCP/IP
      • operacje na serwerze MSSQL i generowanie skryptów SQL
      • parsowanie i analizowanie logów
  4. 3 miesiące - portal PHP
    • rozszerzenie możliwości starego portalu PHP
    • testy i wdrożenie nowej funkcjonalności
  5. 2 lata - sklep internetowy (C#, ASP.NET Core Razor Pages, HTML, JavaScript, CSS)
    • napisany od zera sklep internetowy do sprzedaży dla klientów biznesowych
    • około 200 użytkowników biznesowych
    • tworzenie i podgląd zamówień
    • generowanie faktur PDF
    • zarządzanie użytkownikami
    • komunikacja z bazą danych MSSQL z użyciem Entity Framework
    • instalator Inno Setup pisany w Pascalu
  6. 2 lata - IMU/AHRS - gromadzenia danych o ruchu człowieka (XAML, C#, UWP)
    • aplikacja Universal Windows Platform z użyciem Xamarin.Forms i Prism
    • gromadzenie danych o pozycji i ruchu kończyn człowieka z wizualizacją na żywo
    • własny protokół komunikacji w celu osiągnięcia wysokiej wydajności i przepustowości danych
    • wizualizacja 3D w czasie rzeczywistym ruchów użytkownika oraz wykresy poszczególnych sensorów
  7. Inne:
    • szacowanie czasu wykonania całych dużych projektów - od zera do wdrożenia
    • projektowanie i dokumentacja:
      • diagramy UML - diagramy aktywności i klas (Umlet)
      • dokumentacja techniczna i użytkowa
      • projektowanie protokołów komunikacji, baz danych i architektury aplikacji od zera
    • przekazywanie wiedzy nowym pracownikom w postaci szkoleń:
      1. Asynchronous code execution in .NET with introduction to TPL
      2. Synchronization methods in .NET
      3. Introduction to Linux
    • reprezentowanie firmy na delegacjach zagranicznych
    • przejmowanie projektów innych firm
    • praca bezpośrednio z klientami

Współpraca zakończona przy obopólnej zgodzie gdy chciałem spróbować pracy w zespole i większej firmie. Przed odejście domknąłem wszystkie tematy i zakończyłem jeszcze jeden projekt do poziomu MVP dla zagranicznego klienta.

Configit (3 lata) sty 2021 - gru 2023

Średniej wielkości firma zlokalizowana w Danii gdzie nie byłem już samodzielnym programistą tylko członkiem kilkuosobowego zespołu Agile. Praca wykonywana zdalnie z okazyjnymi wizytami (raz, dwa razy do roku) biura w Warszawie i w Kopenhadze.

  1. 1.5 roku - Ace - aplikacja webowa (C#, ASP.NET Core, HTML, React, TypeScript, CSS)
    • pierwsze publiczne REST API w projekcie
    • wprowadzenie standardu OpenAPI do publicznych API
    • wprowadzenie automatycznych testów integracyjnych
    • rozwijanie i utrzymywanie interfejsu aplikacji webowej i jej części serwerowej
  2. 4 miesiące - VT - poprawki (C#)
    • poprawki implementacji głównej technologii, na której były oparte wszystkie produkty
    • programowanie zorientowane na wydajność, kod wrażliwy na alokacje i rozmiar pamięci
  3. 2 lata - Bill Of Materials - (C#, ASP.NET Core, REST API)
    • udostępnianie wewnętrznych funkcjonalności systemu w publicznym REST API ze standardem OpenAPI
    • implementowanie nowych funkcjonalności związanych z obsługą BOM (Bill Of Materials)
    • system testów integracyjnych
    • używanie notacji Backusa-Naura BNF do tworzenia nowej składni nowych elementów autorskiego języka
    • pisanie parserów i dokumentacji autorskiego języka
  4. 1 rok - członek zespołu Development Experience (CI/CD GitHub, PowerShell, C# CAKE)
    • dodatkowa rola w osobnym zespole odpowiedzialnym za ułatwianie pracy programistom
    • tworzenie skryptów CI/CD w repozytoriach GitHub z użyciem YAML, PowerShell i C# CAKE
    • stworzenie systemu raportów pokazujących obłożenie testami commitowanego kodu
  5. 1 rok - rola Scrum Mastera w zespole
    • dodatkowo do roli programisty
    • organizowanie i zarządzanie spotkaniami dziennymi i retrospektywami
    • organizacja planowania sprintu

Współpraca zakończona wraz z końcem umowy. Firma była świadoma, że umowa nie będzie przedłużana i zdążyła znaleźć zastępstwo. Nie planowałem przedłużać umowy od samego jej początku, ponieważ miałem plany na własne projekty na początek 2024 roku.

Poza pracą (17 lat) 2007 rok do teraz

Programuję od 15 roku życia i moim pierwszym językiem był C++, który służył mi przez cały proces edukacji, aż do zakończenia studiów. Używałem go do budowania aplikacji WinAPI jak i rozwiązywania wszelkich uczelnianych zdań algorytmicznych. Podczas mojego pobytu na uczelni w Niemczech powstał symulator StarCraft oraz wizualizacja układu planetarnego w OpenGL. Na uczelni nie obyło się też bez Pythona. Moją pracę inżynierską z sieci neuronowych pisałem właśnie w C++.

Mimo, że zawodowo używałem głównie technologi z zarządzaną pamięcią to moje zainteresowanie zawsze szło w stronę niższego poziomu. Uczyłem się assemblera, napisałem dekoder i symulator instrukcji procesora 8086 używając języka Zig, a od zakończenia uczelni dobre 8 lat temu zastąpiłem C++ językiem C.

Zainteresowanie programowaniem sprawiło, że próbowałem wielu różnych technologii (GO, Rust, Common Lisp, Flutter, Dart). Gdy przez kilka lat mieszkałem w Zielonej Górze, to uczestniczyłem w spotkaniach dla programistów (meetup dev@zg), na których prezentowałem i które pomagałem organizować. Doprowadziło to do zorganizowania pierwszej konferencji programistycznej w tamtym rejonie: greenfieldconf.pl.

Obecnie mieszkam w Katowicach, chadzam w góry i staram się przebić 150 słów na minutę w bezwzrokowym pisaniu na klawiaturze.

Ostatnia aktualizacja: 01.10.2024

Wyrażam zgodę na przetwarzanie moich danych osobowych dla potrzeb niezbędnych do realizacji procesu rekrutacji zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych oraz uchylenia dyrektywy 95/46/WE (RODO).