Я сів поруч із фармацевткою і майже годину просто дивився, як вона працює. Дані клінічних досліджень, картки пацієнтів, графіки лікування, дати повторних візитів — усе це жило в одній величезній таблиці Excel. Прокрутка, фільтр, копіювати, вставити, знову прокрутка. Щодня. Саме той день і став причиною, чому я вирішив зібрати для цієї команди нормальну CRM замість Excel — і це виявився один із найприємніших проєктів за мої десять років в інженерії.
Таблиця, на якій трималася ціла дослідницька група
Про одне про таблиці не попереджають: вони масштабуються рівно до тієї миті, поки не ламаються. І ламаються тихо.
У файлі були сотні рядків. Кожен пацієнт, кожен цикл лікування, кожен запланований візит — усе в сітці, яка для цього ніколи не створювалася. Фармацевти вибудували цілий робочий процес клінічних досліджень поверх інструмента, придуманого для бухгалтерії.
А потім я побачив те, що й вирішило долю проєкту. Вона випадково затерла рядок колеги. Не помітила. Ніхто не помітив — два дні. Два дні клінічних даних зникли, бо курсор промахнувся на одну комірку, а поруч не було ні скасування, ні історії версій, ні страховки. У дослідженнях це не «незручність». Це справжня проблема.
Я подивився на цю таблицю, і всередині стало тихо. Не злість. Просто дуже ясна думка: я можу це полагодити.
Спочатку дивитися, потім писати код
Я ледь не зробив класичну помилку — ледь не пішов додому будувати те, що, як мені здавалося, їм потрібно.
Натомість залишився і продовжив спостерігати. І процес у моїй голові виявився зовсім не схожим на процес на їхньому екрані. Фармацевти не мислять компонентами й API-запитами. Вони мислять пацієнтами і дедлайнами. Мені довелося забути власний словник, щоб заговорити їхньою мовою.
Тому я розписав те, що вони реально роблять, а не те, якою «має бути CRM» на думку розробника:
- картки пацієнтів, які не зникають мовчки;
- облік лікування, що оновлюється у всієї команди тієї ж секунди;
- планування візитів, яке живе в системі, а не в чиїйсь голові;
- пошук і звіти, що відповідають на питання за секунди, а не за нескінченну прокрутку.
І лише після цього я відкрив редактор.
Стек: Vue.js і Firebase
Стек був навмисно нудним — і в цьому вся суть.
- Vue.js на фронтенді — швидкий, реактивний інтерфейс, яким команді справді приємно користуватися.
- Firebase на бекенді, де всю важку роботу робить real-time база даних.
Саме real-time тихо вбив головний біль. Коли один фармацевт міняв запис про лікування, усі інші бачили це миттєво. Більше жодних пересилок «останньої версії» файлу поштою. Більше жодних двох копій, де хтось випадково «перемагає».
А під капотом — найнеромантичніші основи: автентифікація, CRUD, пошук, звіти. Нічого для слайда на конференції. Усе, що реально потрібне бізнесу.
Результат: на 40% швидше, нуль втрачених записів
Цифри прийшли швидко, щойно таблиця зникла:
- Час обробки впав на 40%. Не тому, що фармацевти раптом стали швидшими, а тому, що система перестала їх гальмувати.
- Близько двох годин на день ручного введення даних просто випарувалися.
- Нуль втрачених записів. Цілий клас катастроф «випадково затер рядок» перестав існувати.
- Процес став на 100% цифровим. Таблицю не покращили. Її просто не стало.
Останній рядок важливіший, ніж здається. Я не зібрав кращу таблицю. Я прибрав процес, через який таблиця взагалі здавалася потрібною.
Різниця між розробником та інженером
Vue і Firebase — лише інструменти. Я міг узяти з десяток інших стеків і прийти до того самого результату. Справжня робота почалася там, де я сів, замовк і став дивитися, як людям важко, — а потім зібрав те, що зробило їхній день по-справжньому кращим.
Якщо стиснути весь проєкт у три правила:
- Поговори з користувачами до першого рядка коду. Їхній справжній біль ніколи не там, де ти його собі вигадав.
- Міняй процес, а не лише інструмент. Швидка таблиця — усе ще таблиця.
- Мір результат у зекономленому людському часі. 40% і дві години на день щось означають для людини. Рядки коду — ні.
Для мене саме тут і проходить межа між розробником та інженером. Розробник викочує фічу. Інженер змінює те, як люди працюють.
Просто зараз десь у вашій компанії хтось веде критично важливі дані в таблиці. Він не скаржиться. Він перестав скаржитися роки тому і просто змирився. Знайдіть цю людину. Зберіть цей інструмент. Ви не просто напишете код — ви зміните те, як вона працює.