Moja historia (dlaczego poszedłem na doktorat)

Zacznijmy od tego, że w mojej opinii w 99% przypadków, pójście na doktorat to strata czasu. Po pierwsze, kursy jakie są tam proponowane, w bardzo małym stopniu rozszerzają to co powinniśmy już wiedzieć mając tytuł magistra. Po drugie, stypendium (które jest wypłacane każdemu) nie wystarcza nawet na wynajem kawalerki (przynajmniej w 2019-2024 we Wrocławiu tak było). Zmusza to doktorantów do podejmowania pracy na pełnym etacie w sektorze prywatnym lub do siedzenia na garnuszku rodziców kolejne 4 lata (a może i więcej lat). Po trzecie, sam tytuł doktora oprócz tego, że możemy znaleźć zatrudnienie za minimalną krajową na uczelniach, nic nie daje.

Dobra, skoro już wiecie, że według mnie to jest bezsensu, to powiem Wam, dlaczego ja się na to zdecydowałem. Zacznijmy tę historię od początku. Gdy byłem w liceum, Wydział Podstawowych Problemów Techniki na Politechnice Wrocławskiej organizował akcje zachęcania studentów. Jako, że byłem w klasie mat-inf, to wybrano naszą klasę do tej akcji. Przez cały semestr, raz w tygodniu opowiadano nam o informatyce i agitowano o wyższości WPPT nad innymi wydziałami wykładającymi informatykę. Miałem wtedy niesamowite szczęście wylosować profesora Jacka Cichonia. Profesor w niesamowicie ciekawy sposób opowiadał nam o algorytmice, pokazując jakieś proste problemy i ich różne rozwiązania. Jedne były tak wolne, że nigdy byśmy się nie doczekali wyniku, inne były tak szybkie, że wynik pojawiał się na ekranie laptopa w mniej niż sekundę. Już po pierwszych zajęciach wiedziałem, że chce studiować informatykę algorytmiczną na WPPT. Wiedziałem, że łatwo nie będzie. W Liceum nauczyli mnie programować w języku C (same programowanie wykładano bardzo słabo) oraz implementować kilka znanych algorytmów. Wiedziałem, że to za mało. Na własną rękę uczyłem się programowania w C i w C++ oraz zgłębiałem algorytmy i struktury danych czytając “Wprowadzenie do algorytmów”. 

Studia przebiegały bardzo dobrze, było czasami ciężko, ale spokojnie dawało się zdać. Miałem dużą frajdę z poznawania kolejnych rzeczy. Co ciekawe okazało się, że umiejętności z programowania, które sam przyswoiłem, były wystarczające aby bez problemu robić wszystkie zadania z C/C++/JAVA na pierwszych dwóch semestrach. Z tego względu, że kursy dotyczące programowania skupiały się na rzeczach, które już umiałem, to utrudniałem sobie listy zadań implementując lepsze algorytmy i kolejne optymalizacje, tak aby program działał szybciej niż prowadzący przewidywał w zadaniu. Mój wykładowca podstaw programowania obiektowego – doktor Wojciech Macyna widząc moją zajawkę do bawienia się algorytmami i programowaniem, zaprosił mnie do badań nad indeksowaniem baz danych na dyskach SSD. Przez cały semestr razem głowiliśmy się, jak stworzyć dobrą strukturę danych, która wykorzysta potencjał drzemiący w SSDkach. W końcu nam się udało, badania zakończyliśmy z powodzeniem, projektując strukturę FA-Tree (wraz z implementacją w C, którą przepisałem na doktoracie do C++). Prowadzenie badań naukowych tak mi się spodobało, że już wtedy wiedziałem, że chcę ukończyć studia trzeciego stopnia. 

I to tyle, to cała moja historia doktoratu. Czy zdecydowałbym się kolejny raz na wybranie tej ścieżki? Ciężko powiedzieć, czas pokaże, czy PhD się do czegoś przyda.

Moje zainteresowania naukowe

Od zawsze interesowałem się programowaniem niskopoziomowym w językach C i C++. Schemat działania alokatora pamięci, schedulera, systemu plików nie są mi obce, a najlepiej wspominam pracę jako Linux Kernel Developer. Z tego powodu zdecydowałem się na poszukiwanie takiego nurtu informatyki teoretycznej, w której będę mógł wykorzystać swoją wiedzę oraz będę mógł dalej bawić się programowaniem niskopowiomowym. Okazało się, że dość bogatym obszarem badań są algorytmy indeksowania danych na specyficznych modelach pamięci jak nowe dyski SSD czy Intel Optane PCM. Badania tego obszaru polegają na tworzeniu nowych struktur danych (indeksów), które będą dostosowane do charakterystyki nowej pamięci.
 
Jako efekt badań naukowych wraz z dr. inż. Wojciechem Macyną napisaliśmy artykuły:

Moje zajęcia

Jako student szkoły doktorskiej, później asystent dydaktyczno-badawczy prowadziłem laboratoria z następujących przedmiotów:

  • Programowanie obiektowe (C++/JAVA)
  • Architektura komputerów (C)
  • Programowanie współbieżne (C/ADA/GO)

Jeśli kiedyś studiowaliście informatykę lub pochodne kierunki na PWR, to wiecie, że laboratoria zazwyczaj sprowadzają się do oddawania wcześniej zrobionych w domu list zadań. Uważam to za całkowicie zmarnowany potencjał tych zajęć, w końcu laboratoria w założeniu powinny rozszerzać wykład o kolejną porcję wiedzy, tym razem, PRAKTYCZNĄ. Z tego powodu, u mnie na laboratoriach zawsze prócz oddawania list, próbowaliśmy się czegoś nowego nauczyć, często były to elementy programowania potrzebne w procesie zdobywania pracy, wymagane przez korporacje na rozmowach rekrutacyjnych.

Nie będę tutaj rozpisywał czego dokładnie uczyłem w ramach laboratoriów, jeśli chcesz się czegoś nauczyć, wejdź na mojego bloga, gdzie sukcesywnie dodaję nowe kursy (kursy są odblokowywane  po stworzeniu całego kursu).

Poniżej zamieszczam przekopiowane z polwro opinie o moich zajęciach:

Student
Student
Czytaj więcej
Kurs: Kurs programowania - L
Ocena opisowa: Świetny prowadzący

Zajęcia z mgrem Kukowskim w semestrze letnim 2019/2020 odbywały się zdalnie, z użyciem Discorda. Prowadzący udostępniał trzy dwugodzinne sloty w tygodniu, w których można było zaliczać listy zadań. Jeśli ktoś nie miał takiej możliwości, mógł też po prostu wysłać rozwiązania na mejla. Mgr Kukowski był prostudencki, publikował dobre rady odnośnie stylu programowania (co było znaczącym rozszerzeniem wykładów dra Macyny), później wymagając oczywiście stosowania się do nich. W przypadku wątpliwości można było napisać do prowadzącego wiadomość prywatną na Discordzie, najczęściej odpisywał błyskawicznie, często wysyłając przykładowe programy objaśniające dany temat. Myślę, że z czystym sumieniem mogę polecić mgra Kukowskiego jako świetnego, znającego się na rzeczy i prostudenckiego prowadzącego.
Student
Student
Czytaj więcej
Kurs: Kurs programowania - L
Ocena opisowa: genialny

Wymagający zdecydowanie więcej niż Macyna, ale jak tłumaczy! No tyle czasu poświęconego na studenta to chyba nikt nie miał. Dawał nam dużo materiałów, przykładów, wskazówek. Jeśli miałeś pytania pisałeś do niego o dowolnej porze dnia i nocy i zawsze znalazł czas.
Student
Student
Czytaj więcej
Kurs: Programowanie współbieżne - L
Ocena opisowa: Kukos TOP

Laboratoria z programowania współbieżnego prowadzone przez mgra Kukowskiego odbywały się na Teamsach. Na początkowych kilku zajęciach prowadzący robił miniwykłady, na których omawiał podstawowe problemy współbieżności na przykładach w językach C, Ada i Go. Widać było, że mgr Kukowski znał się na rzeczy i chciał przekazać nam dodatkowe informacje, przy czym robił to w bardzo rzeczowy i przyjemny sposób. Naprawdę można było się tam czegoś nauczyć i aż szkoda, że ten prowadzący nie prowadził zwykłych wykładów z programowania współbieżnego. Oddawanie list, w odróżnieniu od grup dra Kika i dra Gębali, odbywało się w pełni na zajęciach. Wszyscy prezentowali swoje rozwiązania całkowicie publicznie, co na początku wydawało mi się trochę stresujące, ale koniec końców takie nie było. Można było natomiast szybciej przejść przez kolejne osoby, ponieważ nie trzeba było wielokrotnie omawiać tych samych błędów. Mgr Kukowski oceniał wszystko to, co nie było bezpośrednio związane ze współbieżnością, baaardzo liberalnie, raczej nigdy nie odejmował punktów za drobnostki czy zły design kodu. Prowadzący czasami rozszerzał listy przekazane przez wykładowcę (na przykład gdy dr Kik zezwolił na deadlocki, czyli de facto niedziałający poprawnie program, mgr Kukowski pokazał nam rozwiązanie tego problemu i zakazał deadlocków) - natomiast wydłużał on wtedy termin na oddanie listy. Prowadzący był bardzo prostudencki, czasami podciągał oceny, żebyśmy nie musieli martwić się kolokwium końcowym u dra Kika (laboratorium odpowiadało za 85% oceny końcowej z przedmiotu). Jedyny zgrzyt w mojej grupie nastąpił, gdy dwie osoby zostały przyłapane na całkowitym splagiatowaniu swoich rozwiązań od innych osób. Za drugim razem mgr Kukowski ostro się zdenerwował i powiedział, że nie będzie już podnosił końcowych ocen, ale finalnie chyba jednak nie spełnił swojej groźby 😉 . Szczerze polecam tego prowadzącego. Dużo mówi o nim fakt, że jego grupa podczas zapisów zapełniła się błyskawicznie. Naprawdę, jeśli chodzi o prowadzenie zajęć - Kukos TOP!
Student
Student
Czytaj więcej
Kurs: Programowanie współbieżne - L
Ocena opisowa: Znowu pokazał klasę.

To mój kolejny semestr z tym genialnym człowiekiem. Potrafił naprawić każdą wadę dra Kika prowadząc własne wykłady na laboratoriach, które pozwoliły nam na dużo większe zrozumienie problemów programowania współbieżnego. Nie znam drugiej takiej ambitnej osoby na Politechnice - mimo tego, że pracuje na pełen etat i robi doktorat, potrafi dać z siebie 100% i szukać dla nas dodatkowych materiałów, czy odpowiadać na dowolne (związane z kursem) pytania w mniej niż 24h. Ocenia łagodnie, jeśli chodzi o samą strukturę kodu, chociaż rzuci czasem komentarz jak coś jest nie tak - jeśli chodzi o działanie programu, jest bardzo sprawiedliwy - działa to maks, nie działa to obniży albo nawet wyzeruje (o tym ostrzega wcześniej, np. nie dopuszczał deadlocka, podczas gdy w innych grupach laboranci dopuszczali, ale podał nam przykładową strategię jak go uniknąć).
Student
Student
Czytaj więcej
Kurs: Kurs programowania L
Ocena opisowa: Szef

Jeśli chcesz dużo wynieść z labów, to tylko do niego. Robi mini-wykłady uzupełniające wiedzę. Nie jest łatwo otrzymać maksymalną ocenę, bowiem wymaga stosowania się do wcześniej omówionych przez niego "standardów" i sprawdza każdy program indywidualnie. Jednakże w razie problemów z kodem można do niego napisać maila i na pewno pomoże. Jeśli chcesz się nauczyć, a nie tylko zdać, to polecam serdecznie doktora.
Student
Student
Czytaj więcej
Kurs: Architektura Komputerów i Systemy Operacyjne - L
Ocena opisowa: Bezkonkurencyjny prowadzący

Mgr Michał Kukowski podczas zajęć w obu semestrach, na które uczęszczałem był bardzo zaangażowany w przekazanie praktycznej wiedzy, której brakowało na wykładach. Często na laboratoriach był krótki wykładzik odnośnie zadań, który był o tym jak zrobić te zadania naprawdę dobrze i solidnie. Warto podkreślić, że mgr Kukowski jest bardzo komunikatywna osoba która doskonale potrafi tłumaczyć oraz posiada wiedzę praktyczną, ponieważ sam pracuje w firmie IT. Przy ocenianiu zadań zawsze tłumaczył co jest źle i jak to można zrobić to lepiej. Serdecznie polecam tego prowadzącego dla osób które chce wynieść sporo dodatkowej i praktycznej wiedzy, której najprawdopodobniej nie zobaczą na wykładzie.
Student
Student
Czytaj więcej
Kurs: Architektura Komputerów i Systemy Operacyjne - L
Ocena opisowa: świetny prowadzący

Laboratoria prowadzone przez doktora Kukowskiego były dla mnie (a także dla większości kolegów i koleżanek) najważniejszym punktem w ciągu tygodnia, na które zawsze przychodziłem z wielką chęcią. Podczas zajęć doktor rozwijał tematy poruszone na wykładach, aby po rzetelnie przepracowanym roku być dobrze przygotowanym do wejścia na rynek pracy. Doktor posiada bardzo duże kompetencje w programowaniu, architekturze komputerów oraz innych obszarach związanych z informatyką, którymi chętnie dzielił się ze studentami. Niektóre ważniejsze zadania od prowadzących kurs znacznie rozszerzał, oczywiście dla chętnych. Celem tych zadań było zapoznanie nas z różnego rodzaju narzędziami i technologiami, które są bardzo przydatne i szeroko stosowane w dzisiejszych korporacjach. Podczas zajęć panowała luźna i przyjazna atmosfera, co pozwalało zdobywać cenną wiedzę w towarzystwie żartów i śmiechu. W razie pytań można było napisać maila, na którego zazwyczaj Doktor odpowiadał szybko i bardzo rzeczowo. Jeśli jesteś osobą ambitną i chcesz nauczyć się wielu rzeczy o świecie informatycznym oraz zdobyć informacje o tym, jak wygląda praca w firmach od środka, zdecydowanie polecam współpracę z tym człowiekiem. Lepszego wyboru nie możesz dokonać!
Poprzedni
Następny

Moja rozprawa doktorska