Techstack

Technologie i narzędzia,z którymi pracuję.

Programowanie, telekomunikacja i sieci komputerowe. Poniżej technologie, narzędzia oraz obszary techniczne, które wykorzystuję w pracy i rozwijam w praktyce.

Główne obszary

Fundament techniczny

Obszary, które stanowią podstawę mojego doświadczenia programistycznego.

01↗

C / C++

Programowanie w języku C i C++. Praca z kodem niskopoziomowym oraz tworzenie i rozwijanie większych systemów.

02↗

Telekomunikacja

Technologie sieci komórkowych 4G (LTE) i 5G, ich architektura, komunikacja pomiędzy elementami sieci oraz zagadnienia związane z transmisją danych.

03↗

Sieci komputerowe

Modele i warstwy sieciowe, protokoły komunikacyjne, transmisja danych, architektura sieci komputerowych i telekomunikacyjnych oraz sposób współdziałania poszczególnych elementów systemu.

Programowanie

Języki i skrypty

Języki wykorzystywane zarówno przy tworzeniu oprogramowania, jak i automatyzacji codziennej pracy.

Python

Skrypty, automatyzacja, narzędzia pomocnicze i praca z danymi.

+

Bash

Automatyzacja zadań, skrypty oraz codzienna praca w środowisku Linux.

+

Testowanie i debugowanie

Jakość i analiza kodu

Narzędzia wykorzystywane do testowania, debugowania i analizy działania oprogramowania.

GoogleTest

Tworzenie i utrzymywanie testów jednostkowych dla oprogramowania C++.

+

GoogleMock

Mockowanie zależności i testowanie komponentów w projektach C++.

+

Catch2

Framework do tworzenia testów jednostkowych i automatyzacji testowania oprogramowania.

+

GDB

Debugowanie, analiza działania programu i poszukiwanie przyczyn błędów.

+

Jenkins

Automatyzacja procesów CI/CD oraz uruchamianie i analiza zautomatyzowanych testów.

+

Testy integracyjne

Analiza wyników testów integracyjnych oraz diagnozowanie problemów pojawiających się na styku wielu komponentów systemu.

+

Sieci

Analiza ruchu sieciowego

Praktyczna praca z komunikacją sieciową, przechwytywaniem ruchu i analizą pakietów.

TCP/IP

Praca z protokołami i mechanizmami komunikacji wykorzystywanymi w sieciach komputerowych i telekomunikacyjnych.

+

Wireshark

Analiza ruchu sieciowego, przechwyconych pakietów oraz przebiegu komunikacji pomiędzy elementami systemu.

+

tcpdump

Przechwytywanie i analiza ruchu sieciowego z poziomu systemu Linux oraz diagnostyka komunikacji.

+

Analiza pakietów

Szczegółowa analiza pakietów i komunikacji sieciowej w celu identyfikowania problemów oraz odtwarzania przebiegu zdarzeń.

+

Proces wytwarzania

Narzędzia i praca zespołowa

Narzędzia oraz praktyki związane z tworzeniem oprogramowania i pracą w zespołach.

Git

Kontrola wersji i codzienna praca z repozytoriami kodu.

+

Gerrit

Code review, zarządzanie zmianami i praca z procesem przeglądu kodu.

+

Jira

Planowanie, organizacja pracy zespołu i śledzenie zadań.

+

Scrum

Praca w zespołach zwinnych oraz kilkuletnie doświadczenie w roli Scrum Mastera.

+

Środowisko

System i narzędzia pracy

Środowiska i narzędzia, z których korzystam na co dzień podczas pracy programistycznej.

Linux

Codzienna praca w środowisku Linux, administracja z poziomu terminala oraz wykorzystanie narzędzi systemowych.

+

Terminal

Sprawna praca z powłoką, narzędziami systemowymi, wyszukiwaniem, przetwarzaniem danych i automatyzacją zadań.

+

Visual Studio Code

Środowisko wykorzystywane do tworzenia i analizy kodu oraz pracy z projektami.

+

Eclipse

IDE wykorzystywane w pracy nad oprogramowaniem i projektami wymagającymi rozbudowanego środowiska programistycznego.

+

Doświadczenie

Troubleshooting i analiza

Jednym z istotnych elementów pracy jest diagnozowanie problemów w dużych i złożonych systemach.

Troubleshooting

Analiza problemów w dużych i złożonych systemach oraz systematyczne poszukiwanie ich źródła.

+

Analiza logów

Praca z bardzo dużymi logami i wyszukiwanie informacji potrzebnych do odtworzenia przebiegu zdarzeń oraz diagnozy problemu.

+

Analiza zależności

Śledzenie problemów obejmujących wiele komponentów, repozytoriów i wzajemnych zależności pomiędzy częściami systemu.

+

Analiza systemowa

Łączenie informacji pochodzących z kodu, testów, logów i zachowania systemu w celu znalezienia przyczyny problemu.

+

Systemy

Różne architektury

Doświadczenie w pracy z oprogramowaniem działającym na różnych architekturach sprzętowych i w różnych środowiskach wykonawczych.

Różne architektury

Doświadczenie w tworzeniu, analizie i debugowaniu oprogramowania przeznaczonego dla różnych architektur sprzętowych.

+

Kod niskopoziomowy

Rozumienie zależności pomiędzy oprogramowaniem a środowiskiem sprzętowym oraz problemów pojawiających się na niższych poziomach systemu.

+

Po godzinach

Eksperymenty i technologie dodatkowe

Poza głównym obszarem zawodowym eksperymentuję również z innymi technologiami i frameworkami.

PHP

Technologia wykorzystywana hobbystycznie do tworzenia własnych eksperymentów i aplikacji.

+

JavaScript

Programowanie aplikacji webowych i eksperymentowanie z ekosystemem JavaScript.

+

Symfony

Framework PHP wykorzystywany przy własnych projektach i eksperymentach.

+

React

Tworzenie interfejsów webowych i rozwijanie własnych projektów.

+

C# / Unity

Doświadczenie zdobywane podczas hobbystycznych eksperymentów związanych z programowaniem i tworzeniem gier.

+

Praktyka

Technologie są narzędziem.Najważniejsze jest ich zastosowanie.

Interesuje mnie nie tylko znajomość poszczególnych technologii, ale przede wszystkim rozumienie systemu jako całości — od poziomu kodu, przez system operacyjny i sieć, aż po działanie większego systemu telekomunikacyjnego.