2021-10-08 14:56:49
Начинайте с данных, а не с кодаВажный урок, который я усвоил на Снобе — если в проекте присутствуют старые данные, особенно с легаси-сервисами, то начинать надо не с попыток запилить как можно больше фич, а с этих самых данных.
Вот представьте ситуацию — вы делаете каталог книг. В базе есть автор, есть книга, отношение многие ко многим — всё как положено. Смотрите в легаси — схема данных вроде соответствует. Создаёте модельки у себя, строите вокруг этого фичи — API для фронтенда, выгрузку в elasticsearch.
Перед запуском проекта финально импортируете данные и замечаете, что у некоторых книг подозрительно много авторов — по базе выходит, что «Анну Каренину» написал не только Лев Толстой, но и Ксения Собчак. Начинаете разбираться и выясняете, что у автора книги в легаси-базе есть бинарный флаг «рецензент», и если человек указан как рецензент, то считается, что он не писал эту книгу, а только рецензировал. Было это 10 лет назад, в те времена рецензии хранились как комментарии к товарам. С тех пор рецензии никто не писал, но старые нужно переносить, а авторов чистить — иначе SEO-шники съедят. И вам обо всём этом не сказал никто, включая тех же SEO-шников, пока вы их сами не спросили.
И вот вы в ночь перед дедлайном делаете новую сущность в системе, добавляете API, переписываете импорт, санитизируете данные. Выясняете, что ваша обёртка над эластиком может отдавать только посты — переписываете и её. И всё это потому что данные принесли вам требование, о котором никто не сказал. А если бы начали с данных — ещё в процессе переноса узнали бы о существовании рецензий, поменяли бы скоуп, и закончили бы вовремя.
489 views11:56