Сначала данные, потом код
Bad programmers worry about the code. Good programmers worry about data structures and their relationships. Эта цитата Торвальдса перевернула моё представление о написании кода. Я прочитал её где-то в начале карьеры, но смог принять только спустя четыре года боевого опыта. Первые годы работы я переживал за код, пытался сделать его чистым, тестопригодным, использовал паттерны, фанатично соблюдал принципы SOLID и DRY. Мой код выглядел по-умному, и я этим гордился.
Да, я знал, что профессиональный код должен быть простым. Но я искренне верил, что зафигачить на питоне фабрику для создания объектов реализующих шаблонный метод — это очень просто и элегантно. Ведь в книжках и на хабре пишут, что все профи используют паттерны. Я не моделировал проблему с помощью данных, я пытался написать красивое, правильное и простое решения. Я очень переживал за свой код.
Не помню, что стало триггером, но в какой-то момент меня накрыло осознание: всё, что программист делает с помощью кода — трансформирует данные из одной формы в другую. Сначала данные, потом трансформация. Чистота, красота, тестопригодность, правильное ООП или ФП, императивность или декларативность — всё отходит на второй план, это лишь ничего не значащие декорации. Вся суть в данных.
Когда осознание пришло, и я перестал переживать за свой код, он стал проще и понятнее. Все фичи, которые раньше казались сложными в реализации, просто содержали в себе непродуманные структуры данных. Объяснение кода, фикс багов, добавление новых фич — всё начало занимать меньше времени, когда поток данных внутри приложения стал явным.
Сейчас моя команда полностью переписывает UI старого приложения. И как же приятно открыть свежие исходники любой страницы и почитать код, который написан вокруг данных. Загружаем данные, трансформируем их в зависимости от действий пользователя и отправляем обратно на бэк — вот и весь фронтенд. В такой кодовой базе даже дышится легче.
Если тоже познал дзен, отодвинул код на второй план и думаешь сначала о данных — ставь ленивца.