Відгуки користувачів про Splync
Приблизно через півтора місяці після випуску Splync v1.5 — оновлення, яке нарешті дозволило налаштувати коефіцієнти розподілу для кожного проєкту та категорії — надійшла нова хвиля відгуків. Оновлення v1.5 вимагало значних змін на стороні сервера, тому на той момент я вважав, що деталізація була «достатньо хорошою» для більшості випадків використання. Потім кілька нових користувачів задали просте, але цілком раціональне питання: «Чи можна встановити власні коефіцієнти розподілу для окремих витрат?» У їхньому проєкті подорожей були моменти, коли потрібно було розподілити певні витрати лише між двома учасниками, а в інших випадках усі троє хотіли поділити витрати. У Splync v1.8, на жаль, відповідь була ні. Я пояснив, що вони можуть створити додаткові категорії з налаштованими коефіцієнтами для цих конкретних випадків — тимчасове рішення, не справжнє вирішення.
Фрактальний ліс здавався нездоланним
Було трохи приголомшливо згадати, скільки роботи було вкладено у v1.5. Спочатку я дозволив проєктам мати власні коефіцієнти розподілу. Потім категорії також потребували власних коефіцієнтів. На той момент я думав, що охопив усе дерево — зібрав кожен плід з кожної гілки. Але робота з коефіцієнтами для кожної витрати була іншою. Здавалося, що кожного разу, коли я збирав плід, на тому самому місці зростало нове дерево. Це не безкінечний фрактальний ліс, а чітка двоповерхова структура: один рівень породжує наступний. У логіці v1.5 витрати спочатку успадковували коефіцієнт проєкту. Якщо категорія мала власні коефіцієнти, вони заміняли значення проєкту. Тож коли додавалися коефіцієнти для кожної витрати, я намагався додати ще один рівень заміни поверх цього. Структура стала схожою на сходи з замін — технічно правильно, але ментально заплутано. Було важко обґрунтувати ще один шар логіки підкладки.
Зміни парадигми у Splync v1.9
Прорив нарешті відбувся, коли я перевернув структуру з ніг на голову. Замість того, щоб робити «проєкт → категорія → витрата» і замінювати кожен рівень наступним, чому б не подумати в зворотному напрямку? Частки для кожної витрати → частки для категорій → частки для проєктів. Такий порядок відображає те, як можуть мислити реальні люди: якщо конкретна витрата має свої правила, вона повинна просто їм слідувати. Якщо ні, підходить шаблон категорії. Якщо і це не спрацьовує, треба повернутися до замовчуваних значень проєкту. Більше ніяких сходів замін — лише чиста ієрархія пріоритетів. Як тільки я побачив структуру таким чином, туман псевдо-фрактального лісу миттєво розсіявся. Шлях реалізації став очевидним: «Кожну витрату перевіряють на наявність власних часток. Якщо вони є, використовуйте їх. Якщо ні, перевірте частки категорії. Якщо ні, використовуйте замовчування проєкту».
Прогулянка під небом
Нова логіка здавалася простою, передбачуваною та математично обґрунтованою. Щоб підтримати цю систему пріоритетів, ми додали спеціальну таблицю MariaDB для розподілу витрат, що в певному сенсі віддзеркалює таблицю для категорій. Таблиця деталей витрат також вимагала розширення, так само як і таблиця деталей категорій у v1.5. Як тільки стало зрозуміло основне «двоповерхове» рішення, решта була лише в ретельному кодуванні — як у додатку, так і на сервері. Проте шлях іноді здавався ризикованим, як прогулянка темним лісом без карти. Я захотів розчистити голову і вийшов на вулицю. Повітря було гострим і чистим. Прогулюючись своїми районами, я побачив, як гора Фудзі височіє вдалині, кристально блакитна під ідеально блакитним небом. Вона була майже за 100 км, але здавалася такою близькою, що можна було торкнутися. Це нагадувало: навіть якщо я думаю, що йду в лісі, я насправді йду під відкритим небом.
Що ви можете зробити зі Splync v1.9 — індивідуальний розподіл для кожної витрати
Splync v1.9 народився з того моменту ясності. Я повернувся додому, завершив налаштування нових кінцевих точок, підготував нову логіку сервера, організував пов’язані інтерфейси, подав v1.9 до Apple і нарешті заснув. Перевірка завершилася раніше, ніж зазвичай. Коли я прокинувся, Splync v1.9 вже було схвалено та автоматично випущено на App Store. Починаючи з цієї версії, розподіл стає набагато гнучкішим. Якщо ви подорожуєте з Джоном та Кейт, ви можете ділити основні витрати порівну на трьох. Але для їжі ви можете перейти на розподіл «25% : 50% : 25%», тому що Джон зазвичай їсть удвічі більше. А якщо Джон пропустить одну вечерю — наприклад, в устрицевому ресторані — ви можете встановити для цього конкретного обіду розподіл «50% : 0% : 50%», щоб він не платив за те, що не їв. У версії v1.9 Splync тепер підтримує коефіцієнти на рівні проєктів, категорій та витрат в єдиній логіці. Основи стабільні та математично обґрунтовані. Наступний виклик — інтерфейс: деякі інші програми для розподілу пропонують більш плавні та стильні способи налаштування цих коефіцієнтів. Splync тепер має потужну серверну частину для підтримки таких покращень. Ми будемо працювати над ними один за одним.