Przemysław Zalewski

C# i .NET, 2009 do 2021

Programista .NET do systemu, którego nikt nie chce dotykać

Dziesięć lat C#, .NET, ASP.NET, Entity Framework i XAML, w tym własny czat na shardowanych serwerach .NET z 30 000 równoczesnych użytkowników. Od 2017 TypeScript i Node.js. Najpierw spisuję, co system naprawdę robi, i zabezpieczam to testami. Potem utrzymuję go przy życiu, a gdy przyjdzie czas, przenoszę kawałek po kawałku zamiast przepisywać od zera, ze starym systemem na produkcji, aż liczby się zgodzą.

Rozmowy w tym tygodniu · start pracy 3 listopada 2026 · Wrocław, zdalnie

Przemysław Zalewski
10+lat C# i .NET, do 2021
30 000równoczesnych użytkowników mojego czatu
260+moich zmergowanych PR w 2026 i 300+ review cudzych PR
15+lat tworzenia oprogramowania

Brzmi znajomo?

Problemy z C# i .NET, które rozwiązuję w 2026

Czy nasza aplikacja ASP.NET Core jest podatna na lukę w Kestrelu (9,4)?

13 października 2026 Microsoft opublikował CVE‑2026‑88092, czyli request smuggling w Kestrelu z oceną 9,4, w .NET 8, 9 i 10. Poprawki są w 8.0.32, 9.0.21 i 10.0.13, a aplikacje self-contained pozostają podatne, dopóki ktoś ich nie przebuduje i nie wdroży ponownie (GitHub advisory).

Znajduję każdą aplikację i paczkę z Kestrelem, aktualizuję runtime i zależności falami, które da się cofnąć, i wdrażam od nowa. Gdy w grudniu 2025 wyszedł React2Shell, aplikacje moich klientów miały łatkę tego samego dnia.

Nasza aplikacja .NET Framework wciąż stoi na Windows Server 2016

Rozszerzone wsparcie Windows Server 2016 kończy się 12 stycznia 2027, tego samego dnia co kontenery wydane razem z nim (Microsoft Learn). Potem serwer i aplikacja na nim nie dostają już łatek bezpieczeństwa.

Ustawiam powtarzalny build, obkładam testami miejsca, których wszyscy się boją, a potem przenoszę aplikację na wspierany serwer albo wycinam najbardziej obciążone endpointy do usługi w TypeScripcie, jeden po drugim. Od 2017 pracowałem przy backendzie .NET na Windows Server, który obsługiwał przeglądarkowy produkt 3D amerykańskiego producenta przyrządów pomiarowych, więc znam ten układ od środka.

Masz to u siebie? Umów bezpłatne 30 minut →

Czy GitHub Copilot sam przeniesie naszą aplikację z .NET Framework?

Microsoft oznaczył .NET Upgrade Assistant jako przestarzały i odsyła do agenta GitHub Copilot do modernizacji, który commituje każdą zmianę osobno, żebyś mógł ją sprawdzić albo cofnąć (Microsoft Learn, aktualizacja z marca 2026).

To sprawdzanie jest właściwą robotą. Najpierw zabezpieczam obecne zachowanie testami, a agentów uruchamiam pod wymuszonymi regułami. W 2026 około dwóch trzecich zmergowanych PR w dwóch produktach powstało z agentami, a prawie wszystkie przeszły przez mój review albo merge. Jeśli żaden model nie może zobaczyć Twojego kodu, pracuję bez niego.

Projekt buduje się tylko w Visual Studio 2017 na jednym starym komputerze

Visual Studio 2017 razem z Build Tools traci rozszerzone wsparcie w kwietniu 2027 (Microsoft Learn). Jeśli ta jedna maszyna padnie, padnie też możliwość wydania poprawki.

Przenoszę build do GitHub Actions, żeby każdy mógł zbudować to samo, a potem piszę z kodu runbook i opis architektury, żeby system przestał żyć w głowie jednej osoby. W sierpniu 2026 wyłączyłem siedmioletni, samodzielnie hostowany serwer CI, który rozumiałem tylko ja: buildy przeszły do GitHub Actions, a wydania przestały zależeć od mojego urlopu.

Masz jeden z tych problemów? Umów bezpłatne 30 minut →

Dlaczego ja

Stary system, który znów da się wdrożyć

Buildy znów przechodzą, zależności aktualizuję po kolei, testy obejmują miejsca, których zespół się boi, a wdrożenie może uruchomić jedna osoba. Potem zaległe drobne poprawki.

Migracja bez wielkiego wybuchu

Wzorzec strangler: nowa usługa w TypeScripcie z przodu, jeden endpoint na raz, oba systemy żyją, aż liczby się zgodzą. Przeniosłem desktopowy produkt 3D do przeglądarki: React z przodu, backend .NET wokół biblioteki obliczeniowej klienta.

Znam oba światy

LINQ na metody tablic, Task<T> na Promise<T>, rekordy na interfejsy. Pokaz poniżej załatwia część mechaniczną, a my rozmawiamy o architekturze.

Skala, którą prowadziłem sam

Skalowane poziomo, shardowane serwery C#, panel moderacji i automatyczna detekcja NSFW dla produktu z 1,5 mln+ pobrań. Wiem, jak wygląda produkcyjny .NET o trzeciej w nocy.

Pokaz na żywo

C# wchodzi, TypeScript wychodzi

Translator regułowy, który działa w całości w Twojej przeglądarce. Przekłada właściwości, async Task<T>, łańcuchy LINQ, rekordy i typy nullable. Jest celowo prosty: pokazuje, które części migracji są mechaniczne, a które wymagają człowieka.

Ładuję pokaz…

Wklej klasę ze swojego kodu. Tam, gdzie wynik jest zły, migracja potrzebuje człowieka. Z tymi liniami przyjdź na rozmowę.

Dowody

Praca, którą mogę pokazać

Problem, co zrobiłem, efekt. Nazwy klientów tylko tam, gdzie wolno mi ich użyć.

Desktopowy produkt do pomiarów 3D przeniesiony do przeglądarki, React w 2017

Problem
Amerykański producent przyrządów pomiarowych miał aplikację desktopową do wizualizacji skanów 3D i chciał tej samej funkcjonalności w przeglądarce.
Co zrobiłem
WebGL i three.js do skanów, React do interfejsu, backend .NET wokół biblioteki obliczeniowej klienta, płatności Stripe, testy regresji wizualnej, wspólne narzędzia zespołu. Wykresy pomiarowe liczone od zera, bez biblioteki, zsynchronizowane z widokiem 3D. Praca po angielsku przy dziewięciu godzinach różnicy czasu, z cotygodniowymi rozmowami.
Efekt
Wersja w przeglądarce dorównała desktopowej. Gdy klient ciął zespół z powodów budżetowych, sam wybrał, kogo zostawić, i byłem jednym z dwóch.

WebGL React 2017 1 z 2 zostawionych

Zobacz też: React

Restart dostarczania po trzech latach trybu utrzymania

Problem
Dojrzały produkt osiadł w utrzymaniu. Backlog był stary, zespół mały.
Co zrobiłem
Rozwój wspierany agentami pod wymuszonym zestawem reguł, pomoc przeniesiona z WordPressa do repo jako markdown z przekierowaniami 301 i i18n, help dopisany do Definition of Done.
Efekt
Z około 60 commitów w 2025 do 4800+ do października 2026, około 80× rok do roku, jeden serwer mniej do zepsucia na urlopie, dokumentacja zgodna z produktem.

~80× commitów r/r docs‑as‑code

Mój własny czat: 30 000 równoczesnych użytkowników na shardowanych serwerach .NET

Problem
Anonimowy czat utrzymywany z reklam rósł szybciej, niż uniósłby jeden serwer, a nikt inny nie miał go prowadzić.
Co zrobiłem
Skalowane poziomo, shardowane serwery C# i .NET, własna sieć czatu, panel moderacji, automatyczna detekcja NSFW, support obsługiwany przeze mnie.
Efekt
30 000 równoczesnych użytkowników, 1,5 mln+ pobrań i ponad 37 000 ocen w 21 sklepach krajowych (w USA średnia 4,5). Utrzymywał mnie przez pięć lat i skończył się razem z Windows Phone.

30 000 równoczesnych 1,5 mln+ pobrań 5 lat

Masz podobny problem? Umów bezpłatną rozmowę →

Media

Media pisały o mnie

Prawdziwe linki, od aplikacji na Windows Phone w 2012 po grę z 2020. W sieci jestem Ciunkos. Część portali już nie działa, wtedy link prowadzi do kopii w archiwum.

Więcej wzmianek (5)

Jedna noga w drzwiach

Nie czas na projekt? Zacznij od tygodnia albo jednego PR‑a.

Dwa sposoby, żeby zobaczyć, jak pracuję, zanim zamówisz sprint. Stały zakres, widełki ceny poniżej, ostateczna kwota na piśmie w ciągu 24 godzin od rozmowy.

Tygodniowy audyt kodu C# i .NET (legacy)

Ręcznie czytam repo, CI, testy, wdrożenia i miejsca, których zespół unika. Dostajesz pisemny raport: ryzyka uszeregowane po koszcie, co naprawić najpierw, plan z kamieniami milowymi i decyzję go/no‑go, którą da się obronić. Raport zostaje u Ciebie bez względu na to, czy pracujemy dalej.

4 500⁠–⁠8 800 zł netto · 30⁠–⁠40 h · Zobacz cenę i termin →

Code review jednego pull requesta albo modułu

Przyślij diff, który Cię martwi. W kilka dni dostajesz komentarze do linii, trzy rzeczy, które zmieniłbym najpierw, i werdykt: zmergowałbym czy nie. W jednym produkcie przejrzałem od 2018 roku ponad 800 pull requestów.

300⁠–⁠880 zł netto · 2⁠–⁠4 h · Zobacz cenę i termin →

Umów rozmowę i wybierz Najpierw bezpłatna rozmowa 30 min. Jeśli żadne nie pasuje, powiem to na rozmowie.

Jak to działa

Trzy kroki od tej strony do działającego projektu.

  1. 1

    Rozmowa 30 minut

    Opisujesz produkt i problem. Ja zadaję pytania, które zadałbym pierwszego dnia.

  2. 2

    Zakres na piśmie

    W ciągu 24 godzin po rozmowie dostajesz krótki plan na piśmie: co budujemy najpierw, co mierzymy, jak pracujemy i ile to kosztuje. Bez prezentacji.

  3. 3

    Działający kawałek w pierwszym tygodniu

    Wdrożony, zmierzony i gotowy do przejrzenia. Dalej tempo wyznaczają liczby.

Dopasowanie

Czy to pasuje?

Dobre dopasowanie, gdy

  • Aplikacja C# albo .NET Framework, która musi działać, póki ważą się jej losy
  • Migracja na TypeScript i Node.js, endpoint po endpoincie, z oboma systemami na produkcji
  • Współpraca solo albo jeden zespół do czterech osób, który prowadzę bezpośrednio
  • Kod w Twoim repozytorium, build w CI, runbook na koniec

Raczej nie, gdy

  • Nowa platforma mikroserwisów na .NET
  • Przepisanie wszystkiego naraz, z datą premiery i bez testów
  • Dziesięcioosobowy zespół dostawcy albo body leasing na godziny

Styl pracy

Jak pracuję

Agenci pod regułami

Claude Code i Codex pracują na mainie z hookami, bramkami lint i testów. Model podpowiada, kryteria decydują. Każdy PR ma ludzki review, a treści z AI są oznaczone.

Zero zaległych bugów

Błąd jest naprawiony albo świadomie zamknięty, nigdy odłożony. Alerty i śledzenie błędów w każdym projekcie, więc o problemach dowiaduję się przed klientem.

Review jako rzemiosło

800+ przejrzanych pull requestów w jednym produkcie od 2018 roku. Patrzę na produkt i jego powody. Kod jest drugi.

Warto wiedzieć

Terminy wsparcia .NET i pułapki w 2026

.NET 8 i 9 kończą tego samego dnia

Oba tracą wsparcie 10 listopada 2026, bo od .NET 9 wersje STS mają 24 miesiące zamiast 18 (polityka wsparcia .NET, blog .NET).

.NET 10 ma wsparcie do listopada 2028

.NET 10 to obecne LTS ze wsparciem do 14 listopada 2028. To cel dla wszystkiego, co schodzi z 8 albo 9 (polityka wsparcia .NET).

.NET Framework 4.8 idzie za Windowsem

Framework 4.5.2 i nowsze nie mają własnego cyklu życia: wsparcie trwa tyle, co Windows, na którym działa (FAQ cyklu życia). Sama 4.6.2 kończy się 12 stycznia 2027 (cykl życia Microsoft).

ASP.NET Core 2.3 na Frameworku kończy się w kwietniu 2027

Ostatnia linia ASP.NET Core działająca na .NET Framework traci wsparcie 13 kwietnia 2027, na każdej wersji Frameworka (polityka wsparcia ASP.NET).

BinaryFormatter zawsze rzuca wyjątek

Od .NET 9 wbudowany BinaryFormatter rzuca wyjątek nawet ze starymi przełącznikami. Sesje, cache i pliki zapisane przez niego psują się przy aktualizacji (breaking change).

Microsoft zaleca migrację krok po kroku

Dla dużych aplikacji produkcyjnych przewodnik Microsoftu zaleca migrację przyrostową wzorcem Strangler Fig zamiast przepisywania (przewodnik migracji).

FAQ

Pytania, które padają przed umówieniem rozmowy

Piszesz jeszcze w C#?
Gdy klient tego potrzebuje, tak. Mój ostatni produkcyjny C# to 2021 i mówię to wprost. Nie jestem osobą do nowej platformy mikroserwisów na .NET 10. Jestem osobą, która utrzyma aplikację ASP.NET MVC z 2014 przy życiu, póki powstaje następna, zwykle w TypeScripcie. Sprawdź to najpierw na swoim kodzie: tygodniowy audyt odbywa się w Twoim repozytorium, a jeśli system potrzebuje stałego specjalisty .NET zamiast mnie, raport powie to wprost.
Migrować .NET na Node.js czy zostawić?
Zostawić, jeśli działa stabilnie i da się znaleźć do niego ludzi. Migrować, jeśli każda zmiana trwa miesiąc, a nikt nie odważa się wdrożyć. Tygodniowy audyt kodu (4500⁠–⁠8800 zł netto) daje odpowiedź na piśmie, z kosztem obu dróg. Docelowy stack opisuje strona o TypeScripcie i Node.js.
Jak wygląda utrzymanie i ile kosztuje?
Stała liczba dni w miesiącu przy stawce 150⁠–⁠220 zł/h netto: buildy, łatki, aktualizacje zależności, monitoring, małe funkcje. Alerty trafiają do mnie, więc o problemie dowiaduję się przed Tobą. Więcej na stronie o utrzymaniu.
Windows Phone i XAML też?
Stąd 25+ aplikacji i 3,7 mln+ pobrań. Platforma odeszła, została dyscyplina wydawania do sklepu i czytania recenzji.
Ile trwa i kosztuje pełna migracja?
Nikt uczciwy nie powie tego przed przeczytaniem kodu. Tygodniowy audyt kończy się planem pociętym na kawałki. Każdy kawałek wyceniam potem na piśmie z limitem, którego nie przekraczam bez pytania. Możesz przerwać po dowolnym kawałku i zostajesz ze wszystkim, co zrobione, bo kod jest w Twoim repozytorium od pierwszego commita.
A jeśli migracja utknie w połowie?
Dalej masz działający system. We wzorcu strangler stara aplikacja obsługuje każdy endpoint, którego jeszcze nie przeniosłem, a przeniesiony endpoint da się skierować z powrotem. Nie ma jednego wielkiego dnia przełączenia, który można zawalić.
Nasz kod jest poufny. Kto go zobaczy i czy AI?
NDA to standard, podpisuję Twoje. Pracuję w Twoim repozytorium i na Twoich kontach, a niczego nie pokazuję bez pisemnej zgody. Tryb AI wybierasz Ty, także całkiem bez AI, co jest wolniejsze i kosztuje więcej godzin. Z AI trening na Twoich danych jest wyłączony, a sekrety nigdy nie trafiają do modelu. Przeprowadziłem Patriot Mail (zbudowany w Sanddev) przez ocenę bezpieczeństwa CASA Tier 2 od Google dwa razy, w styczniu i październiku 2026. Szczegóły na stronie jak pracuję.
Jesteś jedną osobą. Co, jeśli zachorujesz?
Praca czeka bez szkody. Kod leży w Twoim repozytorium od pierwszego dnia, decyzje są spisane, a runbook, który piszę z kodu, pozwala przejąć system komuś innemu, czyli daje dokładnie to, czego Twojemu systemowi dziś brakuje. Bez podwykonawców; zastępstwo tylko za zgodą obu stron. Zakres OC zależy od zlecenia; przy projektach wysokiego ryzyka dodatkowe OC na daną umowę załatwiam przed startem, a jego koszt uwzględnia stawka.
Od kiedy możesz zacząć?
Od 3 listopada 2026. Umów rozmowę i miej pod ręką plik .sln.
Co się dzieje, gdy w listopadzie 2026 kończy się wsparcie .NET 8?
Brak łatek bezpieczeństwa po 10 listopada 2026, tego samego dnia co .NET 9. Przejdź na .NET 10 ze wsparciem do listopada 2028 i licz się z pęknięciami jak BinaryFormatter (polityka wsparcia .NET, breaking change).
Czy .NET Framework 4.8 przestał być wspierany?
Nie ma własnej daty i idzie za Windowsem, na którym działa (FAQ cyklu życia). Starsze części się kończą: 4.6.2 w styczniu 2027, a ASP.NET Core 2.3 na Frameworku w kwietniu 2027 (polityka wsparcia ASP.NET).
Czy nasza aplikacja ASP.NET Core jest podatna na lukę w Kestrelu (9,4)?
13 października 2026 Microsoft opublikował CVE‑2026‑88092, czyli request smuggling w Kestrelu z oceną 9,4, w .NET 8, 9 i 10. Poprawki są w 8.0.32, 9.0.21 i 10.0.13, a aplikacje self-contained pozostają podatne, dopóki ktoś ich nie przebuduje i nie wdroży ponownie (GitHub advisory). Znajduję każdą aplikację i paczkę z Kestrelem, aktualizuję runtime i zależności falami, które da się cofnąć, i wdrażam od nowa. Gdy w grudniu 2025 wyszedł React2Shell, aplikacje moich klientów miały łatkę tego samego dnia.

Bonus · #suchar

Suchar na deser

Gratis, jak pierwsza rozmowa. To samo poczucie humoru dostajesz w pakiecie z projektem.

Co mówi aplikacja w .NET Framework 4.8 do nowych w zespole?Puenta

„Ja tu jeszcze wszystkich pochowam”. Ba‑dum‑tss.

Dlaczego muzyk nie zrobi kariery w .NET?Puenta

Bo jak widzi C#, gra cis. Ba‑dum‑tss.

Jak nazywa się system legacy, którego nikt nie rozumie?Puenta

Dziedzictwo narodowe. Ba‑dum‑tss.

W 30 minut sprawdzisz, czy do siebie pasujemy

Ty przynosisz problem, ja pytania. Chcesz najpierw liczbę? Konfigurator pokaże godziny, widełki ceny i termin startu.

albo napisz na ciunkos@gmail.com

Po umówieniu dostajesz zaproszenie do kalendarza. Nic więcej do wypełniania.

Moja obietnica

  • Odpowiedź w 24 godziny. Odpowiadam w ciągu 24 godzin w dni robocze. Osobiście, nie bot. Wiadomości z weekendu: do poniedziałku, do 12:00.
  • Spóźnienie znaczy gratis. Jeśli się spóźnię, pierwsza godzina pracy jest za darmo. Nie musisz o to prosić.
  • Zakres na piśmie w 24 godziny. Bezpłatna rozmowa 30 minut bez prezentacji firmy, potem zakres i cena na piśmie w ciągu 24 godzin. Ty decydujesz.
  • Osoba, która wykona pracę. Rozmawiasz z osobą, która wykona pracę. Bez warstwy sprzedaży, bez przekazywania dalej.
  • Odzywam się tylko z czymś nowym. Odzywam się tylko wtedy, gdy mam dla Ciebie coś nowego. Nigdy „czy jest już decyzja?”.
  • Uczciwe „to nie dla mnie”. Jeśli nie jestem właściwą osobą, mówię to na rozmowie i wskazuję kogoś, kto jest.

Rozmowy w tym tygodniu · start pracy 3 listopada 2026 · Kontrakt B2B · Wrocław, zdalnie

Kod, domena i konta są Twoje od pierwszego dnia. Nic nie trzymam jako zakładnika.