Otwarty na B2B lub etat

Jakub Nowosad

Product engineer · Warszawa · od 2020

Buduję to, czego nie widać, i to, co widać. Modele danych, przepływy płatności, cache, a na nich aplikacje webowe, mobilne i desktopowe.

Wybrane projekty ↓

Wybrane projekty

Platforma · aplikacje · wydajność

Dołączyłem do trójki założycieli Soleback w 2024 roku jako czwarta osoba w zespole i prowadzę cały rozwój produktu: sześć serwisów za jednym publicznym API, aplikacja webowa, rozszerzenie do Chrome, panel administracyjny i monitory, które to wszystko zasilają. Odczyty trafiają najpierw do Redisa, a dopiero w razie potrzeby do Postgresa. Kiedy zaczęły się pojawiać sporadyczne 5XX, przyczyną okazały się cztery nakładające się na siebie rzeczy, a nie jedna.

FastAPIPostgresRedisRedis LuaNext.jsECS Fargate
RolaSoftware engineer, 4. w zespoleSerwisy6 serwisów, jedno APIWalutyEUR · USD · GBP · PLNZasięg6 języków, web + rozszerzenieOpóźnieniaALB · ECS · pooler · wyciek

System kadrowo-płacowy dla DRE$$CODE i Dropsy: ewidencja czasu pracy, urlopy, kartoteki pracowników, rozliczenia per projekt, a na końcu tego wszystkiego paczki przelewów do mBanku. Najpierw zaprojektowałem model danych, potem zbudowałem na nim API w NestJS, a nad nim cztery aplikacje klienckie: web, iOS, Android i natywna aplikacja na macOS, która jest najbardziej zaawansowana. Dane osobowe są szyfrowane pole po polu.

NestJSPrismaPostgresNext.jsReact NativeSwift
AplikacjeWeb · iOS · Android · macOSModel danych23 tabele, najpierw ERDPrzelewyPaczki do mBankuDane osoboweSzyfrowane pole po polu

Drop to nie jest równomierny ruch: wszyscy wchodzą w tej samej minucie i koszyk albo wytrzyma, albo to on stanie się tematem premiery. Sklepy dla ludzi, którzy mają już publiczność. 474747 dla rapera Oki, blaire.cc dla marki Miłosza Kuleszy, V24 STORE przy premierze Eryka Moczko. 474747 stoi na WordPressie, więc udźwignięcie ruchu było po mojej stronie: na dropie utrzymał ponad piętnaście tysięcy osób naraz.

ShopifyLiquidWordPressPHP
Szczyt15 000+ narazSklepy5 wdrożonychWykonanieAutorskie szablony, od zeraGdzieDRE$$CODE, Phantom Label

Osiemnaście sieci afiliacyjnych, osiemnaście różnych zdań na temat tego, czym jest transakcja. Jedne wystawiają REST API, inne strzelają postbackami, jeszcze inna wrzuca CSV do S3. Wszystko ląduje w jednej maszynie stanów (oczekująca, zatwierdzona, do wypłaty), a każda transakcja jest podpinana z powrotem pod kliknięcie, które ją wywołało. Odpowiadam za cały pipeline i musi on być odporny na powtórki, bo partnerzy wysyłają dane ponownie.

Async workersS3WebhooksIdempotency
Sieci18, jedna tabela transakcjiWejścieAPI · postback · CSVGwarancjaOdporny na powtórki, idempotentny

42bot, pisany jeszcze w liceum: program, który kupował limitowane sneakersy szybciej niż człowiek. Monitory stanów magazynowych, automatyzacja koszyka i boty na Discordzie jako front. Sklepy nie chciały tego ruchu, więc budżet wynosił kilkaset milisekund, a cel ciągle się przesuwał. Stamtąd wzięło się u mnie słowo „monitor”, a dziś buduję sklepy po drugiej stronie tej samej transakcji.

PythonAsyncDiscord
KiedyW liceum, 2020–2022OgraniczenieOpóźnienia i współbieżnośćZakresKoszyk, stany, DiscordDruga stronaDziś buduję sklepy

Jak pracuję

Programista backend · aplikacje · wydajność

Ciekawe błędy nigdy nie siedzą w świeżo zmienionym kodzie.

Większość mojej pracy to integracje: sprawianie, żeby systemy, których nikt nie projektował razem, zgodziły się co do tego, co się wydarzyło, w jakiej kolejności i za ile. Ta robota nagradza cierpliwość i dobry trace bardziej niż spryt. Najtrudniejsze prawie nigdy nie siedzi w kodzie, który właśnie piszesz.

W DRE$$CODE i Phantom Label jestem całym działem IT i stąd wziął się system kadrowo-płacowy. Nikt nie napisał do niego specyfikacji.

Najpierw piszę wersję nudną, mierzę ją, a dopiero potem decyduję, co zasługuje na to, żeby działać szybko. Biorę odpowiedzialność za całość, od modelu danych przez API po to, czego dotyka użytkownik. Takiej pracy chcę więcej: produktu z prawdziwym ograniczeniem w środku, a nie jednej jego warstwy.

JęzykiPython · TypeScript · Swift
BackendFastAPI · NestJS · Prisma
AplikacjeNext.js · React Native · macOS
DanePostgres · Redis · Lua
InfraAWS ECS · Docker · Caddy
NawykMigracje przed wdrożeniem

Zacznij tutaj

Odpowiadam w ciągu doby

Najchętniej B2B, otwarty na dobry etat

nowosad.jaqb@icloud.com