Walki robotów – projekt na Sumo Challenge 2017

Sumo Challenge to międzynarodowe zawody robotów. Maszyny zbudowane przez uczestników mierzą się ze sobą w kilkunastu konkurencjach. Organizatorami konkursu jest Studenckie Koło Naukowe Robotyki SkaNeR Politechniki Łódzkiej.

W zeszłym roku miałem okazję do dostarczenia aplikacji internetowej na potrzeby tych zawodów właśnie. Narzędzie miało za zadanie przechowywanie informacji o wynikach walk poszczególnych robotów w różnych kategoriach, i wyświetlanie tych informacji uczestnikom.

Na tegoroczną edycję również przygotowuję aplikację, która ma spełnić dokładnie to samo zadanie. Pomyślałem oczywiście o dorzuceniu kilku funkcjonalności, żeby nauczyć się czegoś nowego. Ale właśnie w tym momencie pojawił się problem.

Grzechy przeszłości

Rok jak się okazało to bardzo długi czas dla młodego programisty. Poprzednia wersja aplikacji, jaką stworzyłem działała, ale nie nadaję się do rozwijania. Patrząc na ten sam kod z perspektywy czasu, zastanawiam się co autor miał na myśli mimo że autorem jestem ja sam.

Dlatego też zdecydowałem, że nie ma sensu odkopywać starego kodu i męczyć się z nim. Całą aplikację piszę od podstaw. Tym razem stosując założenia, które pozwolą mi w przyszłości zrozumieć swój własny kod.

Nowe założenia

Chyba najbardziej przekonującym dla mnie założeniem jest to, że jeśli piszę jakiś kod to nie mogę się go wstydzić publicznie pokazać. Nie jest to może najwyższy wyznacznik jakości oprogramowania, ale dla mnie na ten moment wystarczający.

Z każdym kolejnym projektem staram się uczyć nowych rzeczy i do listy znanych narzędzi dokładać kolejne. Myślę, że przez realizację projektów na własne potrzeby i na zlecenia innych osób, nauczyłem się więcej niż z książek i kursów on-line.

Nie chcę negować w tym miejscu tych form uczenia się, ponieważ sam z nich korzystałem i dają efekty. Zaznaczam tylko, że rozwijając jakiś projekt napotyka się na błędy, które trzeba rozwiązać.

Gdybym wiedział o tym odpowiednio wcześniej myślę, że zainwestowałbym więcej czasu w programowanie niż w słuchanie o programowaniu.

Szybki prototyp

Na szczęście w technologii w której najczęściej pracuje – Ruby On Rails – prototypownie aplikacji jest bardzo szybkie i efektywne. Czasem mam wrażenie, że jest to największa jej zaleta. Tak jak bez dwóch zdań przegrywa wydajnościowo z innymi technologiami, tak pod kątem mnogości narzędzi do szybkiego generowania funkcjonalności jest dla mnie liderem.

Implementacja systemu rejestracji, logowania i przechowywania informacji o użytkownikach to tylko kwestia napisania kilku linii. To samo dotyczy się podpinania frame-worków front end-owych. Generowanie podstawowych CRUD-ów wraz z widokami to kwestia uruchomienia jednego polecenia w konsoli.

Przy okazji tego projektu znalazłem również gem umożliwiający generowanie zagnieżdżonych zasobów.

Czy to w ogóle programowanie?

Dla mnie pod koniec dnia liczy się efekt. Moim zdaniem także nie ma sensu wynajdywać koła po raz drugi. Oczywiście korzystanie z tego typu ułatwień wydaje się sporym uproszczeniem, ale czy nie właśnie po to te narzędzia powstały?

Dzięki tym wszystkim udogodnieniom udało mi się oddać pierwszą wersję demonstracyjną projektu, która posiada wszystkie funkcjonalności poprzedniej wersji po 14 godzinach pracy.

Ciąg dalszy nastąpi…

Nie mam jeszcze na tyle doświadczenia, żeby w pojedynkę zrobić aplikację, która będzie w 100% odporna na wszelkiego rodzaju ataki. Nie chcę też tym samym narażać całego wydarzenia na jakieś nieprzyjemności.

W następnym wpisie IT co nieco na temat planowania aplikacji. I dlaczego godzina więcej planowania może zaoszczędzić kilka dni pracy.

Zapraszam do komentowania i udostępniania 😉

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *