Zpětná vazba uživatelů na Splync
Asi měsíc a půl po vydání Splync v1.5 — aktualizace, která konečně umožnila vlastní poměry dělení na projekt a kategorii — dorazila nová vlna zpětné vazby. Aktualizace v1.5 vyžadovala velké změny na straně serveru, takže jsem tehdy věřil, že úroveň detailů je „dostatečná“ pro většinu případů. Pak se pár nových uživatelů zeptalo na jednoduchou, velmi rozumnou otázku: „Můžeme nastavit vlastní poměry sdílení pro jednotlivé výdaje?“ Jejich projektový výlet měl chvíle, kdy bylo třeba rozdělit konkrétní náklad mezi dva členy, a jindy chtěli sdílet něco všichni tři. V rámci Splync v1.8 to bohužel nebylo možné. Vysvětlil jsem, že si mohou vytvořit další kategorie s vlastními poměry přizpůsobenými těmto specifickým případům — dočasné řešení, ne skutečné.
Fraktální les vypadal ohromně
Připadalo mi trochu ohromující vzpomenout si, kolik práce se dalo do v1.5. Nejprve jsem musel umožnit projektům mít své vlastní poměry dělení. Pak potřebovaly své vlastní poměry také kategorie. V tu chvíli jsem si myslel, že mám pokrytou celou strukturu — sbírající každé ovoce z každé větve. Ale práce na poměrech pro jednotlivé výdaje byla jiná. Připadalo mi, že pokaždé, když jsem utrhl ovoce, vyrostl na tom místě nový strom. Ne nekonečný fraktální les, ale jasná dvoupatrová struktura: jedna vrstva zrozuje další. V logice v1.5 výdaj nejprve zdědil poměr projektu. Pokud měla jeho kategorie vlastní poměry, ty přepsaly hodnoty projektu. Takže když jsem přidával poměry pro jednotlivé výdaje, snažil jsem se přidat další přepis na tento přepis. Struktura se stala schodištěm přepisů — technicky správná, ale mentálně složitá. Bylo těžké ospravedlnit budování další vrstvy záplatované logiky.
Změny paradigmatu ve Splync v1.9
Průlom nakonec přišel z převrácení struktury vzhůru nohama. Místo „projekt → kategorie → výdaj“ a přepisování každé vrstvy další, proč nemyslet opačným směrem? Podíly na jednotlivé výdaje → podíly na kategorie → podíly na projekt. Toto pořadí odráží, jak lidé skutečně myslí: pokud má konkrétní výdaj svá vlastní pravidla, měl by je jednoduše následovat. Pokud ne, má smysl vzor kategorie. Pokud ani to nefunguje, použijte výchozí hodnotu projektu. Žádné schodiště přepisů — jen čistá hierarchie priorit. Jakmile jsem to takto uviděl, mlha pseudofraktálního lesa se okamžitě rozplynula. Cesta implementace se stala jasnou: „Každý výdaj se kontroluje u vlastních podílů na jednotlivé výdaje. Pokud jsou přítomny, použijte je. Pokud ne, zkontrolujte podíly na kategorie. Pokud ne, použijte výchozí hodnotu projektu.“
Procházka pod nebem
Nová logika působila jednoduše, předvídatelně a matematicky správně. Pro podporu tohoto prioritního systému jsme přidali speciální tabulku MariaDB pro rozdělení na jednotlivé výdaje, což jaksi zrcadlí tabulku pro rozdělení na kategorie. Tabulka s detaily výdajů také potřebovala rozšíření, stejně jako tabulka s detaily kategorií ve verzi v1.5. Jakmile se jasně ukázal základní „dvoupatrový“ design, zbytek byl jen pečlivé programování — jak v aplikaci, tak na serveru. Cesta však stále v některých místech působila rizikově, jako chůze tmavým lesem bez mapy. Chtěl jsem si pročistit hlavu a vyšel jsem ven. Vzduch byl ostrý a čistý. Při procházce mým okolím jsem v dálce zahlédl Mt. Fuji, křišťálově modrou pod dokonale modrým nebem. Byla vzdálená téměř 100 km, přesto vypadala, že se jí lze téměř dotknout. Ten okamžik působil jako připomínka: i když si myslím, že kráčím lesem, ve skutečnosti kráčím pod otevřeným nebem.
Co můžete dělat se Splync v1.9 — vlastní dělení pro každý výdaj
Splync v1.9 se zrodil z toho okamžiku jasnosti. Vrátil jsem se domů, dokončil propojování nových koncových bodů, připravil novou logiku serveru, uspořádal související rozhraní, odeslal v1.9 do Apple a nakonec usnul. Recenze skončila dříve než obvykle. Když jsem se probudil, Splync v1.9 byl již schválen a automaticky uveden na App Store. Od této verze je dělení mnohem flexibilnější. Pokud cestujete s Johnem a Kate, můžete sdílet základní výdaje rovnoměrně mezi vámi třemi. Ale u jídla můžete přejít na „25 % : 50 % : 25 %“ rozdělení, protože John obvykle sní dvakrát tolik. A pokud John vynechá jednu večeři — například v ústřicové restauraci — můžete ten konkrétní pokrm nastavit na „50 % : 0 % : 50 %“, aby neplatil za to, co nesnědl. S verzí v1.9 nyní Splync podporuje poměry na projekt, kategorii a jednotlivé výdaje v jednotné logice. Základy jsou stabilní a matematicky správné. Další výzvou je rozhraní: některé jiné aplikace pro dělení nabízejí hladší, stylovější způsoby úpravy těchto poměrů. Splync má nyní dostatečnou sílu na backendu, aby tyto vylepšení podporoval. Budeme na nich pracovat jedno po druhém.