Arkadiusz Gabryś - programista

Kontakt i linki: arkadiuszgabrys@gmail.com arek.gabr.pl github.com/gabr www.linkedin.com/in/arkadiusz-gabrys
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 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
- 4 lata - Locus
i SCADA
- 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
- 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
- 3 miesiące - portal PHP
- rozszerzenie możliwości starego portalu PHP
- testy i wdrożenie nowej funkcjonalności
- 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
- 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
- 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ń:
Asynchronous code execution in .NET with introduction to TPL
Synchronization methods in .NET
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.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
- 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
- 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
- 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
- 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