Hackathon Hack Heroes 2018. Opowieści jurora, czyli za co oklaski, a za co pomidory
5 grudnia 2018 roku poznaliśmy wyniki III edycji konkursu programistycznego Hack Heroes, w którym wzięło udział ponad 140 zespołów, a zatem prawie 600 osób. Jaki był ogólny poziom hackathonu? Które pomysły były najciekawsze? Co w trakcie oceniania prac konkursowych zrobiło na mnie wrażenie, a za jakie niedopatrzenia odejmowałem punkty?
Michał Paradowski. Head of Engineering w Transparent Data. Od ponad 13 lat zajmuje się zawodowo IT, pracując głównie z technologiami backendowymi. Do Transparent Data dołączył jako prawa ręka CTO, przejmując stery działu Engineering, w którym powstają dedykowane rozwiązania dla klientów korporacyjnych oraz platformy SaaS. Wyciska kolejne rps-y z API, parsuje 250 GB pliki w locie, integruje bazy i nawet zamknięte dane przerabia na otwarte. Góry zdobywa nie tylko w pracy. Gdy nie koduje, pakuje plecak na górskie szlaki.
Spis treści
Nastawienie startowe, czyli szybkie tło opowieści
Prawda jest taka, że do rozpoczęcia oceniania prac tegorocznego hackathonu Hack Heroes nie mogłem się doczekać. Tematem przewodnim konkursu były dane publiczne (w tym m.in. dane z KRS i CEIDG, do których API dostarczyła uczestnikom Transparent Data, w której pracuję), a skoro w ręce uczniów szkół średnich miały trafić dane, którymi zajmuję się typowo na potrzeby projektów dla biznesowych rekinów, byłem zaintrygowany, jak użyje ich przyszłe pokolenie programistów. Nazwijcie to branżową ciekawością jeśli chcecie.
Dane publiczne to jednak bardzo szeroka kategoria i uczestnicy hackathonu bardzo często sięgali do różnorodnych źródeł otwartych danych, o czym z resztą opowiem szerzej we fragmencie niżej, dotyczącym “trendów” w pomysłach.
Hack Heroes 2018: kryteria oceny
Każda aplikacja zgłoszona w hackathonie mogła zdobyć punkty w trzech niezależnych od siebie kategoriach:
1. Pomysł (ogólny koncept aplikacji),
2. Kod (przejrzystość i stopień zaawansowania kodu programistycznego),
3. Dobór technologii.
Ja sam do oceniania podchodzę niczym surowy belfer. Moje oczekiwania wobec prac konkursowych były zatem stosunkowo wysokie, choć oczywiście wziąłem poprawkę na to, że oceniam prace nastolatków, a nie programistów z kilkunastoletnim doświadczeniem. I wiecie co?
Poziom tegorocznego Hack Heroes był w całokształcie naprawdę wysoki. Wiele pomysłów na aplikacje było dobrych, a kilka znakomitych. Odnośnie doboru technologii i czystości kodu, wiele zespołów pozytywnie mnie zaskoczyło.
Widać wyraźnie, że mimo młodego wieku, sporo uczestników hackathonu naprawdę już teraz doskonale rozumie na czym polega programowanie i nie waha się tego użyć.
A co zaskakujące, dobiera technologię pod konkretny problem jako metodę rozwiązania, zamiast programować w czymś, co mogłoby być łatwiejsze i co lepiej znają. Odważnie.
Trendy w technologiach
Zastanawiacie się jakie technologie przewinęły się przez Hack Heroes 2018?
Otóż, patrząc na całokształt zgłoszonych prac, jedno jest pewne. Mobilność jest teraz dla młodych programistów czymś całkowicie naturalnym. Jeszcze kilka lat temu byłby to web. Jeszcze dekadę temu, gdy mój kolega, przebywający wówczas w Japonii, opowiadał, że większość ludzi sprawdza tam wszystko online, nie dowierzałem mu. Tak właśnie przez 10 lat, to co z pozoru nierealne, staje się stałym elementem codzienności. Rozwój technologii odbywa się obecnie w sposób skokowy.
80% zgłoszonych projektów stanowiły technologie webowe.
Można było oczekiwać dominacji Javascriptu. I faktycznie, w pracach pojawiał on w różnych maściach i wersjach — począwszy od Typescriptu i Fluttera a na pełnych frameworkach typu React czy Vue skończywszy.
Nadal wyraźnie widać również, że do wielu zastosowań PHP był chętnie wybierany, szczególnie w nowszych wersjach 7.0+ i z użyciem nowych frameworków takich jak Symfony 4 i Laravel 5.7.
Pomimo oczywistej dominacji “webu” i “mobile’a”, część zespołów postawiła na technologie dedykowane rozwiązaniom machine learningowym, jak choćby TensorFlow.
Stark Team, który ją zastosował w swojej aplikacji PARQ, zajął 1 miejsce w Hack Heroes 2018, wygrywając cały hackathon. I w mojej ocenie, całkowicie zasłużenie. Nie dość, że wpadł na świetny pomysł (aplikacja walczy z problemem żmudnego szukania przez kierowców wolnych miejsc parkingowych poprzez przetwarzanie obrazów z kamer na parkingach), to jeszcze wykorzystał właściwe narzędzie do rozwiązania swojego problemu.
Trendy w pomysłach na aplikacje
Jeśli mowa o pomysłach na projekty tegorocznego hackathonu Hack Heroes (a jego tematem przewodnim były — przypomnę — dane publiczne), widać, że uczestnicy nie robili nic na siłę. Tworzyli aplikacje, które rzeczywiście nawiązują do tematów, które ich interesują.
Popularne tematy Hack Heroes 2018:
- Trend 1: zdrowie i medycyna (aplikacje do leków itp.),
- Trend 2: zanieczyszczenie powietrza i smog (aplikacje informujące o stanie skażenia itp.),
- Trend 3: polityka (apki do głosowania itp.),
- Trend 4: lokalność (aplikacje promujące dane miasto, sposób na spędzania w nim czasu, muzea, pomoc sąsiedzką itp.).
W moim mniemaniu, kreatywność jest jak krzywa Gaussa. Sporo pomysłów jest dobrych, ale tylko 2–3 są naprawdę nietuzinkowe. Są czymś, unikalnym. Czymś, czego jeszcze nie było.
Dla mnie, tymi nietuzinkowymi pomysłami na prace konkursowe były:
- aplikacja, analizująca obraz z kamer na parkingach, by podpowiedzieć Ci, gdzie znajdziesz wolne miejsce na Twoim osiedlu (projekt PARQ, który zajął 1 miejsce),
- aplikacja umożliwiająca wyszukanie i przejrzenie organizacji pożytku publicznego, tak aby wesprzeć proces decyzyjny wyboru, komu chcemy oddać swój 1% podatku. W tym przypadku, pomysłowość i kreatywność objawiły się przede wszystkim w kompleksowym podejściu do tematu. Dodatkowe filtry (możliwość wyszukania organizacji w kolejności malejącej na podstawie dochodu oraz zyski z 1% tej organizacji), panel admina, własne API, separacja backend-frontend — każdy z tych elementów został dobrze przemyślany i dobrze przygotowany.. Procencik Team, zajął 3 miejsce w hackathonie.
Z kolei, jeśliby oceniać kreatywność samej nazwy aplikacji konkursowej, moje serce ujęła aplikacja NFZ- Czas Leczy Rany, która polega na informowaniu pacjentów o terminach wizyt, jakie się zwolniły, tak, żeby nie musieli codziennie dzwonić i dopytywać się o zmiany na listach. Biorąc pod uwagę dzisiejsze kolejki u specjalistów, “czas leczy rany” w przeciwnym kierunku.
A teraz pomidory…
Najczęstsze błędy i niedopatrzenia uczestników hackathonu Hack Heroes 2018
Wiele zespołów straciło u mnie punkty za:
- nieudostępnienie kodu źródłowego (tak, wiem! Banał, ale naprawdę zdarzały się zespoły, które zapomniały dać kod!),
- brak dokumentacji technicznej albo forma dokumentacji z błędami ortograficznymi i bardzo hasłowa. Ponad 80% uczestników hackathonu albo zapomniała o dokumentacji całkowicie albo potraktowała ją niczym brudnopis. Zainteresowanych odsyłam do artykułu Jak napisać dobrą dokumentację techniczną aplikacji? Porady i konkretne przykłady,
- brak testów. Mało kto je pisał, a testy są przecież jedynym sposobem, żeby sprawdzić czy Twoja zmiana w kodzie nie zepsuła połowy systemu. Gdy kilka osób pisze jeden projekt aplikacji, testy są niezbędne,
- podejście “jednorazowy projekt” — niektórzy uczestnicy hackathonu, zamiast pobierać dane publiczne online (i wystawić własne API, co jest już w pełni profesjonalnym podejściem do tematu), pobrało dane do bazy. Oczywiście stworzone w ten sposób apki, działają, ale za kilka tygodni lub miesięcy będą nieaktualne z racji opierania się na przestarzałych informacjach,
- dziury w bezpieczeństwie. Projekty konkursowe często nie uwzględniały kwestii bezpieczeństwa aplikacji, w związku z czym m.in. formularze miały podatności XSS i łatwo byłoby je shakować. Zainteresowanym tematem odsyłam do artykułu Bezpieczeństwo aplikacji, czyli 5-ty element kompleksowego podejścia do ochrony firmowych danych, gdzie można dowiedzieć się więcej o zalecanych praktykach i OWASP TOP 10,
- stworzenie zbyt surowego prototypu. Oczywiście specyfiką hackathonów jest to, że aplikacje, które podczas nich powstają, są poglądowe, nie w pełni wykończone czy “reprezentatywne”, ale jednak jakoś prezentować się powinny. Naprawdę czasem jest lepiej zrobić mniej a dobrze. I mierzyć siły na zamiary.
Wyniki Hack Heroes 2018
Na koniec dorzucam krótkie opisy TOP 5 zwycięskich projektów, których autorzy stanęli na podium.
Hack Heroes 2018 miejsce nr 1: PARQ
Stark Team z Zespołu Szkół Technicznych im. J.J. Śniadeckich w Grudziądzu
Aplikacja mobilna, która sprawdza wolne miejsca parkingowe i pokazuje nam, gdzie, dokładnie do którego rzędu, się kierować.
Apka pobiera określone w bazie danych obrazy z publicznie dostępnych kamer monitoringu nad parkingami. Następnie, wytrenowany wcześniej na przygotowanych przeze autorów projektu danych, model sztucznej inteligencji (Konwolucyjna Sieć Neuronowa) przetwarza miejsca parkingowe na zdefiniowanych wcześniej lokalizacjach. Model określa po kolei czy dane miejsce jest wolne czy zajęte, a następnie zwraca tę wartość użytkownikowi w postaci nałożonej na mapę ilości wolny miejsc parkingowych w danych rzędach na parkingu. Po kliknięciu w poszczególny rząd, użytkownik może podejrzeć rozkład miejsc parkingowych w wybranym rzędzie — czyli może zobaczyć które konkretnie miejsca są wolne i gdzie one się znajdują.
Cała aplikacja PARQ została napisana w językach HTML, CSS, JavaScript i Python.
Natomiast wszystkie elementy machine learningowe zostały stworzone w oparciu o bibliotekę Keras (TensorFlow).
Jak działa aplikacja PARQ? Poniżej fragment prezentacji zespołu:
Hack Heroes 2018 miejsce nr 2: LekBierz
Technikum Informatyczne im. Macieja Płażyńskiego w Pucku
Aplikacja mobilna, wykorzystująca Rejestr Produktów Leczniczych, która:
- przypomina kiedy należy wziąć kolejną dawkę leków,
- pomaga prowadzić dziennik przyjętych dawek leków wraz z informacją o możliwych efektach ubocznych,
- powiadamia nas, gdy kończą się tabletki w opakowaniu.
LekBierz rozwiązuje więc problem zapominania o wzięciu leku o danej porze i wspomaga większą świadomość pacjenta o działaniu leków, dzięki ogólnie dostępnym informacjom o substancjach aktywnych zawartych w lekach.
Innymi słowy, użytkownicy mają dostęp do bazy wiedzy o tych substancjach, dzięki czemu lepiej rozumieją, co i w jaki sposób powoduje brany przez nich lek.
W LekBierz zastosowano dodatkowo dwa ułatwienia:
a) kod kreskowy do zeskanowania przez farmaceutę w aptece, aby ułatwić i przyspieszyć kupowanie leków,
b) archiwum leków, które już odstawiliśmy lub skończyliśmy ich branie.
To co mi osobiście bardzo spodobało się w tym projekcie, to to, że zespół, wystawił swoje własne API, a jak wspomniałem wyżej, własne API, daje nam niezależność i możliwość skalowania. Jest to w pełni profesjonalne podejście do tematu.
Hack Heroes 2018 miejsce nr 3: Procencik
Procencik Team, Zespół Szkół Technicznych w Radomiu im. Tadeusza Kościuszki
Aplikacja mobilna, która pomaga znaleźć odpowiednią OPP (organizację pożytku publicznego) w celu przekazania jej swojego 1% podatku na cele charytatywne.
W jaki sposób?
Działanie Procencika:
- wyświetlanie informacji o danej organizacji ( m.in. dochód, adres Google Maps),
- posegregowanie organizacji na miasta oraz kategorie, przy czym kategorie ustalane są przez wewnętrzny algorytm aplikacji na podstawie nazwy oraz celów organizacji,
- wyszukiwanie organizacji poprzez nazwę,
- możliwość posegregowania OPP według ich dochodu w kolejności malejącej,
- możliwość dodawania opinii i ocen danej organizacji,
- możliwość zobaczenia wszystkich zysków organizacji posiadających prawo do pobierania 1% oraz średniego dochodu każdej OPP,
- możliwość wykorzystania API Procencika.
Aplikacja Procencik, fragment prezentacji autorów. Hack Heroes 2018.
Hack Heroes 2018 wyróżnienie: Sejmachina
1 Liceum Ogólnokształcące im. Bolesława Chrobrego w Gnieźnie
Aplikacja, która zwiększa wpływ obywatela na rząd, poprzez umożliwienie mu wypowiedzenia się w sprawach konkretnych ustaw.
Aplikacja pobiera spis ustaw oczekujących na głosowanie w sejmie. Następnie użytkownik może wybrać ustawę, która go interesuje i zagłosować za jej przyjęciem lub przeciw. Ta informacja zostaje zapisana w chmurze.
Jak piszą sami autorzy Sejmachiny:
Użytkownik może dzięki temu pokazać co tak naprawdę popiera bez wychodzenia z transparentami na ulice. Jest to szybki sposób na przeprowadzanie sondaży, co może się przyczynić do zwiększenia wydajności sejmu. Niestety przez Polskie prawo takie “referenda” nie są wiążące, lecz w przyszłości z pomocą tej aplikacji obywatel wpływał by bezpośrednio na uchwalane prawo.
Ten projekt doskonale wpisuje się w to, o czym wspominałem na samym początku — uczestnicy Hack Heroes 2018 nie pisali projektów na siłę, tylko tworzyli aplikacje odpowiadające na rzeczywiste problemy, które ich angażują.
Hack Heroes 2018 wyróżnienie: Mój Sejm
ProSpołeczni informatycy, Publiczne Liceum Ogólnokształcące Politechniki Łódzkiej
Aplikacja ta działa podobnie jak Sejmachina (oba zespoły niezależnie wpadły na ten sam pomysł).
Mój Sejm umożliwia głosowanie na projekty ustaw, które są procedowane w sejmie. Użytkownik ma dostępne dwie zakładki. W pierwszej może się zalogować lub zarejestrować. W drugiej może zapoznać się z listą aktualnie procedowanych ustaw, otworzyć pdf z treścią ustawy i zagłosować na nią.
Aplikacja raz na godzinę sprawdza, czy na stronie sejmu pojawiły się nowe ustawy, sprawdza i aktualizuje informacje o nich, zapisując je w bazie danych. Wszystkie informacje udostępnione są poprzez REST API.
I tutaj również, w opisie autorów Mój Sejm, przebija się marzenie o demokracji bezpośredniej:
(…) Odpowiada na potrzebę przeprowadzanie obiektywnych sondaży, które odzwierciedlałyby prawdziwy pogląd społeczeństwa na temat aktualnie procedowanych ustaw. Pozwoliłoby to obywatelom na ocenę aktualnej sytuacji i mogłoby dać do myślenia politykom czy rzeczywiście chcą wprowadzać tę ustawę. W przyszłości nasza aplikacja mogłaby posłużyć nawet jako narzędzie do wprowadzenia demokracji bezpośredniej.
Artykuł został pierwotnie opublikowany na medium.com/blog-transparent-data.