Ve dnech 28. - 29. února 2020 se konal technologický hackathon na FIT ČVUT v Praze. Podobné akce u nás v DAMI se zaujetím sledujeme, rozvoj technologií a nové přístupy totiž rozhodně rádi podporujeme. Tento historicky první hackathon na Fakultě informačních technologií pro nás však byl něčím výjimečný. Jeho vítězové Štěpán, Tomáš, Filip a Petr se i při jejich vysokoškolském studiu s námi podílejí na několika projektech. Kluky jsme vyzpovídali a přinášíme rozhovor, který poodhalí celý průběh akce.
TL;DR: V rámci 24 hodin tento čtyřčlenný tým naprogramoval nativní mobilní aplikaci v Kotlinu pro chytré hodinky, které využívá zaměstnanec na výrobní lince. Zároveň vytvořili aplikaci zobrazující informativní dashboard napsaný ve Flutteru, který využívá vedoucí pracovník. Svůj projekt stihli dotáhnout do konce a ještě se připravit na neméně důležitý bod celé soutěže – prezentovat projekt investorům. Nakonec se vše podařilo a tento zkušený tým absolutně zvítězil! Díky svému úspěchu byli pozvaní třeba i do České televize.
Klíčová slova článku: Hackathon, HackFIT 2020, Smart Wear, Wearables, Kotlin, Flutter
Co se vyvíjelo?
Naše řešení spočívalo ve vývoji aplikace pro chytré hodinky, to bylo vyvíjeno pomocí nativní Android aplikace v Kotlinu. Zároveň jsme vyvíjeli aplikaci pro informativní dashboard, ten byl psán ve Flutteru, díky čemuž jsme byli schopni zajistit přehledné zobrazení ať už na tabletu, webu nebo dalších zařízeních. Celé řešení bylo postavené na Firebase Firestore databázi.
Projekt jsme nazvali MyShift a spočíval v použití aplikace na Android Wear OS, ve které mohl zaměstnanec na výrobní lince pohodlně přijímat úkoly a viděl jednotlivé odpočty do konce přiděleného úkolu. Zároveň také mohl komunikovat s mistrem na lince a v případě nějakého problému ho mohl v řádu vteřin přivolat. To vše probíhalo v reálném čase s minimálním zpožděním. Hlavní přidanou hodnotou tak byla optimalizace času. V rámci dílčích úkonů si řeknete, že sice zanedbatelná, ale v měřítku jednoho dne nebo měsíce už je to dost vteřin (a co teprve na výrobní lince).
Co představuje vývoj pro chytré hodinky?
V podstatě je to jako psát aplikaci na telefon, avšak s omezeným UI – menší displej, horší viditelnost – navíc WearOS je trochu drsnější a vypíná různé procesy na pozadí ještě víc, než klasický Android. Je tedy potřeba k tomu tak přistoupit a počítat s nějakými změnami a restrikcemi, které by v klasické mobilce fungovaly.
Jak se člověk rozhodne, že se zúčastní Hackathonu?
Do velké míry to pro nás byla otázka určitého hecnutí a možnosti si vyzkoušet něco nového. Přeci jenom, když se řekne ve skupině “Co takhle, kdybychom jeli na soutěž a celý den i noc budeme vyvíjet na ČVUT?” Má to v sobě má takový zajímavý náboj, jednoduše nás to lákalo. Zároveň jsme to vnímali jako možnost se podívat, jak k vývoji přistupují i jiní vývojáři ve stejném nebo podobném oboru a prohodit s nimi řeč.
Hackathon představuje programovací akci, která si klade určitý cíl. Výraz se skládá ze dvou slov, hack a marathon, které napovídají významu. Nejenom vývojáři se tak snaží během určitého časového intervalu (24 hodin nebo i více) dokončit zadaný softwarový projekt. Slovo hackathon bylo v nedávné době možné slyšet i v souvislosti se mediálně probíranou státní zakázkou na dálniční známky.
Je možné se na podobnou událost připravit?
Přijet dobře vyspaný!
Záleží určitě na typu události, v některých případech je totiž možné přijet s vlastním tématem. Z toho samozřejmě vyplývá, že se nad tou problematikou mohlo přemýšlet s předstihem a vlastně je tak možné dotáhnout řešení (i kdyby jenom na teoretické úrovni) až do konce. V případě takových soutěží pak nápad je to nejcennější – ve většině případech se totiž má jednat o nějaké unikátní řešení. Ve chvíli, kdy vám tiká čas a téma ještě není na světě, tak to pro tým může být dost stresující. Druhá varianta podobných hackathonů je tedy taková, že vývojáři přijedou na akci, sestaví týmy (někdy i náhodně) a poté jim je zadané téma, na jehož vypracování mají určený čas.
My jsme měli přibližnou myšlenku toho, co bychom případně mohli dělat, ale jeli jsme tam s tím, že bychom si rádi téma vybrali na místě. To se také stalo. Po konzultaci s mentory jsme dospěli k tématu od Škoda Auto a.s. nesoucí název Zefektivnění výrobních procesů pomocí nositelné elektroniky.
Co se obecné přípravy týče, tak kromě základního repozitáře s často řešenými problémy, které mohou na místě ušetřit čas, se nějak zvláště připravit nedá. Hodně to vychází ze zkušeností, které ten tým, respektive jednotlivci v týmu mají. Sami moc dobře víme, že nejhorší jsou případy, když “něco nefunguje” a není úplně jasné proč, takže se musí debugovat, debugovat, debugovat. Každý se setkal s jinými problémy, řešil jiné situace a od toho se odvíjí i rychlost řešení.
Zmínili jste, že byla nějaká témata na místě, jaká například?
HackFIT měl předem vypsaná témata od sponzorů, týkající se třeba využití webkamer pro předpověď počasí, užití neuronových sítí pro analýzu finančních zdrojů nebo třeba využití různých komponent pro rozšíření IoT.
Pro představu, jak taková soutěž probíhá.
Celá akce začínala v pátek 28. února registrací více než šest desítek účastníků ve 13:30, následovaná úvodním slovem organizátora a krátkou prezentací témat jednotlivých garantů. Poté došlo k výběru témat a teprve před 17. hodinou přichází samotný začátek, od kterého běží daných 24 hodin. V sobotu 29. února tak po páté odpolední započaly prezentace týmů a kolem 19:00 se všichni přítomní dočkali vyhodnocení tohoto vyčerpávajícího programu.
Krizovka?
Dá se to tak říct, ale přišla déle, než jsme čekali. První známky únavy se dostavily až kolem šesté hodiny ráno. Touto dobou jsme už měli první použitelnou verzi pro zobrazování úkolů v hodinkách pro zaměstnance. Jednotlivé úkoly na ně mohl rozesílat z tabletu mistr ve výrobě. V tu chvíli nám zbývalo “jen” odladit detekci opuštění prostoru za pomocí Bluetooth technologií.
Spali jste tedy vůbec nebo se jelo non-stop?
Jeli jsme v podstatě non-stop, jeden desetiminutový šlofík nepočítáme! Nespat bylo asi to nejtěžší, s čím jsme se museli potýkat. Představte si, že máte 24 hodin programovat a víte, že víc času není. Vzhledem k tomu, že jsme do toho byli zapálení, tak ono to pomyslně člověka nepustí ani usnout, chce totiž ladit, psát a dotáhnout to do konce.
Máme doporučení, jak k podobným situacím přistoupit. Rozhodně hodně pitného režimu, občas protáhnout nohy a hodně se smát se svým týmem! Položit se na stůl a protáhnout si pořádně záda se také osvědčilo.
Dashboard napsaný ve Flutteru, co vás k tomu vedlo? Jaké jsou hlavní výhody?
Je to celkem jednoduché, zpočátku jsme nevěděli, jestli budeme chtít mít dashboard na webu a nebo v tabletu. Abychom ušetřili čas přemýšlením nad různými variantami, rozhodli jsme se pro Flutter. Ten totiž umožňuje běh na obou platformách. To znamená, že jsme měli ošéfované obě varianty závěrečné prezentace podle toho, pro co bychom se rozhodli. Taky jsme trošku sázeli na to, že by nám to mohlo vykouzlit nějaké plusové body – v případě dotazu od poroty, zda by dashboard fungoval i na jiném zařízení (responzivita, …). Jednoduše řečeno jsme se snažili trošku předvídat situaci. Finální prezentace nebyla webová, ale přímo na tabletu.
Flutter je framework, díky kterému je možné vytvořit plnohodnotné mobilní aplikace pro obě platformy iOS a Android zároveň. Čtěte o výhodách Flutteru.
Problémy, bugísky a situace, kdy s vámi třeba nekomunikuje zařízení. Jak k tomu v takovém časovém presu přistupovat? Řešili jste vše jako tým?
(smích) Samozřejmě, že takové situace nastanou. A přesně jak naznačuješ, pod tím časovým presem je to teprve krušné se s nimi vypořádávat. Ono to tak nějak automaticky vyplynulo ze situace a každý z nás se vrhnul na svůj obor. Někdo pracoval na aplikaci do tabletu pro zobrazení dashboardu, jiný na přípravě real-time databáze ve Firestore a zbytek připravoval samotnou aplikaci na hodinky.
Tvořili jsme, vyvíjeli a snažili se debugovat každý za sebe. Samozřejmě byly chvíle, kdy někdo z týmu měl zrovna čas a začali jsme spolupracovat na aktuálních úkolech. Ty jsme si samozřejmě hned na začátku pomyslně rozdělili na nástěnce v Trellu a průběžně upravovali jejich priority. V rámci toho vývoje bylo uspokojující sledovat, jak postupně přibývají tasky ve sloupci done. Jak se ukázalo, naše spolupráce zafungovala :).
Nic dalšího se nestalo?
No dobře, prokoukl jsi to. Nechtěli jsme to uplně vytahovat, ale měli jsme na závěrečnou prezentaci připravné live demo (hodně odvážnej krok). Věřili jsme své aplikaci a tak jsme se pro tento krok rozhodli. Samozřejmě jsme si chtěli být jistí, že se nestane nic špatného, ladili jsme to a testovali předtím asi 100x a pokaždé to proběhlo v pořádku. Bez jakéhokoliv problému.
Došlo na samotné prezentování, všechno šlape, jak po drátkách, časově stíháme, všechno v naprostý pohodě. Došlo na live demo. Co myslíš, že se stalo? No spadlo to! Ukazovací efekt prostě funguje... (smích).
Čím to bylo? Právě tím, jak jsme to pořád ladili, aby vše fungovalo. Při buildu aplikace pak zůstala zacachovaná část s už opraveným bugem a ten se jak na potvoru při demu projevil. Naštěstí jsme to byli schopní zakecat a tak trošku obhájit. Celá situace vyvolala smích, takže to vlastně splnilo i jeden z účelů prezentace – pobavit publikum.
Je soutěž podobného typu o pevných znalostech nebo spíš o prozíravosti a odhodlání to dokončit?
Tyto soutěže jsou dost náročný, člověk totiž nedokáže vždy přesně ovlivnit, co se stane. Na čem se všichni shodneme je fakt, že znalosti jsou určitě potřeba (není čas se všechno učit za pochodu). Potom je k tomu rozhodně potřeba dost motivace. Chtít ten projekt dotáhnout do nějaké podoby, aby bylo možné jej odprezentovat. Jelikož dvacet čtyři hodin je opravdu krátká doba (ač se to nemusí zdát), kouzla se v rámci toho vyvinout nedají. Mnohdy tedy jde spíše o opravdu dobrý nápad a jakýsi “náčrt řešení”. Samozřejmě jsme rádi, že se nám podařilo projekt dotáhnout do takové podoby, jako jsme si rámcově nastavili a ještě nám zbyl nějaký čas na přípravu prezentace.
Udělali jste něco netradičního, čím jste se odlišili od ostatních a co vám mohlo pomoci zvítězit?
Myslíme si, že příprava té prezentace byla velmi důležitá. Jak jsme říkali, že nám zbyl nějaký čas, ono to bylo vlastně několik hodin. Tu prezentaci jsme totiž ladili docela dlouho a snažili se nad tím opravdu přemýšlet. Připravit si odpovědi na otázky od poroty, které by pravděpodobně mohly zaznít. Rozdělili jsme si role a několikrát jsme si celý náš výstup v týmu zkusili, včetně toho, jak si předávat slovo, aby to přirozený atd. To si myslíme, že nás mohlo od ostatních odlišit. Cílem vlastně nebylo udělat nejsložitější aplikaci nebo nástroj, ale úspěšně to prodat investorům.
Prozraďte nám nějaké perličky z “natáčení”.
(smích a zprvu žádný komentář)
Samozřejmě jsme se snažili po celou dobu udržet v dobré náladě a čas od času nějaké vtípky padaly. V rámci celé akce byla možnost si i zahrát akční hry na velké televizi atd. My jsme se opravdu snažili tomu dát všechno a s vývojem jsme nezaháleli.
Jak jsme zmiňovali tu nástěnku v Trellu, tak jsme si tam vytvořili večerní kartu s nákupem. Musím říct, že zajímavý byl kontrast mezi instrukcemi od jednotlivých lidí z týmu, aneb co si kdo přeje koupit. Jedna položka seznamu byla celkem detailní “Monster oranžovej nebo žlutej (hlavně BEZ cukru) a jestli nebude, tak neber nic” nebo “Coca Cola Zero (1l a více) podle toho, jak se ti s tím chce tahat (preferuji více)” a k tomu naopak dost nespecifikovaný požadavek “nějaký sladkosti”.
Jakou vnímáte největší zkušenost?
“Rozhodně vnímám jako velikou zkušenost možnost závěrečného prezentování před porotou. Naprogramování aplikací je jedna věc, ale odprezentovat vše, co jsme za 24 hodin vytvořili, ještě k tomu s úsměvem a aby to mělo hlavu a patu potom, co koukáte jen do kódu, je dost náročné." dodává Tomáš, s jehož výpovědí se jednohlasně shoduje celý tým.
“Za mě to bylo určitě vyzkoušení si vývoje pro hodinky (WearOS). Jak naznačil Tom, prezentace před investory (tzv. business pitch) byl dost inspirativní. Člověk se musí zamyslet nad tím, co je opravdu důležité, čím začít, na co dát důraz a co naopak v té prezentaci upozadit. Vlastně skvělá zkušenost byla vůbec naše účast! Zjistil jsem, jak takový hackaton probíhá a jaké to je na něm být, jelikož jsem předtím na žádném nikdy nebyl.” říká Filip
“Zase jsme si sáhli na dno svých sil! Ne, dělám si srandu, bylo to super. Jako zkušenost vnímám oprášení znalostí vývoje na WearOS, práci v časovém pressu, ale za to s fajn týmem. Kluci to sice nezmínili, ale samozřejmě nás potěšila i výhra a komunikace se sponzory soutěže.“ shrnuje svoji zkušenost Petr
"Jsme za soutěž moc rádi. Díky tomu jsme si mohli vyzkoušet nové technologie a jejich využití v praxi. Také jsme si zkusili práci v časovém pressu a měli možnost úzce spolupracovat v týmu." zakončuje výpověď a celý rozhovor Štěpán
Moc gratulujeme k celkovému vítězství!
Na jaké otázky se kluků ptali v České televizi se můžete podívat v archivu Studia 6, zároveň se o nich psalo na oficiálních stránkách i FB profilu ČVUT nebo na celostátním magazínu vysokých škol Universitas.
Přečtěte si další článek z kategorie rozhovory.