Moja siostra prowadzi biznes wyprowadzania psów z samochodu. Czternastu klientów, wspólny kalendarz Google, który trzy osoby edytują niedbale, i nawyk wysyłania "już jadę!" do właściciela psa, który jest następny w kolejce — co oznacza, że dwa razy zapomniała i musiała odbierać niezręczny telefon. W czwartek poprosiła mnie o "aplikację, nic wymyślnego" i chciała, żeby działała do poniedziałku. Powiedziałem, że postaram się mieć coś gotowego do niedzielnego wieczoru. To jest dziennik, który prowadziłem, bo chciałem potem wiedzieć, co naprawdę zajęło czas, a co tylko wydawało mi się, że zajmie.
Piątek, 20:40 — prompt
Nie otworzyłem pustego edytora. Otworzyłem czat i po prostu opisałem biznes: samotny wyprowadzacz psów, czternastu stałych klientów, potrzeba automatycznego SMS-a przypominającego rano w dniu spaceru, potrzeba prostej strony, na której można dodać nowego klienta i imię jego psa w mniej niż trzydzieści sekund, bo zwykle robi to stojąc na czyimś podjeździe. Raz powiedziałem "aplikacja do rezerwacji" i natychmiast to cofnąłem — to nie jest aplikacja do rezerwacji, to lista klientów z wyzwalaczem przypomnień. Precyzyjne określenie, czym to NIE jest, okazało się ważniejsze niż opisanie, czym to jest.
Piątek, 21:05 — plan wraca
Plan zawierał trzy elementy, o które nie prosiłem i o których bym zapomniał:
- Sposób oznaczenia spaceru jako zakończonego, żeby przypomnienie nie wystrzeliło dwukrotnie
- Link rezygnacji z SMS-ów dla zgodności z przepisami
- Prosty widok dnia zamiast siatki kalendarza, bo siatka kalendarza na telefonie z czternastoma wpisami to po prostu ściana drobnego tekstu
Przepisałem plan trzy razy w ciągu kolejnych dwudziestu minut, głównie przeredagowując rzeczy, które nie wymagały przeredagowania. Z perspektywy czasu to były czyste nerwy — agent planujący już za pierwszym razem trafił we właściwy kształt, a ja edytowałem zdania zamiast treści.
Piątek, 21:40 — pierwsze uruchomienie
Uruchomiłem i obserwowałem, jak zespół agentów pracuje nad modelem klienta, stroną widoku dnia i zadaniem przypomnień. Projekt wyglądał jak formularz przyjęcia w gabinecie weterynaryjnym, co było w rzeczywistości trafne dla odbiorców — klienci mojej siostry to właściciele psów w wieku 40-50 lat, a nie prezentacja pod inwestora rundy A. Z przyzwyczajenia niemal skrytykowałem styl wizualny, zanim zdałem sobie sprawę, że pasuje do rzeczywistego użytkownika lepiej niż cokolwiek, co sam bym wybrał.
Piątek, 22:30 — pierwsza przerwa
Część SMS-owa potrzebowała aktywnego klucza dostawcy, żeby wysłać cokolwiek naprawdę, co jest poprawnym zachowaniem, a nie błędem, ale zapomniałem, że go nie skonfigurowałem. Wszystko inne działało dalej — aplikacja po prostu logowała, co by wysłała, zamiast wysyłać, co pozwoliło mi kontynuować budowę zamiast blokować się na rejestracji w Twilio o 22:30 w piątek. Poszedłem spać.
Sobota, 8:00 — prawdziwy zgrzyt
To jest ten, który kosztował realny czas. Poprosiłem, żeby przypomnienia wysyłały się "rano w dniu spaceru", a pierwsza wersja zinterpretowała to jako stałe wysyłanie o 7:00 dla każdego klienta, niezależnie od godziny spaceru. Fajnie dla spaceru o 9:00, bezużyteczne dla tego o 16:00. Wróciłem do czatu i powiedziałem to wprost:
Przypomnienie powinno wystrzelić określoną liczbę godzin przed zaplanowaną godziną danego spaceru, a nie o stałej godzinie zegarowej.
Poprawka zajęła jedną wymianę. Lekcja nie dotyczyła narzędzia, tylko mojego własnego promptu: "rano w dniu" to fraza, która wydaje się precyzyjna dla osoby, która ją wypowiada, a jest całkowicie niejednoznaczna dla wszystkich innych, w tym najwyraźniej dla mnie samego dwanaście godzin później.
Sobota, 11:15 — czytanie zapisu weryfikacji
Zanim dotknąłem czegokolwiek innego, sprawdziłem, względem czego build sam się zweryfikował:
- Poprawne zapisywanie formularza klienta
- Zadanie przypomnień uruchomione na testowym dniu wizyt
- Link rezygnacji faktycznie wypisujący testowy numer
Nic nie płonęło. Wyrobiłem w sobie nawyk czytania tego, zanim sam zacznę szukać problemów, bo dzięki temu wiem, gdzie faktycznie skierować uwagę, zamiast klikać na oślep, licząc na zauważenie czegoś nie tak.
Sobota, 14:00 — SMS-y, tym razem naprawdę
Skonfigurowałem konto dostawcy, wrzuciłem klucz, wysłałem sobie testowe przypomnienie.
Drobiazg, ale to moment, w którym projekt przestaje być demem i zaczyna być czymś, co istnieje w realnym świecie.
Sobota, 16:20 — oczekiwanie na domenę
Skierowałem jej prawdziwą domenę na aplikację, a potem przez dwie godziny nie robiłem niczego użytecznego, czekając, aż DNS się zaktualizuje. Wykorzystałem ten czas, żeby samemu wpisać czternaście rekordów prawdziwych klientów, zamiast zostawiać to jej do wpisania na telefonie w niedzielny wieczór, co z perspektywy czasu było najlepszym wykorzystaniem czasu w całym weekendzie — niewdzięczne wprowadzanie danych bije każdą ilość dodatkowego polerowania, o które nikt nie prosił.
Niedziela, 9:00 — część, którą prawie nadbudowałem
Wpadłem na pomysł, że będzie chciała cotygodniowe podsumowanie — zrealizowane spacery, niestawiennictwa, przychód — i zacząłem prosić o automatyczny poniedziałkowy digest. Zatrzymałem się w połowie opisywania tego. Ma czternastu klientów i sama prowadzi księgowość w zeszycie. Funkcja podsumowania to rozwiązanie problemu, którego jeszcze nie ma. Pominąłem to. Mogę to dodać w pięć minut w tygodniu, w którym faktycznie o to poprosi, a do tego czasu to po prostu dodatkowa powierzchnia do popsucia się czegoś.
Niedziela, 13:10 — wysłałem jej link
Dodała klienta z telefonu, stojąc na parkingu, co było prawdziwym testem, ważniejszym niż cokolwiek, co sam sprawdziłem.
Niedziela, 18:40 — co pominąłbym następnym razem
Co pominąłbym następnym razem:
- Trzy przeróbki planu, które niczego nie zmieniły
- Dwie godziny zamartwiania się dostawcą SMS, zanim w ogóle spróbowałem go skonfigurować
- Prawie zbudowany dashboard podsumowań — najszybsze trzydzieści minut całego weekendu spędziłem, mówiąc "nie" własnemu pomysłowi, zamiast go budować
Wszystko, co faktycznie zajęło realny czas, było albo prawdziwą niejednoznacznością w mojej własnej prośbie, albo nieuniknionym oczekiwaniem na czyiś serwer DNS. Przy następnym buildzie napiszę prompt raz, przeczytam go jak ktoś obcy i zaufam pierwszemu planowi bardziej niż zaufałem temu.



