О пользе слушания своих инструментов
Как часто у вас бывает, когда вы начинаете использовать какую-то технологию, фреймворк или библиотеку и поначалу все идет хорошо, но чем дальше в лес тем сложнее становится, появляются какие-то хаки, приходится лезть в код, манки-патчить методы или переопределять цепочку наследования из пяти классов чтобы доступиться до приватного метода в глубине (у меня до сих пор флешбеки от Ваадина). Технология имеет некоторую задуманную создателем философию и чем сильнее от неё отходить, тем больше она сопротивляется. У любой технологии есть некоторый люфт в рамках которого можно адаптировать, естественно при желании, можно силой пропихнуть в свои требования, но архитектура перестанет "звучать" и будет хрупкой. Любые изменения потребуют больших усилий.
Первый раз мне эта мысль пришла когда я пытался уложить систему в архитектурные требования в течении нескольких недель рисования, созерцания и обсуждения стрелочек с квадратиками. И выглядело это все ужасно с огромным багажом потенциальных граблей которые вспоминались из опыта. Затем нашли service-mesh, который архитектурно отделяет коммуникацию и безопасность от сервисов. Сами сервисы становятся простыми и тупыми (в этом случае это хороший показатель). Архитектура "запела".
Другой случай, когда ты пытаешься внедрить какую-то технологию, идет очень сложно, возникает куча вопросов. Например с oauth/oidc. Но в этом случае выяснилось, что я просто не слышал "песню", потому что я не знал "языка" -- у меня не было в голове необходимых концепций для понимания насколько это удобно. До сих пор я понимаю не все, но уже разбираю отдельные слова.
Ну и третий, простой пример совсем недавно, когда для решения простой задачи под требования, пришлось переопределить библиотечный класс. Тут код прямо таки кричал о том что архитектуру нужно пересмотреть. Спойлер это был ОРМ, который с самого создания несёт проблему объектно-реляционного импеданса и порождает большое количество проблем и боли при любом мало-мальски сложном сценарии сложнее CRUDа.
Я все это обдумывал, а потом вспомнил что месяц назад случайно прочитал статью Listen To Your Tools от 2006 года, которая у меня в библиотеке лежала лет восемь и вообще непонятно откуда взялась. Я пошел перечитать, и нашел видео автора Carlo Pescio о физике софта. Он предлагает очень интересную концепцию о взаимосвязи трёх измерений: рантайма, софта и требований. Ну и переформулируют качества кода, с точки зрения измеримых показателей. На первый взгляд -- потенциальный сдвиг парадигмы, жаль только у автора не хватит сил подвинуть именитых "консультантов" типа Банды Четырех, которые десятилетиями спорят в области метафизики, разъезжают по конференциям и крепко сидят на контрактах
Поразительно, как что-то прочитанное уходит из рабочей памяти и варится в подсознании посылая сигналы в виде каких-то терминов, расширяя твой язык новыми концепциями.
Границы твоего языка определяют пределы твоего мира. Л. Витгенштейн
#инженерия
Post #147
180