This post comes from the first version of this blog.
Please send me an email if anything needs an update. Thanks!

Praca inżynierska w toku, powoli klaruje się także sytuacja z zaliczeniami na uczelni, także mogę uznać, że wszystko idzie w dobrym kierunku do otrzymania trzech literek i kropki przed nazwiskiem. Mam nadzieję, że uda się zrobić wszystko w wymaganym terminie i “obronić się” w lutym. Dzisiaj poczyniłem kolejny krok do załatwienia spraw uczelnianych - przedstawiłem drugą i ostatnią prezentację na Seminarium Dyplomowym. Zapraszam do przejrzenia tego, co przygotowałem.

Wstęp.

Tym, którzy nie są w temacie proponuję lekturę poprzedniego wpisu o pierwszej prezentacji na temat bibliotek ORM. Wyjaśniłem tam dokładnie całą ideę przedmiotu oraz wymagania postawione przed studentami. Z informacji, jakie zawarłem w nagłówku tego posta znalazła się informacja o tym, że druga prezentacja musi mieć temat taki sam lub co najmniej związany z tematem pracy inżynierskiej. Nie podzieliłem się tym z Wami ostatnio, dlatego czynię to dzisiaj. Mój temat pracy inżynierskiej to:

Projektowanie i architektura frameworka w języku PHP.
Dlaczego taki temat? Otóż, nie lubię tworzyć rozwiązań docelowych, jednorazowych. Pomimo tego, że lubię programowanie webowe, to samo "dłubanie" kolejnych CMSów i portali internetowych jest mało ciekawe - o ile nie robi się tego w sposób usystematyzowany i nie rozwija się własnej, dobrze znanej bazy kodu [ok, tłumaczenie słowa "codebase" trochę kuleje, ale mam nadzieję, że się rozumiemy].

To, co najbardziej mnie interesuje to projektowanie i programowanie bibliotek, które można wykorzystać w dalszej pracy - komponentów stanowiących całość i zamykających w sobie dobrze znaną listę funkcji. Tworzenie nowego frameworka to generalnie zły pomysł i tak powie Wam każdy programista mający doświadczenie w branży. Idea stojąca za tym stwierdzeniem jest bardzo prosta - czy naprawdę komuś może się wydawać, że jest w stanie stworzyć coś lepszego niż dostępny na rynku produkt rozwijany przez rzeszę developerów i przetestowany w tysiącach rozwiązań? Postawione pytanie jest co najmniej retoryczne.

Biorąc pod uwagę właśnie to stwierdzenie chciałbym wyjaśnić pobudki, które skłoniły mnie do wyboru takiego, a nie innego tematu. Jest to praca inżynierskiej, a więc praca, w której będę musiał zaprezentować i udowodnić posiadanie wiedzy dotyczącej tworzenia konkretnych rozwiązań technicznych. W przypadku kierunku, jakim jest Informatyka sprowadza się to do zdolności zaprojektowania pewnej struktury, zastosowania odpowiednich wzorców projektowych i udowodnienia poprawności wykonanego oprogramowania. Ze względu na to, że nie miałem żadnego przekonywującego mnie pomysłu na wyspecjalizowaną bibliotekę, stwierdziłem, że warto będzie zmierzyć się ze stworzeniem rozwiązania ogólnego.

Zamierzam zawrzeć w tym frameworku wszystkie [a raczej te najlepsze / które pamiętam ;]] pomysły i doświadczenie, jakie nabyłem podczas kilku lat rozwoju w branży. Nie chcę się nastawiać na krytykę podważającą sam cel pracy - chcę po prostu sprawdzić swoje możliwości i oddać społeczności coś, co być może znajdzie pewien odzew i chęć dalszego rozwijania. Jako, że lubię tworzyć rozwiązania kompletne, nie będę pod żadnym pozorem w istotny sposób kopiował istniejących frameworków - chcę zapewnić po prostu dobry jakościowo kod, który nie będzie potrzebował rozbudowy konceptualnej - jak to napisałem na jednym ze slajdów - “There’s too much frame, not enough work”. Chciałbym spróbować to zmienić.

Prezentacja.

To tyle w kwestii teorii. Prezentację poświęciłem oczywiście na omówienie struktury i pewnego spojrzenia na sposób tworzenia tego typu oprogramowania. Tym razem prawie całe wystąpienie było w języku ojczystym, jedynie omówienie / streszczenie tematu było po angielsku - taki był wymóg doktora prowadzącego przedmiot, do czego się chętnie dostosowałem.

Zainteresowanych oczywiście zapraszam do przejrzenia przygotowanego przeze mnie materiału w tradycyjnie dwóch egzemplarzach:

W miarę możliwości poprosiłbym o wszelkie opinie i komentarze na temat jakości tej prezentacji. Każdy może się pomylić, a mi zależy na dostarczaniu poprawnych i wartościowych informacji, także kto je będzie weryfikował, jeśli nie Wy, Czytelnicy? ;] Informacje zawarte w tej prezentacji na pewno pomogą zrozumieć ideę stojącą za frameworkami i przynajmniej w stopniu podstawowym wyjaśnić ich działanie. Wzorce projektowe opisane w poszczególnych slajdach uważam za bardzo przydatne i naprawdę polecam dogłębne ich zrozumienie - pozwala to na uproszczenie i ułatwienie zrozumienia tworzonego przez nas kodu.

Podczas prezentacji, jak i po niej nie padło zbyt wiele pytań - moi “współstudiujący” nie byli zbytnio chętni rozmawiać ani pytać o jej treść. ;] Trochę dostało mi się za przedłużanie, ponieważ górnym limitem jest 20 minut, a przedstawienie wszystkich slajdów zajęło mi 22 minuty i 50 sekund. Na szczęście jednak prowadzący uznał chyba przedstawione materiały za wartościowe i udało się ponownie otrzymać piątkę, z minusem, żeby nie popaść w samozachwyt. ;]

Podsumowanie.

Prezentacje przygotowane, przedstawione, zostaje więc jedynie zabrać się  za pisanie pracy. Mój plan jest taki, żeby zaimplementować wszystko do końca grudnia a w styczniu już szlifować samą pracę inżynierską. Czasu jest niemało, aczkolwiek dobrze wiem ile pracy będę musiał w to wszystko włożyć, dlatego nie zamierzam się obijać. Wyniki pracy jak i samą treść na pewno przedstawię Wam w stosownym czasie, także mam nadzieję, że będziecie cierpliwie czekać i dopingować mnie w pracy nad opisanym rozwiązaniem, za co z góry Wam dziękuję.