«Едва ли можно отрицать, что высшей целью всякой теории является сведение её неразложимых основных элементов к максимально простой и минимальной форме, не жертвуя при этом адекватным отражением каждого факта опыта.»
Эта цитата — из лекции Альберта Эйнштейна 1933 года, дошедшая до нас в несколько иной формулировке, никогда Эйнштейном не упоминавшейся:
«Все должно быть настолько просто, насколько возможно, но не проще.»
Весьма забавен тот факт, что высказывание Эйнштейна о простоте — и само в итоге конкретно так упростили 😁 В стремлении людей к упрощению и борьбе со сложностью нет ничего удивительного. Особенно в технологиях. Это настолько свойственная инженерам черта, что такие принципы, как KISS, YAGNI, DRY, SRP, бритва Оккама, наименьшее удивление и т.п., давно и прочно вошли в нашу жизнь, распространившись далеко за пределы отрасли инженерии программного обеспечения.
И, как оказалось, они не всегда здорово влияют на отдельные умы.
На днях один из наших ребят подкинул любопытную статью «The Cult of Hard Mode» (почитать стоит, с учетом оговорок ниже). Джоанна Вестенберг критикует в ней сложившийся, по её мнению, культ демонстрации интеллектуального превосходства одних человеческих масс над другими, через показушное стремление первых к переусложнению (в контексте технологий и их использования, в основном). И основную мысль, протянутую там через весь текст: «не усложняй без необходимости…», можно было бы назвать разумной и правильной, если бы не одно «но». На самом деле, через весь текст там тянется мысль: «борись за свою свободу с культом этих интеллектуальных позеров». Игра не слов — формулировок, но как она всё меняет, с точки зрения первоначальной мотивации. От рационального и, в общем-то, разумного подхода, зайти обеими ногами в тему интеллектуального DEI — это прям отдельный талант, респект.
Но блин, я этого правда долго ждал. Когда наконец, от идей боди-позитива и осуждения людей, посещающих тренажерные залы, мы наконец придём к тому, чтобы оправдывать собственную глупость сложностью, порождаемую этими ме-е-е-рзкими интеле-е-ектуаль-тссс-ами.
Ну да ладно.
Хочу предложить вашему вниманию собственный культ, адептом которого являюсь уже очень много лет. Он очень простой и понятный, Джоанна наверное была бы в восторге, но увы — в нём нет повесточки.
Всего 4 принципа:
1. Любые принципы не высечены в камне.
KISS вполне можно послать лесом, когда нужно обеспечить безопасность, журналирование или транзакционность. Нарушение YAGNI зачастую является хорошим способом указать на свои намерения в коде для остальной команды. Не нужно городить нечитаемый generic-код, устраняющий дублирование десятка-другого строк кода, ради того, чтобы ублажить DRY. Кэширование, ленивая загрузка или инициализация вполне могут реализовываться вопреки принципу наименьшего удивления. Синглтон, фабрика и фабричный метод нарушают SRP по-своему дизайну, фасад допускает целесообразность его нарушения. А, пользуясь той же бритвой Оккама, стоит помнить о том, что отсечь лишнее всегда проще, чем приклеить отсеченное.
Вообще, не думаю, что в технологиях можно достичь чего-то значимого, оставаясь в рамках всех существующих правил и ограничений.
2. Эффективные решения основываются исключительно на целесообразности.
Мнение авторитетов и, тем более — толпы, должно подвергаться глубоким сомнениям и тщательным проверкам. Свое собственное мнение, опирающееся на «хочу/не хочу» — вообще не важно. Банальный «7 вопросов чтобы что?» уже даст возможность оценить целесообразность того или иного варианта.
3. Любопытство — не порок, любознательность — добродетель.
Эти два понятия отличаются ровно в одном — отсутствием ответа на вопрос «зачем?» в первом случае. Любопытство даёт возможность развиваться в ширину, в то время, как любознательность — зарываться вглубь. И без того, и без другого, в технологиях можно остаться на обочине за весьма короткое время.
4. Если эти принципы мешают достичь поставленных целей, см. п.1.
Вот, что я считаю настоящей свободой 🤷♂️
#мысли_вслух