Pełny przegląd: nie mamy na to czasu
W projekcie Revisionist chcę umożliwić przegląd zadań na liście zadań Todoist w sposób, który pozwoli nam zaoszczędzić czas.
Żeby móc mówić o oszczędności czasu, wyjdźmy od punktu startowego, którym jest wykonanie pełnego przeglądu zadań.
Przez pełny przegląd zadań rozumiem przejście przez wszystkie elementy na liście todo oraz wykonanie dla każdego z nich analizy. W zależności od tego jakie konwencje przyjęliśmy w naszym osobistym systemie zarządzania zadaniami, analiza może mieć inny przebieg u innych osób. Przykładowe kroki to:
- ocena czy pozycja na liście jeszcze nas interesuje,
- ocena czy pozycja jest zadaniem czy projektem składającym się z wielu zadań,
- określenie metadanych takich jak deadline, konteksty gdzie można wykonać zadanie (pomagające nam później w filtrowaniu zadań), czas wykonania (jeśli dla zadania lepiej jest z wyprzedzeniem ustalić czas), długość trwania (pomaga wyświetlić zadania w kalendarzu),
- określenie jakie przypomnienia o zadaniach chcemy dostać (np. powiadomienie w określonym czasie przed deadlinem, lub gdy znajdziemy się w określonej geolokalizacji).
Wymienione kwestie to przykłady tego, co możemy chcieć doprecyzować w tematach które już zapisaliśmy na liście todo. Nie rozpatruję na razie tematu dodawania do listy nowych zadań ("zrzucania" chodzących nam po głowie pomysłów na listę), ani planowania nowych celów. Jedynie utrzymanie porządku na liście.
Jak kiedyś przytaczałem we wpisie Lista zadań: narzędzie do wyrzucenia, czy usprawnienia?, typowo na naszych listach znajduje się 150-200 pozycji.
Przejrzenie wszystkich tych zadań na liście i wykonanie wyżej wymienionych akcji niewątpliwie zagwarantują nam solidny przegląd wszystkiego co mamy w kolejce. Pytanie tylko, ile czasu nam to zajmie? Godzinę, dwie? A jeśli tak to jak często usiądziemy do tego zadania?
GTD daje odpowiedź: róbmy przegląd co 1 tydzień. To nieźle dobrany interwał, ale wciąż okazuje się, że bardzo dużo osób taki przegląd zadań pomija, albo przekładając go w czasie, albo całkowicie zaniedbując. Jestem niestety jedną z takich osób, którym ciężko jest usiąść o zaplanowanej godzinie do czegoś co nie jest dramatycznie pilne albo ekscytujące. Wrzucenie przeglądu do kalendarza nie wystarcza.
Alternatywna: częściowy przegląd
Patrząc na pojedyncze wykonanie pełnego przeglądu zadań, z algorytmicznego punktu widzenia nie mamy za dużego pola do optymalizacji i skrócenia jego czasu. Wszystkie elementy na liście przeglądamy dokładnie raz. Jeśli chcielibyśmy przyspieszyć przegląd, trzeba byłoby niektóre z nich pominąć.
Jednak w rzeczywistości przeglądu nie chcemy robić jednorazowo, a cyklicznie. Niektórzy być może co tydzień, ja chciałbym codziennie, a może nawet co kilka godzin, wplatając krótsze przeglądy w rytm codziennego dnia. Przy takich wymaganiach nie możemy sobie pozwolić na przegląd wszystkich zadań za każdym razem. Ale też nie musimy! W końcu większość listy została już w przeszłości przejrzana, uporządkowana i z wysokim prawdopodobieństwem informacje o niej są aktualne.
Podjąłem kiedyś próby realizacji takiego częściowego przeglądu. Do zarządzania zadaniami korzystam z aplikacji Todoist. W poście Wspomaganie przeglądu zadań: co chowam w szufladzie? opisuję aplikacje, które napisałem kiedyś, żeby rozwiązać u siebie problem szybszego nadawania kontekstu zadaniom. W kolejnym z artykułów, Koncepcja projektu wspomagającego przegląd zadań, opisuję ogólną wizję aplikacji webowej Revisionist, który uogólnia to rozwiązanie.
Dziś, jako istotny krok w kierunku realizacji projektu Revisionist, opiszę szczegółowo jakie rozwiązanie chcę w nadchodzących tygodniach stworzyć.
Revisionist: projekt rozwiązania
Założenia funkcjonalne
Aplikacja jest rozszerzeniem dla systemu zarządzania zadaniami Todoist. Umożliwia uporządkowanie listy zadań bez konieczności wykonywania pełnego przeglądu listy zadań przez użytkownika. Celem jest rozwiązanie typowych problemów, na które napotykają osoby zarządzające dużymi lub dynamicznie zmieniającymi się listami zadań.
Aplikacja sprowadza przegląd zadań na liście todo do serii prostych pytań decyzyjnych na ich temat. Pozwala to opisać zadania przy pomocy metadanych o ściśle określonym znaczeniu. Dzięki temu system będzie w stanie przypomnieć użytkownikowi o najważniejszych zadaniach jakie może wykonać w danym kontekście i lepiej podpowiadać najważniejsze zadania prowadzące go do jego celów.
Technologie
Projekt Revisionist będzie aplikacją webową. Umożliwi to dostęp z wielu platform, w szczególności smartfonów, które w założeniu są głównym kanałem dostępu do aplikacji. Aplikacja będzie zoptymalizowana do wyświetlania na małych ekranach. Połączenie z Internetem będzie wymagane, ale komunikacja z back-endem będzie możliwie rzadka. Dane, na które zapotrzebowanie można przewidzieć, będą pobierane na starcie aplikacji, aby minimalizować opóźnienia w trakcie samego przeglądu zadań.
Aplikacja będzie bazować na frameworku Angular (obecnie w wersji 4), aby umożliwić implementację przeglądu w postaci single page app, z minimalnymi opóźnieniami podczas przechodzenia między ekranami.
Po stronie back-endu zostanie użyte ASP .NET Web API.
Aplikacja będzie hostowana jako Azure App Service. Podczas prac, na wczesnym etapie zostanie skonfigurowany Continuous Deployment, aby bieżąca wersja kodu znajdującego się na GitHub była łatwo dostępna w formie działającej aplikacji po kliknięciu w link.
Dane konfiguracyjne będą przechowywane z użyciem usługi Magazyn tabel (Table Storage) w Azure. Pozwoli to uniknąć kosztów utrzymywania pełnej relacyjnej bazy danych takiej jak Microsoft SQL Server, a jednocześnie dostarczy API, które jest wygodne, dobrze udokumentowane i łatwe w użyciu z poziomu aplikacji ASP.NET.
Architektura
Aplikacja będzie w miarę możliwości trzymać się konwencji przyjętych we frameworkach Angular oraz ASP .NET Web API.
W ramach aplikacji funkcjonować będą plug-iny realizujące elementarne funkcjonalności przeglądu. Przykładem plug-ina może być Nadanie zadaniu kontekstu wykonania, albo Określenie szacowanego czasu wykonania dla zadania. Plug-iny na wejściu otrzymają listę zadań, na wyjściu zwrócą przetworzoną listę zadań.
Użytkownik w ramach konfiguracji będzie mógł wybrać zestaw plug-inów używanych w swoim przeglądzie. Każdy plug-in będzie konfigurowalny. Przykładowo, dla plug-inu Nadanie zadaniu kontekstu wykonania można będzie skonfigurować opcje takie jak "maksymalna ilość zadań na wejściu", lub "przejrzyj tylko zadania bez kontekstu".
Sposób użycia aplikacji
Rejestracja i konfiguracja (preferowane urządzenie z dużym ekranem): użytkownik loguje się na stronę poprzez konto Todoist, używając mechamizmu OAuth. Na starcie jego konfiguracja jest pusta. Konfigurację może rozpocząć od skomponowania swojego przeglądu poprzez wybranie bloczków odpowiadających plug-inom i ułożenie ich w odpowiadającej mu kolejności metodą drag&drop.
Przegląd zadań (np. smartfon): użytkownik wchodzi na stronę aplikacji. Loguje się, lub korzysta z faktu że zalogował się w przeszłości. Podczas pierwszego użycia jest zachęcany, aby dodać ikonę do aplikacji do głównego ekranu smartfonu, dla szybkiego dostępu. Nie licząc tego przypadku, aplikacja przechodzi bezpośrednio do przeglądu zadań który skonfigurował.
Aplikacja zadaje pytania wyświetlane na kolejnych ekranach, dając kilka możliwości wyboru odpowiedzi na każde z nich. Po wybraniu odpowiedzi aplikacja automatycznie przechodzi do następnego ekranu (z następnym pytaniem). Użytkownik ma możliwość powrotu do poprzedniego ekranu (np. w razie pomyłki).
Użytkownik może kontynuować przegląd tak długo, jak długo ma ochotę lub czas i w dowolnej chwili zakończyć przegląd.
Pytania, realizowane przez plug-iny (patrz: architektura) mają na celu:
- Spisanie problemów i zadań których nie mamy na liście, a o których myślimy
- Wyrzucenie nieaktualnych zadań
- Wyrzucenie nieaktualnych projektów
- Przeniesienie wstrzymanych projektów do listy Someday/maybe lub ich przywrócenie
- Odhaczenie wykonanych zadań
- Rozbicie projektów (czegoś co wymaga wielu kroków wykonania) na zadania
- Określenie dla zadań kontekstu w którym chcemy dostać o nich przypomnienie
- Określenie dla zadań szacowanego czasu wykonania
- Weryfikacja, czy częstotliwość dla zadań cyklicznych jest prawidłowa
Wybór wtyczek do zaimplementowania w pierwszej kolejności będzie arbitralny i dopasowany do moich potrzeb. Być może będę jedynym użytkownikiem aplikacji, więc dobrze żeby choć mi służyła ;)
Podsumowanie
W artykule przedstawiłem projekt realizowanej przeze mnie aplikacji Revisionist. "Pamiętaj abyś zawsze wiedział jasno czego pragniesz", pisał Paulo Coelho. Ten post służy mi właśnie po to, aby określić co dokładnie jest do wykonania i jak się do tego zabrać. Być może także dla przypomnienia sobie motywacji stojących za decyzjami w przyszłości, lub jako materiał wprowadzający w projekt inną osobę.
Jeśli mimo to udało Ci się przebrnąć przez tekst, lub chociaż przeskanować go na szybko wzrokiem, to dzięki za odwiedziny i zainteresowanie :) Jak zwykle, wszelkie przemyślenia i uwagi, jeśli zechcesz takie zostawić, będą dla mnie bardzo cenne. Do usłyszenia!