Spis treści:
- Różnica między przedsiębiorstwem a outsourcingiem
- Jakich języków i technologii używają programiści iOS w dużych firmach
- Jak wprowadzane są aktualizacje i naprawiane błędy
- Dlaczego warto dołączyć do dużej firmy
- Czego potrzebujesz, aby pracować w IT
- Jak zdać rozmowy kwalifikacyjne i czego uczyć początkujących programistów iOS
- Co robi i o czym marzy programista iOS poza pracą

Darmowy kurs Pythona ➞ Mini-kurs dla początkujących i doświadczonych programistów. 4 ciekawe projekty w portfolio, czat na żywo z prelegentem. Kliknij i dowiedz się, czego możesz się nauczyć na kursie.
Dowiedz się więcej
Kierownik ds. rozwoju mobilnego w VK, który wcześniej pełnił funkcję lidera zespołu iOS w Tinkoff, pasjonuje się programowaniem i gotowaniem. Jego doświadczenie w tworzeniu aplikacji mobilnych i pasja do tworzenia wysokiej jakości oprogramowania czynią go cenionym specjalistą w branży. Aktywnie kodyfikuje i dzieli się swoimi kulinarnymi odkryciami, podkreślając swoje różnorodne zainteresowania.
Linki odgrywają kluczową rolę w strukturze i funkcjonalności stron internetowych. Umożliwiają użytkownikom łatwą nawigację między różnymi zasobami i stronami, zapewniając wygodny dostęp do informacji. Linki internetowe mogą być wewnętrzne, kierujące do innych stron w tej samej witrynie, lub zewnętrzne, prowadzące do innych domen. Optymalizacja linków jest ważnym aspektem SEO, ponieważ wyszukiwarki biorą pod uwagę jakość i liczbę linków, oceniając trafność i autorytet witryny. Skuteczne linki pomagają usprawnić nawigację, poprawić doświadczenia użytkownika i wpłynąć na pozycję w wynikach wyszukiwania. Prawidłowe użycie tekstu kotwicy i tworzenie linków o wysokiej pozycji może znacznie poprawić widoczność witryny w wynikach wyszukiwania.
Moja przygoda z programowaniem rozpoczęła się sześć lat temu od pierwszej wersji języka Swift i zakupu MacBooka. Obecnie zajmuję stanowisko Head of Mobile Development w firmie VK. Wcześniej pracowałem jako średni menedżer w firmie Tinkoff i spędziłem dwa lata w firmie outsourcingowej. Mam doświadczenie w porównywaniu outsourcingu i pracy w przedsiębiorstwie i potrafię wyjaśnić, dlaczego praca w przedsiębiorstwie ma swoje zalety.
Outsourcing często wiąże się z wykonywaniem zadań dla różnych klientów, co może być interesujące, ale także niestabilne. Natomiast w przedsiębiorstwie masz możliwość pracy nad długoterminowymi projektami, obserwowania efektów swojej pracy i rozwoju w ramach jednej firmy. Co więcej, przedsiębiorstwo oferuje bardziej stabilne warunki pracy i możliwości awansu zawodowego.
Różnica między przedsiębiorstwem a outsourcingiem
Przedsiębiorstwo w IT oznacza pracę w dużych firmach nad projektami na dużą skalę. W takich organizacjach firma wyznacza jasne terminy realizacji, ale w ich ramach zespół samodzielnie ustala priorytety i przydziela zasoby na ich realizację. Jedną z zalet pracy w przedsiębiorstwie jest stałe wynagrodzenie, które zapewnia pracownikom stabilność.
Outsourcing organizuje pracę w inny sposób. Klienci często borykają się z ograniczonymi budżetami i dążą do jak najszybszego dostarczenia gotowego produktu. Zmusza to programistów do wyboru między stworzeniem produktu niskiej jakości a jego przeróbką, co może negatywnie wpłynąć na efekt końcowy i terminy. W takich okolicznościach ważne jest znalezienie równowagi między jakością a terminami, aby sprostać potrzebom klienta bez poświęcania profesjonalizmu.
Menedżerowie firm outsourcingowych przywiązują szczególną wagę do monitorowania czasu pracy swoich pracowników. W tym celu korzystają ze specjalistycznych programów, które pozwalają im śledzić czas spędzony na realizacji zadań. Pomaga to nie tylko w zarządzaniu projektami, ale także w uzasadnianiu ostatecznego kosztu usług. Firmy mogą na przykład dostarczać przejrzyste dane dotyczące liczby godzin spędzonych nad projektem, co buduje zaufanie klientów i potwierdza uczciwość rozliczeń. Takie podejście pozwala firmom outsourcingowym efektywnie zarządzać zasobami i podnosić jakość świadczonych usług.
Zespoły korporacyjne zazwyczaj składają się z niewielkiej liczby specjalistów. Na przykład, nasz zespół liczy tylko trzech programistów iOS. Istnieją jednak również większe projekty, w których nad jednym produktem pracuje nawet dwudziestu programistów iOS. Nasz zespół składa się również z programistów Androida, menedżerów, projektantów, testerów i programistów back-end, co wymaga aktywnej współpracy z dużą liczbą uczestników. Współpraca ta wzbogaca projekt, umożliwiając połączenie różnorodnych umiejętności i wiedzy specjalistycznej.
W dużych firmach rozwój oprogramowania odbywa się z uwzględnieniem starannego planowania terminów i zadań programistycznych. Jest to jedna z kluczowych cech odróżniających przedsiębiorstwa od outsourcingu. W projektach outsourcingowych często zdarzają się sytuacje, w których ze względu na ograniczenia budżetowe produkty są tworzone „tak jak są”, a ich wydanie następuje natychmiast po zakończeniu rozwoju. Takie podejście może negatywnie wpłynąć na jakość produktu końcowego i jego zgodność z potrzebami użytkowników. Dlatego nie można przeceniać znaczenia kompetentnego planowania w dużych firmach, ponieważ zapewnia ono wyższy poziom jakości i stabilności tworzonych rozwiązań.
Jakich języków i technologii używają programiści iOS w dużych firmach?
Obecnie Swift jest głównym językiem programowania dla twórców aplikacji na iOS ze względu na swoją prostotę i aktywne wsparcie ze strony Apple. To czyni go jednym z najbardziej pożądanych języków na rynku pracy. Duże firmy, takie jak Tinkoff, VK i Alfa-Bank, aktywnie wykorzystują Swift w swoich projektach. Niektóre z naszych projektów nadal zawierają przestarzały kod Objective-C, ponieważ wiele bibliotek firm trzecich jest napisanych w tym języku. Aby efektywnie pracować z wieloma bazami kodu, korzystamy z systemu kontroli wersji GitFlow, który pomaga nam zachować porządek i zarządzać zmianami w projekcie.

Tinkoff posiadał osobne repozytorium zawierające wspólne komponenty, takie jak czaty i narzędzia do skanowania dokumentów. Opracowano również ujednolicony system projektowania dla wszystkich aplikacji, upraszczając korzystanie z kodu w różnych projektach. Zadanie to zostało wykonane przez dedykowany zespół. Ekosystem VK ma wiele różnych systemów projektowania, więc tworzenie wspólnych komponentów dla wszystkich projektów jest niepraktyczne.
Głównym problemem naszej aplikacji jest trudność we wdrażaniu nowych technologii. Wynika to nie tylko z czasu potrzebnego na naukę obsługi nowych narzędzi, ale także z niechęci użytkowników do aktualizacji urządzeń do najnowszych wersji. W rezultacie nie możemy korzystać z SwiftUI, komponentów Combine i innych innowacji dostępnych w iOS 13. Wiele firm nadal pracuje nad iOS 12, podczas gdy inne aktywnie korzystają z funkcji wprowadzonych w iOS 14. Stwarza to dodatkowe bariery w rozwoju i wdrażaniu nowoczesnych rozwiązań w naszej aplikacji.
Zwiększenie liczby użytkowników aplikacji komplikuje proces przechodzenia z jednej wersji językowej na inną i wdrażania nowych technologii. Im większa liczba użytkowników, tym wyższe ryzyko i koszty aktualizacji i adaptacji. Dlatego ważne jest, aby planować zmiany z wyprzedzeniem i uwzględniać potrzeby odbiorców, aby zapewnić płynne działanie aplikacji i zminimalizować negatywny wpływ na użytkowników.
Tworzę aplikacje na iOS, korzystając ze standardowych bibliotek, takich jak UIkit, Foundation i Core Data. Narzędzia te pomagają mi w projektowaniu interfejsu, obsłudze sieci i innych niezbędnych zadaniach. Korzystam z Xcode i różnych wtyczek, w tym linterów i generatorów zasobów, które znacznie upraszczają proces tworzenia oprogramowania. Aktywnie wykorzystujemy również testy jednostkowe i migawkowe oraz stosujemy metodę ciągłej integracji (CI), aby automatyzować kompilacje projektów i ich późniejsze dostarczanie do testerów i App Store. Takie podejście pozwala nam utrzymać wysoką jakość kodu i szybko reagować na zmiany.
Aby zoptymalizować proces tworzenia oprogramowania i zmniejszyć ilość ręcznego kodowania, korzystam z OpenCombine oraz frameworków do analityki i obsługi sieci. Praca z bazami danych nie jest moim głównym obszarem zainteresowań, chociaż w Tinkoff mieliśmy specjalistyczne biblioteki do pracy z SQLite i Core Data, które zapewniały bezpieczne szyfrowanie danych.
Jako menedżer średniego szczebla w Tinkoff projektowałem poszczególne komponenty aplikacji, wchodziłem w interakcję z bazami danych i wdrażałem nowe funkcje. Obecnie, jako lider zespołu, skupiam się przede wszystkim na tworzeniu skalowalnej i łatwej w utrzymaniu aplikacji. Podczas gdy wcześniej koncentrowałem się na projektowaniu przycisków i poszczególnych ekranów, dziś moja praca obejmuje rozwijanie architektury aplikacji, co poprawia jej wydajność i upraszcza przyszły rozwój.
Mój typowy dzień obejmuje codzienne spotkania, omawianie zadań z zespołem, debugowanie i rozwiązywanie problemów infrastrukturalnych. Podczas planowania cotygodniowego sprintu często pojawiają się dodatkowe zadania, które muszą zostać wykonane do końca tygodnia. Działania te pomagają optymalizować procesy pracy i poprawiać ogólną wydajność zespołu.
Jak wprowadzane są aktualizacje i naprawiane błędy
Stosujemy zasady Agile, co pozwala nam efektywnie organizować procesy pracy i kontrolować realizację zadań. Nasz zespół pracuje w dwutygodniowych sprintach, po których przeprowadzamy retrospektywę, aby przeanalizować wyniki i zidentyfikować możliwości usprawnień. Następnie przechodzimy do etapu planowania, podczas którego wspólnie z menedżerami dokonujemy przeglądu zaległości, szacujemy koszty czasowe i priorytety zadań, aby utworzyć nowy sprint. Takie podejście promuje wysoką transparentność pracy i jasny podział obowiązków między członkami zespołu.
Naszym głównym celem jest wykonanie maksymalnej liczby zadań. Jednocześnie nie jesteśmy zbyt rygorystyczni w kwestii terminów – jeśli nie uda nam się ukończyć zadania w ustalonym terminie, przekładamy je na kolejny sprint. Takie podejście pozwala nam zachować produktywność i elastyczność.
Gdy pojawia się błąd, najpierw nadajemy mu priorytet, a następnie decydujemy o jego rozwiązaniu. W większości przypadków naprawiamy błędy w ciągu kilku dni, ale zdarzają się złożone przypadki, które wymagają znacznego nakładu czasu i zasobów. Po poprawieniu kodu przekazujemy go testerom, a następnie do Apple do weryfikacji. Łącznie proces naprawiania błędów trwa od jednego do trzech dni.
Szybkość tworzenia nowych funkcji zależy bezpośrednio od ich zależności od backendu. Na przykład, zmiana odznak może zostać ukończona w ciągu jednego do dwóch dni. Jednak wdrożenie procesu autoryzacji w aplikacji trwa znacznie dłużej – w naszym przypadku zajęło ponad dwa tygodnie. Wynikało to z dokładnego testowania wszystkich możliwych scenariuszy i konieczności oczekiwania na zakończenie pracy zespołu backendowego. To podkreśla wagę synchronizacji między zespołami frontendowym i backendowym w celu optymalizacji procesu rozwoju.
Co miesiąc publikujemy jedno lub dwa wydania, łącząc wszystkie zadania wykonane w sprintach. Niektóre zespoły regularnie publikują aktualizacje co dwa tygodnie, wykorzystując inną technologię, aby dostarczać użytkownikom nowe funkcje. Pozwala nam to na utrzymanie aktualności produktu i szybkie reagowanie na potrzeby użytkowników.
Dlaczego warto dołączyć do dużej firmy
Zanim wybierzesz pracę, ważne jest, aby jasno zrozumieć swoje oczekiwania. Dla mnie priorytetem jest stabilność i przejrzystość. Chcę wiedzieć, ile zarabiam i za co dokładnie otrzymuję wynagrodzenie. Ważne jest również, aby mieć własny obszar odpowiedzialności, który pozwala mi efektywnie zarządzać zasobami i właściwie równoważyć czas między pracą a życiem osobistym. Zrozumienie tych aspektów pomaga mi podejmować bardziej świadome decyzje przy wyborze ścieżki kariery.
Praca w dużej firmie zapewnia stabilność dochodów i jasne oczekiwania finansowe. Zawsze dokładnie wiesz, ile otrzymasz każdego miesiąca, co pozwala Ci planować wydatki i budżet. Ten poziom przewidywalności stanowi istotną zaletę dla wielu profesjonalistów poszukujących bezpieczeństwa finansowego i bezpiecznej przyszłości.
Startupy oferują wyjątkowe możliwości rozwoju osobistego i zawodowego. Zaangażowanie się w różne aspekty biznesu wykraczające poza rozwój może znacznie rozwinąć Twoje umiejętności jako przedsiębiorcy. Należy jednak być przygotowanym na pracę czasami większą, niż planowano.
Praca w startupie ma swoje plusy i minusy. Głównymi minusami są niestabilne dochody i częste nadgodziny. Jednak zalety są również znaczące: jeśli startup odniesie sukces, możesz otrzymać znaczny udział w firmie i poprawić swoją sytuację finansową.
Ważne jest, aby zaufać swojej intuicji. Jeśli szukasz stabilnego zatrudnienia i pewnego dochodu, wybierz sektor przedsiębiorstw. Jeśli jednak lubisz podejmować ryzyko i odnosić sukcesy w dynamicznym środowisku, startupy mogą być idealnym wyborem.
Istnieje trzecia opcja: outsourcing. W tym przypadku tworzysz programy dla różnych firm, które często nie do końca rozumieją swoje potrzeby i mają ograniczony budżet. W rezultacie możesz nie mieć czasu na rozwijanie swoich umiejętności, ponieważ będziesz ciągle przełączać się między projektami. Nie polecam outsourcingu programistom średniego i wyższego szczebla, ale dla początkujących może to być dobre doświadczenie.
Czego potrzebujesz do pracy w IT
Dyplom ukończenia studiów wyższych nie zawsze gwarantuje udane zatrudnienie w branży IT. Wielu programistów rozpoczynało karierę bez formalnego wykształcenia technicznego i osiągnęło znaczący sukces w zawodzie. Najważniejszymi aspektami pracy w IT są umiejętności praktyczne, doświadczenie i zdolność do samodzielnej nauki. Pracodawcy coraz częściej zwracają uwagę na portfolio prac i rzeczywiste osiągnięcia kandydatów, a nie tylko na dyplom. Dlatego nawet bez wyższego wykształcenia możesz zbudować udaną karierę w branży IT, rozwijając swoje umiejętności i aktywnie uczestnicząc w projektach.

Podczas rozmów kwalifikacyjnych koncentrujemy się nie na posiadaniu dyplomu, ale na wiedzy technicznej i umiejętnościach programisty. Doświadczenie i kwalifikacje zawodowe kandydata odgrywają kluczową rolę w decyzji o zatrudnieniu. Jeśli kandydat nie spełnia naszych wymagań, nie będziemy go brać pod uwagę, niezależnie od tego, czy posiada dyplom, czy nie.
Powszechnie uważa się, że wszyscy programiści to introwertycy. Choć może to być prawdą w przypadku wielu osób, doświadczenie pokazuje, że rozwinięcie umiejętności miękkich znacznie ułatwia poszukiwanie pracy, poprawia interakcję z zespołem i przyczynia się do rozwoju innych umiejętności zawodowych. Umiejętności komunikacji i współpracy stają się ważnymi atutami na rynku pracy dla specjalistów ds. programowania. Rozwijając te umiejętności, programiści mogą nie tylko zwiększyć swoją konkurencyjność, ale także stworzyć bardziej efektywne środowisko pracy.
Oprócz zdania technicznej części rozmowy kwalifikacyjnej, ważne jest również, aby być interesującym rozmówcą. Pracodawca chce, abyś czuł się komfortowo pracując w zespole. Podczas procesu rekrutacji będziesz musiał współpracować z menedżerami, projektantami, specjalistami ds. jakości i programistami back-end. Umiejętności interpersonalne pomogą Ci lepiej zrozumieć zadania i skutecznie wyjaśniać je współpracownikom. Rozwijanie umiejętności miękkich znacząco zwiększy Twoją wartość jako specjalisty i poprawi atmosferę w zespole.
Wielu programistów prędzej czy później stara się dzielić swoją wiedzą i doświadczeniem na spotkaniach i konferencjach. Umiejętności miękkie odgrywają w tym procesie kluczową rolę, pomagając skutecznie przekazywać informacje odbiorcom. Umiejętność komunikacji, prezentowania swoich pomysłów i interakcji z ludźmi staje się kluczem do udanej prezentacji. Rozwijanie tych umiejętności otwiera nowe możliwości rozwoju kariery i rozwoju zawodowego w branży.
Jak zdać rozmowy kwalifikacyjne i czego uczyć początkujących programistów iOS
Rozmowy kwalifikacyjne w dużych firmach to trudny i stresujący proces, szczególnie dla kandydatów bez doświadczenia. Ważne jest, aby przygotować się do tego etapu, aby zwiększyć swoje szanse na sukces. Zrozumienie typowych pytań podczas rozmów kwalifikacyjnych i specyfiki dużych firm pomoże Ci poczuć się pewniej. Przygotowanie CV, zapoznanie się z ofertą firmy i przećwiczenie odpowiedzi na często zadawane pytania może znacząco poprawić Twoją pozycję. Pamiętaj, że nawet brak doświadczenia można zrekompensować motywacją i chęcią nauki.
Głównym celem rozmowy kwalifikacyjnej jest ocena poziomu wiedzy i umiejętności kandydata. Rekrutujący zadaje szczegółowe pytania, aby zidentyfikować obszary, w których kandydat może mieć wątpliwości lub trudności z udzieleniem odpowiedzi. Rozmowa kwalifikacyjna to proces, który można opanować jedynie poprzez praktyczne doświadczenie. Jednak przygotowanie się do rozmowy kwalifikacyjnej jest kluczowym krokiem, który pomoże zwiększyć pewność siebie i poprawić wyniki. Przygotowanie obejmuje analizę typowych pytań, analizę własnych osiągnięć i umiejętności oraz zrozumienie wymagań stanowiska.
Zalecam wszystkim założenie konta w serwisie GitHub. Dla naszego zespołu jest to kluczowy aspekt oceny kandydatów, ponieważ pozwala nam ocenić jakość ich kodu. Posiadanie aktywnego profilu z wyróżnionymi projektami znacząco zwiększa szanse programisty na sukces zawodowy. GitHub jest ważnym wskaźnikiem umiejętności i doświadczenia, co czyni go niezbędnym narzędziem dla programistów.
Istnieje wiele platform online, które mogą pomóc w nauce programowania i przygotowaniu się do rozmowy kwalifikacyjnej o charakterze technicznym. Poniżej znajduje się lista zasobów przydatnych dla wszystkich programistów:
- Twitter. Ta sieć społecznościowa skupia wielu programistów, którzy dzielą się swoim doświadczeniem i wiedzą. Na przykład John Sandell, polski programista, pisze artykuły o nowych technologiach i poradniki dla początkujących. Wszystkie są po angielsku, ale bardzo ciekawe i przydatne. Jeśli więc nie masz jeszcze konta na Twitterze, wiele tracisz.
- Telegram. Znajdziesz tu wiele świetnych kanałów poświęconych programowaniu na iOS. Na przykład iOS Good Reads lub kanał programistów Dodo.
- YouTube. Znajdziesz tu wiele kanałów poświęconych programowaniu na iOS. Na przykład Paul Hudson, AppleProgramming i CodeWithChris.
- Kursy. To również dobry sposób na opanowanie zawodu, zwłaszcza jeśli brakuje Ci motywacji lub potrzebujesz mentora. Znajdziesz oba te elementy w kursach. Ale nawet jeśli bierzesz udział w kursach, kontynuuj programowanie samodzielnie i czytaj dodatkowe materiały.
Dla początkujących programistów iOS nauka UIKit to ważny krok. Ten framework stanowi fundament tworzenia aplikacji na iOS i leży u podstaw SwiftUI. Większość istniejących aplikacji na iOS jest oparta na UIKit, co sprawia, że jego znajomość jest niezbędna do udanego startu w rozwoju. Opanowanie UIKit pozwoli Ci zdobyć solidne podstawy, które pomogą Ci lepiej zrozumieć SwiftUI i uprościć proces tworzenia nowoczesnych aplikacji. Dla osób przechodzących z innej technologii do tworzenia aplikacji na iOS, zaleca się wzięcie udziału w specjalistycznym kursie, aby jak najlepiej wykorzystać czas. Darmowe samouczki na YouTube lub kursy na Uniwersytecie Stanforda to doskonałe opcje. Ważne jest, aby być zmotywowanym i chętnym do nauki, co pomoże Ci szybko opanować niezbędne umiejętności i zgłębić tajniki tworzenia aplikacji na iOS. Tworzenie projektów to ważny krok w opanowywaniu nowych technologii. Nie bój się eksperymentować i wdrażać swoich pomysłów. SwiftUI to potężne narzędzie, ale masz wiele innych możliwości. Kluczem jest rozpoczęcie pracy i rozwijanie swoich umiejętności, niezależnie od wybranej platformy lub języka programowania. Pisz, próbuj, ucz się na błędach i nie wahaj się dzielić swoimi projektami ze społecznością. Twoje doświadczenie może zainspirować innych!
Co robi i o czym marzy programista iOS poza pracą
W tworzeniu aplikacji mobilnych cenię sobie możliwość uczestniczenia w projektach na dużą skalę. Z moich aplikacji korzystają użytkownicy, a efekty mojej pracy są widoczne od razu. To przynosi satysfakcję i inspiruje do dalszych osiągnięć w dziedzinie tworzenia aplikacji mobilnych.
Nie poświęcam dużo czasu swoim projektom, ale kiedy zaczynam pisać, zawsze wiąże się to z nauką nowych technologii i narzędzi. Na przykład nie miałem doświadczenia z grafiką 3D i nigdy nie renderowałem trójkątów i wielokątów. To mnie zainteresowało i postanowiłem pobrać książkę na ten temat i stworzyć projekt, który może stać się czymś znaczącym. Kiedyś chciałem też zrozumieć, jak działa wstrzykiwanie zależności, i w rezultacie stworzyłem bibliotekę, która zdobyła 100 gwiazdek na GitHubie. To bardzo satysfakcjonujące i inspiruje mnie do dalszych eksperymentów.
Pracując zdalnie, zdałem sobie sprawę, że praca w firmie za granicą byłaby świetnym rozwiązaniem. Główną zachętą dla mnie jest możliwość pracy w anglojęzycznym zespole, co pomoże mi znacząco poprawić znajomość tego języka. W tej chwili jest to dla mnie niezwykle ważne. Praca w międzynarodowym środowisku nie tylko podniesie moje kwalifikacje zawodowe, ale także da mi możliwość zanurzenia się w kulturze i praktyce komunikacji w języku angielskim.
Chęć zamieszkania w innym kraju stwarza wyjątkową okazję do rozwoju osobistego i zawodowego. Zmiana otoczenia sprzyja rozwojowi umiejętności komunikacyjnych i adaptacyjnych. Pozostając w znanym środowisku, postęp staje się trudniejszy. Dotyczy to również kariery: długotrwałe pozostawanie na jednym stanowisku może prowadzić do stagnacji. Dlatego doświadczenie życia za granicą nie tylko wzbogaca biografię, ale także otwiera nowe horyzonty samodoskonalenia i rozwoju kariery.
Przerabianie tekstu pod kątem SEO obejmuje użycie słów kluczowych, poprawę struktury zdań i uczynienie go bardziej przejrzystym. Ważne jest, aby tekst był informacyjny i odnosił się do tematu.
Przeczytaj także:
- Programista iOS: wynagrodzenie, kariera, gdzie studiować, gdzie pracować
- „Data Science to synteza wszystkich moich zainteresowań”
- Kim jest programista mobilny i jak nim zostać

