W tym roku po raz pierwszy zdecydowałem się wziąć udział w konkursie ImagineCup 2009 w kategorii "Projektowanie oprogramowania". Konkurs w Polsce dobiegł końca, nagrody rozdane, zwycięzcy wybrani, w związku z tym czas na małe podsumowanie całej imprezy.
Mówiąc w skrócie, konkurs polega na stworzeniu ciekawej aplikacji która oprócz swojej innowacyjności ma uratować świat - przynajmniej takie jest założenie :). Uczestnicy mieli za zadanie zmierzyć się z celami ustalonymi przez ONZ, a było to 8 celów milenijnych (Milenijne Cele Rozwoju), a hasło przewodnie konkursu brzmiało "Wyobraź sobie świat, w którym technologia pomaga rozwiązać najtrudniejsze problemy ludzkości".
Nie chciałbym opisywać idei imprezy ponieważ więcej i lepiej możemy znaleźć w Internecie, dlatego po więcej szczegółów odsyłam na strony: imaginecup.pl, imaginecup.com, Interia, WSS, IWP, IWP2 , a sam skupie się na własnej relacji :]
Zmagania drużyny RHEA
Jak się zapewne domyślanie, drużyna do której mam zaszczyt należeć nazywa się RHEA i reprezentuje Politechnikę Białostocką. W skład drużyny wchodzą:
Naszym mentorem był Marcin Bartoszuk, a super grafikiem Krystian Karpiuk.
Nasza przygoda z imagine cup rozpoczęła się w listopadzie gdzie przypadkowy pomysł przeniesienia siatek centylowych do sprawdzania stanu rozwoju dziecka do świata elektronicznego, stał się czymś więcej niż tylko pomysłem i zwykłym projektem na uczelni. Do początku grudnia skompletowaliśmy drużynę, mentora oraz grafika i maszyna ruszyła!
Na początku, gdy terminy były jeszcze bardzo daleko, robota szła bardzo powoli, a leniwe święta wcale nam nie pomagały. Na szczęście pierwszy termin oddania zarysu pomysły na tworzoną aplikację mijał 19 stycznia, co zmusiło nas już do mobilizacji. W tym momencie mieliśmy także zrobiony klikalny prototyp aplikacji desktopowej z ustaloną zawartością ekranów oraz ich kolejnością.
Po 19 stycznia
Mimo wykorzystywania oszacowań na podstawie liczby i stopnia skomplikowalności przypadków użycia (tak tak, robiliśmy doce!) mieliśmy już bardzo mało czasu, a przerwa wymuszona przez sesje na studiach przerwała nam prace na kolejne 2 tygodnie.
Po sesji i feriach, wreszcie udało się zorganizować repozytorium kodu w postaci TFS, zakończyć wszystkie wymagane PoC (Proof Of Concept) i rozpocząć implementowanie! W sumie kodowanie według ustalonego harmonogramu oraz sporządzonych ekranów rozpoczęliśmy od początku marca. Prace developerski staraliśmy się prowadzić według założeń SCRUMa, organizując co dzienne spotkania (scrum meeting) późno wieczorem, które raczej kończyły się wymianą emaila, niż rozmową, jednak mimo to bardzo dobrze się sprawdzały.
Marzec osobiście wspominam jako wyjęty z życia, wszyscy wyrabialiśmy drugi etat (niektórzy po pracy). Ja osobiście zerwałem wszystkie nocki od początku marca aż do 8 kwietnia, z wyjątkiem 13.05 kiedy miałem imprezę ;) .
To czym mogę pochwalić się w przy okazji developmentu, to że mieliśmy przygotowaną dobrą architekturę w postaci prostego rozwarstwienia oraz użytego patternu MVVM. Napisałem dobrą, ponieważ ten zestaw doskonale się sprawdził do naszych potrzeb. Szybka rzeźba w kodzie utrudniała by nam pracę w późniejszych etapach, a z drugiej strony rzucenie się na np. PRISM było by czymś na wyrost.
Warstwę dostępu do danych załatwiliśmy prawie w 100% poprzez LINQtoSQL, a prezentacji przy użyciu MVVM. To co mogę powiedzieć na temat tego ostatniego, to jedno wielkie POLECAM! Pomimo dodatkowego narzutu pracy, zyski w postaci separacji "logiki widoku" od samego widoku są niesamowite. Ułatwiły stworzenie testów, wprowadzanie zmian w kodzie oraz reużywalność niektórych elementów, po prostu cudo! :)
Tak stworzona architektura oraz wcześniej zaplanowane ekrany, usystematyzowały naszą pracę i pozwoliły szacować potrzebny czas. Ten model pracy okazał się skuteczny i godny polecenia.
Działającą aplikację wraz ze screencastem oddaliśmy 8 kwietnia, czyli w dzień deadline-u. Sam screencast nagrywaliśmy 2 dni, a ostatnie zmiany w aplikacji były robione jeszcze rano ;)
Ponieważ 28 kwietnia było dopiero ogłoszenie listy finalistów, wszyscy zrobiliśmy sobie przerwę. Dziewczyny z drużyny spędziły je na nadgonieniu zaległych projektów, a ja wyczekiwałem wyników.
Po 28 kwietnia
Rezultat był niespodziewany, ponieważ dostaliśmy się do pierwszej dziesiątki!! Maszyna znowu ruszyła. Odgrzebaliśmy kod w którym na szczęście oprócz kliku drobiazgów nie musieliśmy za dużo zmieniać. Kod trafił na nasz wewnętrzny UAT oraz testy HCI. W miedzy czasie przygotowywaliśmy się do sesji plakatowej i ewentualnej prezentacji. Swoją drogą jest to duży minus całego konkursu że wszyscy przygotowują prezentację ale tylko połowa ma później szanse ją wygłosić. Trochę to nie w porządku że ludzie uczą się czegoś na marne.
12 maj - półfinały
To już dziś, dzień sesji plakatowej. Specjalnie na tą okazję udało nam się wypożyczyć od firmy Hewlett-Packard specjalny komputer HP TouchSmart IQ500 z ekranem dotykowym za co bardzo dziękujemy!!
Spakowaliśmy cały sprzęt i przybyliśmy na finały. Sędziowie chodzili po stoiskach od 14:00, dlatego też wszyscy zjawili się około 12:00 żeby się przygotować. Nasze stoisko oprócz zgromadzonego sprzętu oraz kilku rekwizytów nie miało żadnych rzutników, plakatów i innych urządzeń ale mimo to chyba nie wyglądało źle :)
Sędziowie chodzili w grupach po 2 i 3 osoby i dla każdej drużyny mieli max 30 minut na zapoznanie się z systemem. W tym czasie każda z drużyn bombardowała ich przemówieniami, pokazami, ulotkami, a nawet słodyczami :P
My osobiście wszystkich sędziów wspominamy bardzo dobrze, żaden nie powiedział nam żeby coś mu się nie spodobało, panowała pełna kultura i w żaden sposób nie przypomniało to telewizyjnych programów "IDOL" czy też "Mam Talent".
Całość zakończyła się lekko po 19:00, kiedy to spakowaliśmy nasze rzeczy i udaliśmy się czym prędzej do domu w celu przygotowań do ewentualnej prezentacji. Tu kluczowy okazał się TIGER który po całym dniu wrażeń i stresu postawił nas na nogi.
13 maj –finały imagine cup 2009
Ten dzień zapamiętałem jako wyjątkowo nerwowy. Rano szybko powtórzyliśmy prezentację i udaliśmy się na ogłoszenie wyników. Na miejscu było już dużo ludzi więc po cichu usiedliśmy sobie gdzieś z brzegu i czekaliśmy na wyniki.
Po krótkim wstępie wyczytano 5 finałowych drużyn: Demoscene Spirit, FTeamS, kAMUflage, NosoiFighters oraz naszą RHEA.
Radość była ogromna. Nie wiedzieliśmy czego się spodziewać, więc wynik był bardzo miłą niespodzianką.
Po chwili niepewności związanej z kolejnością prezentacji, udaliśmy się na dalsze przygotowania. Jak się okazało, mamy numer 4 i będziemy mieli swój pokaz od razu po przerwie kawowej. Pozostały czas przeznaczyliśmy na kolejne przygotowania.
Wybiła 12:45, czyli czas występu. Oczywiście jak na złość Internet nie działał, ale mieliśmy plan B na takie okoliczności w postaci komórki :] Kiedy wszyscy goście wrócili z przerwy, rozpoczęliśmy. Pomimo tremy i małej wpadki w tekście, prezentacja przebiegła raczej pomyślnie (czekamy na nagranie z IPW). Po prezentacji było forum przedsiębiorczości, a myśmy udali się na mały obiadek.
Wyniki! Wyniki były ogłaszane powoli, co dodatkowo zwiększyło stres. No i stało się, zostaliśmy wyczytani jako drużyna która zajmie 4 miejsce razem z drużyną FTeams. Trzecie miejsce zajęła drużyna NosoiFighters, drugie Kamuflage, a pierwsze DemoScene. Jak to mówią "Winner Take All" i także tym razem tak było, jednak mimo to nie zabrało nam to radości z tego co udało nam się dokonać do tej pory. Dostarczone aplikację były na bardzo wysokim poziomie i mam nadzieję że DemoScene w tym roku sięgnie także pierwszego miejsca w Egipcie! Był by to bardzo miły akcent przed przyszłorocznymi światowymi finałami ImagineCup 2010 które mają odbyć się właśnie w Polsce.
Wieczorem Microsoft ugościł wszystkich miłą imprezką integracyjną na której to rzeczywiście poznałem mnóstwo ludzi oraz miałem okazję porozmawiać z tymi których widuje na co dzień na forach codeguru itp.
Podsumowanie
Podsumowując, cieszę się że wziąłem udział w tym konkursie. Może i nie zajęliśmy miejsca na podium ale tworząc nasz system, w bardzo krótkim czasie przerobiliśmy tyle technologii i nauczyliśmy się tak wiele, że zdobyta wiedza jest bezcenna, a korzyści z jej płynące będą długotrwałe. Sam bardzo chciałem zrobić coś większego w WPF, tutaj miałem doskonałą motywację i się udało. Oprócz tego, używaliśmy między innymi: Silverlight 3.0 Beta 1, PEX, MVVM, LINQtoSQL, MS SQL Server, TFS, Windows Mobile, WCF, Silverlight Virtual Earth Map Control, Mashup, czytniki linii papilarnych itd., wszystkie te i nie tylko technologie otrzymaliśmy w skondensowanej dawce w ciągu kilku miesięcy i mogę się założyć że gdyby nie ImagineCup, zapewne nie sięgnęlibyśmy po nie jeszcze długo (no może oprócz Silverlight 3 :P ).
Chciałem także tak na samym końcu pogratulować organizatorom ImaineCup 2009. To nie był mój pierwszy konkurs w którym brałem udział, ale na pewno był to konkurs najlepiej zorganizowany. Zarówna cała impreza jak i wsparcie było bardzo dobrze przemyślane. Organizatorzy, tu szczególnie należy wymienić Piotra Kramka, odpowiadali na każde zapytanie, bardzo często wieczorami i w weekendy, w godzinach w których powinni mieć wolne, oni czuwali aby każdy był poinformowany i każdy wiedział co się dzieje. Liczne spotkania, livemeeting-i oraz emaile usprawniły cały proces, za co należy się duże podziękowanie organizatorom!
Wybrane linki o ImagineCup
- http://www.wi.pb.edu.pl/pl/aktualnoci/272-finay-krajowe-imagine-cup-2009
- http://nt.interia.pl/raport/imaginecup-2009/imagine-cup-2009/news/polscy-mistrzowie-imagine-cup-2009,1306379,,2
- http://wss.pl/NewsList/1,10863.aspx
- http://iwp.com.pl/pressroom/Final-polskiej-edycji-konkursu-Microsoft-Imagine-Cup-2009/1
Pozdrawiam,
Jacek Ciereszko





Brak komentarzy:
Prześlij komentarz