Co daje 30 minut z kodem dziennie, czyli podsumowanie wyzwania

30 minut z kodem dziennie

Co dało mi 30 minut z kodem dziennie przez trzy tygodnie? I na jakim etapie jest moja aplikacja? O tym w dzisiejszym wpisie!

W ubiegłą niedzielę zakończyło się wyzwanie 30 minut z kodem, które rozpoczęłam 7 stycznia. Zgodnie z założeniami, kodowałam codziennie przez trzy tygodnie, minumum 30 minut dziennie. Jak macie ochotę poczytać o genezie pomysłu – zapraszam tutaj. Z kolei pierwszymi wrażeniami dzieliłam się w tym wpisie.

Artykuł jest jednocześnie częścią serii Własna aplikacja krok po kroku, gdzie pokazuję etapy powstawania mojej aplikacji, czyli Habit Trackera. Więcej wpisów z tej serii znajdziecie tutaj. A teraz czas na moje wrażenia po trzech tygodniach codziennego programowania!

Pierwsza rzecz – wcale nie jest tak trudno zebrać się na te 30 minut! W perspektywie dnia faktycznie to nie jest wiele i właściwie miałam tylko dwa dni, gdy nie kodowałam. Nie uznaję ich jednak za stracone, bo te 30 minut poświęciłam na czytanie książki o ES6, a potem sprawdzenie w praktyce zagadnień, o których czytałam. Mam zamiar kontynuować formę pracy w ten sposób. Tzn. siadać do kodu nawet na chwilę, ale codziennie.

Spostrzeżenie numer dwa – naprawdę wiele można zrobić! Moja aplikacja znacznie posunęła się do przodu, od razu widać efekty pracy. Co więcej, dzięki temu, że siadałam do kodu codziennie, cały czas byłam „w temacie”. Nie musiałam przypominać sobie, na czym ostatnio skończyłam, czym się zajmowałam. Fajnie sprawdziło się też u mnie oglądanie tutoriali wieczorem, a potem od rana mogłam wykorzystać zdobytą wiedzę w praktyce. Było w czasie tych trzech tygodni kilka zagadnień, o których wcześniej miałam bardzo mgliste pojęcie i musiałam wiedzę zdobyć. Gdybym nie siadała do aplikacji codziennie, pewnie skończyłoby się na obejrzeniu tutorialu i powrocie do tematu za tydzień lub dwa. A wtedy musiałabym oglądać tutorial raz jeszcze.

Codzienna praca dała mi też sporo, jeśli chodzi o rozwiązywanie problemów. Dzięki temu, że faktycznie dzień w dzień spotykałam się z jakimś nowym wyzwaniem, cały czas gdzieś w głowie miałam temat aplikacji. Wiele razy rozwiązanie wpadło mi do głowy w ciągu dnia czy wieczorem, czyli w momentach, gdy zupełnie nie skupiałam się na myśleniu o aplikacji. Ten mechanizm super opisany jest w książce „Głowa do liczb”, którą właśnie czytam i planuję najważniejsze lekcje umieścić na blogu w formie wpisu, więc więcej nie będę się rozwodzić. Ale raz jeszcze książkę polecam!

Jestem teraz w dość specyficznej sytuacji, bo nie pracuję, więc to wyzwanie było dla mnie formą zasymulowania trochę pracy. Brakuje mi takiej codziennej rutyny, która buduje ramy dnia. Pewnie Was to nie zaskoczy, ale paradoksalnie, o wiele trudniej jest zmusić się do pracy nad własną aplikacją, gdy ma się dużo czasu, niż gdy ma się wolną np. tylko godzinę. Przynajmniej mnie jest o wiele trudniej.

A czy zauważyłam jakieś minusy? Zastanawiałam się nad tym dość długo i wydaje mi się, ze minusy są związane bardziej z pracą w pojedynkę niż z samym wyzwaniem. Czasami mocno musiałam opierać się pokusie porzucenia problemu i zajęcia się czymś łatwiejszym, bo przecież nikt nie sprawdza tego, co robie, nikt tego nie zweryfikuje. Przyznam, że przez to trochę leżą w aplikacji testy jednostkowe, bo naprawdę nie miałam serca, żeby się na nich skupić. Ale są na mojej liście zadań na najbliższą przyszłość.

Za minus mogę chyba uznać frustrację. Gdy nie siadałam do kodu codziennie, zazwyczaj wybierałam takie chwile, gdy miałam ochotę i energię, by programować. Praca każdego dnia sprawia, że nie mogłam czekać na wenę. Momentami było więc ciężko, bo nie mogłam się skupić. Coś, co miało zająć mało czasu, zajmowało dużo, bo nie mogłam znaleźć rozwiązania. Jednak jest to normalna kolej rzeczy w programowaniu i trzeba być na tę frustrację niestety gotowym. Choć nie jest to miłe uczucie, trzeba się z nim pogodzić. Kilkukrotnie zdarzyło mi się posiedzieć nad kodem za długo. Tzn. tak bardzo chciałam rozwiązać problem, że siedziałam np. 2 czy 3 godziny pod rząd, przez co byłam jeszcze bardziej zmęczona i sfrustrowana. Z czasem nauczyłam się bardziej kontrolować czas i robiłam sobie przerwy, choćby krótkie albo przeskakiwałam na chwilę do innego zagadnienia. I faktycznie fajnie to zaczęło działać.

A co działo się konkretnie z Habit Trackerem przez te tygodnie? Jak już pisałam w pierwszym raporcie podczas wyzwania, zmodyfikowałam style aplikacji i teraz są one zbudowane na css-modules. Dodałam podstawowe testy jednostkowe, dopracowałam routing. Najważniejszą zmianą jest powstanie dashboardu z nawykami, czyli kluczowej funkcjonalości aplikacji! Ogromnie się cieszę, że to zrobiłam, choć przyznam, że trochę zachodu z tym było. Dashboard nie wygląda jeszcze reprezentacyjnie, bo nadal czekam na ostateczną wersję layoutu, także zaprezentować za bardzo go nie mogę. Ale warstwa logiczna jest gotowa i działa.

Dodałam również logowanie użytkownika przez Facebooka i GitHuba. Dzięki temu będzie można korzystać z aplikacji bez konieczności zakładania nowego konta. Dla mnie jest to wygodne, bo nie muszę zajmować się przechowywaniem danych użytkowników (takich jak nazwy użytkowników czy ich hasła). Jako backend wykorzystuję w aplikacji Firebase, mam tam bazę danych, która zbiera wszystkie dashboardy i przypisuje do nich odpowiedniego użytkownika na podstawie jego ID. Pierwszy raz miałam okazję korzystać z Firebase i naprawdę jestem zaskoczona, jak bardzo jest to intuicyjne. Posługując się kursem Wesa Bosa i dokumentacją bez większych problemów zbudowałam połączenie z bazą danych, synchronizację z aplikacją i logowanie.

Na dopracowanie na pewno czeka jeszcze przechowywanie aktywnej sesji użytkownika. Pewnie wykorzystam do tego local storage albo cookies, ponieważ teraz użytkownik jest wylogowywany przy odświeżeniu aplikacji, a nie chciałabym, żeby tak było. W najbliższym czasie skupię się też na zakodowaniu ostatecznego layotu dashboardu. Muszę w tym celu poszukać jakiejś biblioteki oferującej modale, żeby formularze dodawania nawyków czy informacje o sukcesie/błędach pojawiały się w formie kolejnej warstwy wizualnej.

Czekają mnie też modyfikacje w sposobie wyświetlania listy nawyków, bo dostałam już od Zuzi (pracującej nad UXem) wstępny projekt i zakłada on pokazanie kilku informacji, których ja w moich wstępnych założeniach nie zawarłam. Muszę też dodać opcję usuwania nawyków oraz zaimplementować formularz edycji nawyku. I oczywiście na swoją kolej czekają testy jednostkowe, bo trochę zostały w tyle. Jak chcecie zapoznać się z kodem, zapraszam na stronę aplikacji na Githubie. Ostatnie zmiany są już włączone do głównej gałęzi, zachęcam do przeglądania i komentowania (pod tym wpisem w formie komentarzy albo mailem do mnie na joanna@wakeupandcode.pl).

Równolegle Zuzia pracuje nad przebiegiem procesu dodawania nawyku i tym, jak nawyki mają wyglądać, w jaki sposób mają być odhaczane i jak mają zachowywać się, gdy użytkownik dany nawyk już zakończy (tzn. wypełni wszystkie pola). Podczas kodowania wyszło też parę nowych spraw, np. sposób, w jaki chcemy pokazać, że użytkownik jest zalogowany. Musimy też zdecydować, co ma się dziać, gdy użytkownik się wylogowuje albo jakie komunikaty błędu mają pojawiać się, gdy ktoś będzie chciał wejść nie na swój dashboard (np. wpisując jego adres bezpośrednio do przeglądarki). Przypominam jednocześnie, że jak macie ochotę poczytać o tym, jak Zuzia pracowała nad pierwszą koncepcją warstwy graficznej i UXowej Habit Trackera, możecie wskoczyć do tego wpisu.

Liczę na to, że w lutym znajdę wystarczającą ilość czasu, by powyższe sprawy załatwić i w końcu pokazać Wam pierwszą, działają wersję aplikacji. Zakładam, że będzie to wersja super-alfa i pewnie będzie miała jeszcze sporo do zrobienia albo poprawienia. Jednak w końcu będzie czymś namacalnym 🙂 I nie mogę doczekać się Waszego feedbacku! W końcu w aplikacji najważniejsi są użytkownicy i ogromnie mnie ciekawi, jak odbierzecie Habit Trackera. Jak widać, to były bardzo owocne trzy tygodnie i cieszy mnie, że zdecydowałam się zrobić to wyzwanie (i w nim wytrwać!).

4 Replies to “Co daje 30 minut z kodem dziennie, czyli podsumowanie wyzwania”

  1. Czy Firebase pełni również funkcję hostingu dla Twojej aplikacji?

    1. Nie, na razie korzystam z niego tylko do bazy danych i logowania. Nie sprawdzałam hostingu, nie wiem nawet, czy Firebase ma taką opcję, także muszą zbadać temat 🙂

  2. To może teraz 30 dni z programowaniem blockchain? Przydałby się znajomy programista z takimi umiejętnościami 🙂

    1. Na razie nie planuję 😉 Ale zachęcam mocno do realizowania swoich wyzwań! 🙂

Dodaj komentarz