Już za cztery dni koniec konkursu Daj się poznać – przyszedł więc czas na podsumowanie tych piętnastu tygodni. Ogólnie mogę powiedzieć, że swój udział w konkursie uważam za udany. W dzisiejszym wpisie nie będzie to widoczne, ponieważ trochę ponarzekam. Aby jednak narzekanie nie było tylko pustosłowiem, postaram się wyciągnąć wnioski ze swoich niepowodzeń.
Test-driven development
Na pierwszy ogień biorę testy jednostkowe. Początkowo pisałem je systematycznie, zachowująć zasady Test-driven development. Później jednak wróciły stare przyzwyczajenia i po zaprojektowaniu klasy, przechodziłem od razu do jej implementacji; testów jednostkowych używając właściwie jedynie jako wygodnego narzędzia do uruchomienia pisanej biblioteki (co prawda, cały czas spełniały swoją rolę – wykrywały ewentualne błędy). Kiedy zabrałem się za warstwę prezentacji, możliwość zobaczenia aplikacji w akcji, przyćmiła chęć pisania testów, co uznaję za niepowodzenie. Po przeczytaniu artykułu Piotra Zielińskiego o testowaniu aplikacji ASP.NET MVC dowiedziałem się jednak, że testowanie to niewiele odbiega formą od testów, które napisałem dla pozostałej części projektu. Mogę więc powiedzieć, że zdobyłem podstawową wiedzę teoretyczną i praktyczną o TDD. Na reprymendę zasługuje za to moja samodyscyplina.
Wniosek na przyszłość: przy pracy nad przyszłymi projektami przyda mi się więcej dyscypliny i dbałości o “best practices”. Być może dobrze zrobiłby mi udział w projekcie zespołowym.
Wzorce projektowe
Krótko: wzorzec repozytorium to sporo mniej, niż chciałem przyswoić i zaimplementować. Poczytałem co prawda o popularnym wzorcu singleton, ale nie znalałem w projekcie miejsca, w którym jego implementacja byłaby naturalna i niewymuszona. Natomiast ucząc się ASP.NET MVC 2, chciałem najpierw wypracować własne stanowisko i podejście, a dopiero później skonfrontować swoje rozwiązania z tymi ogólnie przyjętymi.
Wniosek na przyszłość: powinienem poświęcić trochę czasu na lekturę związaną z wzorcami projektowymi, aby znać miejsca odpowiednie do ich zastosowania jeszcze przed etapem projektowania aplikacji.
Ostateczna forma aplikacji
W obecnej formie, InvoiceInvoker na pewno nie powala ani wyglądem, ani wygodą użytkowania. Nie jest gotowy do “użytku publicznego”, choćby ze względów bezpieczeństwa (przykładowo dlatego, że identyfikatory encji bazy danych to po prostu kolejne liczby całkowite, a nie GUIDy). Dlatego też nie zdecydowałem się na jakikolwiek hosting. Zapraszam jednakże do ściągnięcia źródeł (kiedy opublikuję ich ostateczną postać) i lokalnego uruchomienia aplikacji – wszystkie planowane funcjonalności udało mi się zaimplementować. Co do wyglądu i wygody użytkowania: cóż, przede wszystkim jest to projekt służący jedynie nauce, zdobyciu doświadczenia. Nie bez znaczenia jest też to, że pracuje nad nim tylko jedna osoba – która na dodatek nie posiada rozwiniętego zmysłu estetycznego. Co za tym idzie, arkusz stylów aplikacji niewiele różni się od domyślnego, wygenerowanego automatycznie przez Visual Studio.
Ciężko w tym przypadku o wniosek na przyszłość, ponieważ właśnie takiej postaci aplikacji się spodziewałem. Mimo wszystko, faktem jest, że postać ta nie jest w pełni satysfakcjonująca.
Blogowanie
W tej kwestii mam mieszane uczucia. Z jednej strony, treści i formie wpisów nie mam zbyt wiele do zarzucenia (może tylko tyle, że zbyt duża ich część traktowała sucho o napisanym kodzie, a za mała o teorii, czy tematach okołoprogramistycznych). Z drugiej – częstotliwość pojawiania się notek, a także ilość czasu poświęcona na napisanie każdej z nich sprawia, że nie jestem z siebie zadowolony. Początkowo zapowiadało się nieźle, publikowałem dwa lub trzy wpisy tygodniowo. Z biegiem czasu częstotliwość malała, aż w końcu się odwróciła: pisałem raz na dwa tygodnie. Ma to oczywiście związek z końcem wakacji i początkiem roku akademickiego. Tak czy inaczej, w dalszym ciągu nie wypełniłem wymagań konkursowych – ten wpis jest dopiero dziewiętnastym z dwudziestu wymaganych.
Wniosek na przyszłość: wygląda na to, że raportowanie własnej pracy nie jest dla mnie. Być może po zakończeniu konkursu, kiedy tematyka wpisów nie będzie ograniczona żadnym regulaminem, blogowanie stanie się dla mnie łatwiejsze i przyjmniejsze.
Powyższe niedociągnięcia i zaniedbania nie są na szczęście na tyle poważne, abym zaczął rozważać zmianę planów dotyczących przyszłego zawodu. Tworzą za to listę aspektów związanych z tym zawodem, nad którymi muszę jeszcze popracować.
Aby nie zostawiać Czytelnika z poczuciem, że mój udział w konkursie to nic więcej, tylko pasmo porażek, zapraszam do przeczytania kolejnego wpisu, w którym podsumuję korzyści wyniesione z tego udziału.
A blogować dalej będziesz?
Co do nauki wzorców, to gorąco polecam zapisać się na przedmiot ZPR…
Blogować, prędzej czy później, będę na pewno. Mam nadzieję na “prędzej”, bo po konkursie “Daj się poznać”, warto byłoby wszcząć inicjatywę “Nie daj o sobie zapomnieć”
O ZPR rozmawiałem niedawno z ludźmi ze starszych semestrów, wygląda zachęcająco.
Ano polecam gorąco! Nie bój się, że to C++ – po tym przedmiocie pokochałem ten język 😀