Własny projekt jako sposób nauki


Może to nie jest najszczęśliwsze, że wniosek tego wpisu jest w samym tytule, wpis ten jednak stanowi stęp do kilku innych tematów związanych z projektowaniem aplikacji, czy prowadzeniem projektu w ogóle. Przede wszystkim zobaczysz na moim przykładzie, jak notowanie czasu przychodzenia kanapek do biura przerodziło się w małą aplikację z aspiracjami.

Praktyka czyni mistrza

Programowanie jest niewątpliwie nauką praktyczną. Można pochłonąć mnóstwo książek na temat języków programowania, algorytmiki, narzędzi, ale czy bez przećwiczenia tej teorii w praktyce pozostanie nam cokolwiek w głowie? Spróbuj przeczytać od deski do deski (pomijając zadania), chociażby Symfonię C++ Jurka Grębosza. Książka ta, pomimo że jest napisana bardzo przyjaznym językiem, nie pomoże Ci napisać jakiegokolwiek programu, jeśli nie przećwiczysz w praktyce przedstawionych tam zagadnień. I to ze zrozumieniem. Dlatego też nowsze podręczniki posiadają zestaw zadań do samodzielnego wykonania, tak, aby przyswoić sobie właśnie poznany materiał.

Znakomitym rozszerzeniem typowych zadań z książki jest utworzenie własnego projektu. Wiem jednak, o co zapytasz: „a skąd wziąć pomysł na projekt?”, „Nie mam pojęcia co zrobić.”. Sam miałem takie rozterki, ale okazuje się, że wystarczy chwilę pomyśleć, rozejrzeć się po pokoju, drodze do szkoły/uczelni/pracy, czasami jest nawet tak, że pomysł na aplikację sam wejdzie do głowy. Dzisiaj zobrazuję to na podstawie projekciku, który utworzyłem przez… problemy z kanapkami w firmie.

Geneza projektu

Będąc na wakacyjnym stażu rok temu wpadłem na pomysł, żeby notować w arkuszu kalkulacyjnym informacje o godzinach przyjścia poszczególnych firm sprzedających kanapki o poranku. W pewnym momencie „kanapki” zaczęły przychodzić o bardzo różnych porach, co nieraz powodowało zakłopotanie wśród pracowników i pytania na firmowym czasie w stylu „Czy był już X? O której przyjdzie dzisiaj X?”. Zbieranie tych danych, jak się potem okazało, po pierwsze, zniwelowało liczbę pytań o „kanapki”, a po drugie, firmy dowiedziawszy się, że ktoś kontroluje, kiedy przychodzą, zaczęły bardziej dbać o punktualność i regularność wizyt w naszym przedsiębiorstwie. Widocznie punktualność przełożyła się na konkretne zyski :-).

Powracając w tym roku na staż, podczas uzupełniania arkusza z godzinami doszedłem do wniosku, że to nadaje się na fajną aplikację. Pomysły lubią szybko ulatywać, więc czym prędzej zanotowałem sobie pomysł. Już po pracy w ciągu dosłownie kilku godzin powstał szkielet nowej aplikacji.

Tak aktualnie prezentuje się najważniejsza funkcjonalność Sandwich Mastah.

Założenia aplikacji są proste: zbierać, analizować i wyświetlać. Jak to jednak bywa, nawet proste koncepcje wymagają pewnego nakładu pracy, a przede wszystkim ustalenia konkretnych wymagań oraz nadanie im odpowiednich priorytetów. Zazwyczaj w miejscu worka z pomysłami jest klient lub menedżer projektu. W przypadku własnej aplikacji pewne wymagania nakłada się samemu, ale nieocenionym źródłem są użytkownicy aplikacji. Jak się okazuje, nie gryzą, a nawet są dość pozytywnie nastawieni na nowe pomysły.

Zebranie wymagań

Od czego więc zacząć? Od kartki papieru lub jakiejś formy komputerowego notatnika (ja używam OneNote’a). Na pierwszy ogień warto po prostu rzucać pomysłami. Nie zastanawiaj się teraz, czy dana rzecz ma sens, ile czasu zajmie lub jak trudna w implementacji się okaże. Po prostu chodzi o wypełnienie banku pomysłów. Na poważną analizę i klasyfikację zadań, czas przyjdzie później. Ja dla przykładu zapisałem sobie takie oto punkty:

Zbierać, kiedy przychodzi kanapka

Wyświetlać jakieś statystyki (średnia, min, max, mediana, rozkład)

Wykresy z czasami przyjścia, porównania, odchylenia od zakładanego czasu
Kafelki z rzeczywistymi i prognozowanymi czasami przyjścia firmy kanapkowej

Pisać raporty dla danego tygodnia, upiększone jakimiś kafelkami, wykresami, tabelami

Nie wygląda to na zbyt wiele, ale każdy punkt można, a nawet trzeba, rozwinąć w dość pokaźną listę zadań. Należy przy tym pamiętać, że jeśli coś wydaje się nam bardzo skomplikowane, to należy pomyśleć, z jakich mniejszych zadań dany problem się składa. Nasz mózg po prostu lepiej reaguje na małe proste zadania: szybciej osiągamy mały sukces, uruchamia się ośrodek nagrody, przez co ogólnie czujemy się lepiej.

Warto więc zastanowić się, w jaki sposób sobie to wszystko zorganizować. Ja postanowiłem trzymać moje zadania do zaimplementowania w świetnym narzędziu do budowania tablic Kanbanowych, mianowicie Trello. Dzięki niemu doskonale widzę, nad czym aktualnie pracuję (a przy kilku projektach równocześnie, jest to dosyć ważne), co zaklasyfikowałem do zrobienia, a co znajduje się w tzw. backlogu, który w moim przypadku stanowi swoisty worek pomysłów do przeanalizowania i ewentualnego wdrożenia w przyszłości. Poniżej zamieszczam zrzut ekranu z mojej tablicy, abyś wiedział, jak to mniej więcej wygląda.

Tablica w Trello projektu Sandwich Mastah
Stan tablicy projektu, podczas pisania tej części wpisu.

Jak możesz zauważyć, wszystkie zadania/pomysły znajdują się tutaj w poszczególnych kartach. Na pierwszy rzut oka, może się wydawać, iż są to po prostu kafelki z krótkim tekstem, względnie zdjęciem. Magia i cała moc Trello ujawnia się w momencie kliknięcia na dany kafelek. Można wtedy podejrzeć dokładnie opis zadania, sporządzić listę kroków do wykonania, a nawet (korzystając z wtyczki) podpiąć wszystko pod odpowiednią gałąź w systemie kontroli wersji. Funkcjonalności jest, rzecz jasna, zdecydowanie więcej, ale na początek tyle wystarczy. Reszty uczymy się, gdy potrzebujemy.

Widok szczegółów karty zadania w programie Trello
Przykładowe szczegóły zadania w Trello

Drugim filarem jest system publiczny issues na BitBucket’cie. Dla niewtajemniczonych – BitBucket to serwis hostujący repozytoria Git, podobnie jak GitHub, ale pozwala za darmo posiadać prywatne repozytoria. Kontynuując, ten system służyć ma w zamierzeniu do bezpośredniego kontaktu z użytkownikami systemu. Tutaj każdy może zgłosić własną propozycję, czy znaleziony błąd. W takim przypadku przenoszę zadanie do Trello i zajmuję się nimi, gdy przyjdzie na nie czas. Powód wykorzystania dwóch aplikacji jest prosty – wygoda. Zarówno dla mnie, jak i użytkowników. Dla mnie, ponieważ Trello wymaga nieco wprawy, a i z zasady moja tablica jest zaprojektowana do użytku wewnętrznego – wrzucam tam research, jakieś linki, itp. A dla użytkownika Issuesy są prostsze, bo klika po prostu New i gotowe.

Słowem podsumowania

Początkowo miałem w tym wpisie opisać więcej technikaliów tworzonego projektu (m.in. wybór technologii, czy kontrola wersji), ale wpis ten miałby już zbyt szeroką liczbę zagadnień, jak na jeden raz. Mimo to, mam świadomość, że tematy dzisiaj opisane przedstawiłem w sposób dość ogólny, ale jest to przyczynek do tego, aby powrócić do nich dokładniej w przyszłości.

Na koniec zostawiam pole do popisu Wam. Jakie projekty Wy realizujecie? Jak na nie wpadliście? Czy i jeśli tak, to jak zarządzacie listą rzeczy do zrobienia? Sekcja komentarzy jest do Waszej dyspozycji.


Kategoria: Sandwich Mastah


Napisz odpowiedź lub dodaj komentarz


Twój adres e-mail nie będzie opublikowany. Pola oznaczone gwiazdką * są wymagane

Możesz używać tych znaczników HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>