W Grudniu 2022 prowadziłem w newsletterze (i promowałem na Insta) wyzwanie #kotlinDevChallenge – codzienne zagadki programistyczne z Kotlina.
W tym wpisie opiszę półautomatyczne zarządzanie zadaniami z wyzwania.
Wyzwanie
Zapis do wyzwania
Pierwsza wersja strony składała się wyłącznie z formularza zapisu na Tally.
Cała konfiguracja jest widoczna w tym repozytorium 🙂
szkolakotlina-www
Szkola-Kotlina • Updated Dec 4, 2022
Do Github Pages można podpiąć własną domenę, także bez problemu wszystko poszło.
Zbierałem tutaj kilka informacji:
- imię / ksywa
- Jak określisz swój poziom w programowaniu? 0-10
- Czy masz już doświadczenie z Kotlinem? 0-10
- checkbox “Raz na jakiś czas wyślę Ci ofertę na produkty edukacyjne – jeśli jesteś z tym OK, kliknij poniższy checkbox:”
Szybkie info dla listy mailingowej (którą budowałem z myślą o sprzedaży kursu unit testów), story na Instagramie, wpis na OhMyDev i wrzucenie linku do wszystkich filmików na YT.
W przeciągu 1-2 dni zapisały się 42 osoby. Not bad, not terrible.
Wszystkie zapisy od razu eksportowały się do Airtable:
Flow zadania
Pierwsze zadanie poszło mailem. Link prowadzi do strony na Notion, gdzie jest kolejny formularz w Tally do wpisania odpowiedzi oraz Kotlin Playground – coś jak jsFiddle.
Pierwsze zadanie było rozgrzewkowe – na zaznajomienie się z platformą.
(jakby ta strona nie była już publiczna z jakiegoś powodu, to wrzucam również screenshota)
Zadanie polega na uzupełnieniu / zmodyfikowaniu kodziku z tego snippetu. Prosto z platformy można ten kodzik odpalić.
W kodziku zaszyte też są “unit testy”:
Jak się okazało, kilka osób rozwinęło sobie szczegóły i podejrzało kod który należy wrzucić do formularza :)
Nic złego się nie stało – “nie oszukujesz mnie, a siebie”, pomyślałem. Niemniej przy kolejnych zadaniach pięcioznakowy kod był dodatkowo ukryty w base64.
Dane z rozwiązaniami lecą integracją Tally prosto do Airtable.
Dodatkowo proszę w tym formularzu uczestników o określenie “jak trudne było to zadanie”
Tylko jeden uczestnik nie ogarnął, że w formularzu podajemy pięcioznakowy kod z outputu Kotlin Playground, a nie kod w Kotlinie. Co ciekawe znam tę osobę – jest świetnym programistą.
Na kolejne zadania przyjąłem punktacje:
- 1 pkt za rozwiązane zadanie
- 2 pkt za zadanie rozwiązane tego samego dnia
- 3 pkt za zadanie rozwiązane w przeciągu godziny (do 11:00)
Max za jedno zadanie można dostać 3 punkty. Pierwszych dwóch albo trzech zadań nie punktowałem w ten sposób, żeby na spokojnie uczestnicy mogli się przyzwyczaić do platformy.
tl;dr:
- wyzwanie dostajesz na maila
- wybierasz ABCD / uzupełniasz kod programu
- wrzucasz odpowiednie rzeczy do formularza w Tally
Jakie typy zadań były w #kotlinDevChallenge?
- zadania “uzupełnij kod”
- zadania jedno i wielokrotnego wyboru ABCD
- zadania opisowe, otwarte (czym jest “Nothing” w Kotlinie)
Miałem zamiar, ale ostatecznie nie zdążyłem przed urlopem przygotować następujących automatyzacji:
- naliczanie punktów automatem
- leaderboard na żywo
A gdzie rozwiązania?
Rozwiązanie “z dnia poprzedniego” było umieszczone na dole nowego zadania, dodatkowo część z rozwiązań pokazałem na Instagramie:
Oraz na YT:
Kilka myśli na koniec
Na początku zapisały się 42 osoby.
Do pierwszych zadań podeszło odpowiednio 15 i 16, a do kolejnych już mniej:
Co ulepszyć? Co poprawić?
Na pewno chciałbym zautomatyzować więcej rzeczy – leaderboard i sprawdzanie zadań.
Prowadzenie wyzwania wymagało ode mnie troszkę codziennej pracy, jednak to było kilka-kilkanaście minut.
Przy kolejnym tego typu wyzwaniu będę bardziej aktywny w social media – codzienne story na Instagramie robią robotę (ktoś zobaczy story i przypomina sobie, że ma zadanie na mailu)
Dodatkowo nie jestem w pełni przekonany co do punktacji (2pkt za rozwiązanie tego samego dnia, 3 pkt za rozwiązanie w przeciągu godziny).
Na kolejne tego typu wyzwanie zrezygnuję z opcji “max pkt za rozwiązanie w godzinę”.
Jeśli chcesz sprawdzić wszystkie zadania jakie były w #kotlinDevChallenge, to są one zarchiwizowane na stronie Szkoły Kotlina: