Когда все соглашаются, что одни вещи красивы,
другие становятся уродливыми.

Когда все согласны с тем, что некоторые методы хороши,
другие методы становятся отвратительными.

Тем не менее
Процедурные и объектно-ориентированные создают друг друга.
Простые задачи создают сложные.
Длинные и короткие формируют друг друга.

Высокий и низкий;
до и после;
требуется поиск.

Мудрый инженер
действует без дела
и защищает, не выступая.

вещи возникают, и инженер позволяет им прийти;
вещи устаревают, и инженер отпускает их.

Инженер несет,
но не обладает,
создает, но не сохраняет.

сделать работу и отпустить ее;
отпустить ее
— это то, что позволяет ей упорствовать

Лао-цзы дал нам много поводов для обсуждения.

Когда-то COBOL был самым крутым языком программирования. Все хотели написать свое следующее корпоративное приложение на языке COBOL. Что случилось? Все решили, что другие языки красивее, и поэтому что-то должно было стать безобразным.

То же самое можно сказать об управлении проектами и методах оценки, фреймворках, платформах разработки и многом другом.

Из этого следует два важных урока:

  1. Универсально рекомендуемые концепции и инструменты в мире разработки созданы культурно. Способность видеть сквозь этот фасад и видеть, что на самом деле полезно в данных обстоятельствах, — это редкий навык, который необходимо активно практиковать для развития. Я утверждаю, что это умение является сущностью дао — способностью отбрасывать имена и ярлыки, чтобы определить, насколько точно что-то следует Пути.
  2. Верить в то, что какие-либо инструменты или концепции в мире разработки близки к непреложным истинам, — это явно высокомерие; все изменится, прекрасное станет уродливым, а уродливое будет исправлено. Таким образом, даже если хорошие и плохие вещи определены культурой, вещи будут приходить и уходить.

Принимая во внимание вышеизложенное, мудрый инженер принимает изменения как в принятии нового (когда оно готово), так и в отказе от старого (когда ему пора уйти). С Дао можно бороться, но оно неоспоримо.

Идите вперед и попытайтесь бороться с изменениями. Вы проиграете, и вещь, которую вы пытаетесь сохранить, будет возвращена. Это только вопрос времени. Включение изменений — это путь к сохранению.

Преображение названных вещей в нашем мире неизбежно, вечно только безымянное.

Большинство инженеров понимают, что мир разработки программного обеспечения изменчив, и поэтому они часто легко принимают изменения (и даже устаревание). Есть только одна область, в которой инженеры почти всегда испытывают трудности, и Лао-Цзы особо выделяет это:

Их собственная работа.

По иронии судьбы, сохранение работы — самый быстрый способ дать ей короткую жизнь. Трансформация вечна, оставшуюся работу нельзя легко трансформировать… поэтому вместо этого ее заменяют.

Недокументированные решения не могут быть легко расширены или легко поняты. Эти решения быстро становятся уродливыми, а уродство исправляется.

Эй, Лао-Цзы! Должен ли я открывать исходный код своей работы?

Только если вы хотите продолжить.

Но как насчет «Не делать?»

Что ж, это не значит, что мудрый инженер ленив. Это означает, что мудрый инженер следует дао. Преобразование произойдет, мудрый инженер понимает преобразования и просто позволяет им произойти.

Конечно, для расчистки пути потребуются усилия, но это не «делание». Дао делает дело. Расчищая путь для дао, дела достигаются сами по себе. Инженер делает без дела.

Если вы когда-либо боролись за что-то или делали что-то «против течения», вы испытали хотя бы часть из того, что описывает здесь Лао-цзы.

Очень часто деятельность проекта в целом направлена ​​против дао. В таких случаях мудрый инженер пойдет против условностей проекта, тем самым расчищая дао путь к многому делу. Проект, держащийся за анти-даосские вещи, — это просто еще одна форма обладания, вызывающая хаос и непродуктивную работу.

Обратите внимание, что «отпустить» не означает отменить процессы и инструменты — это означает использовать процессы и инструменты, которые следуют дао. В некоторых случаях может случиться так, что проект, намеренно сохраняющий отсутствие процесса, является антидао.

Например, отказ от реализации непрерывной интеграции заставляет инженеров выполнять задачи, которые можно было бы автоматизировать. Сейчас инженеры делают то, что можно было бы сделать лучше, если бы они этого не делали. Лао-цзы часто пересматривает эту концепцию неделания, и поэтому мы будем часто обсуждать автоматизацию.

Точно так же инженер защищает, не защищая

Просто используя правильные инструменты или концепции для решения проблемы. Если вещь требует пропаганды, чтобы быть оправданной для использования, почти наверняка сейчас не время для нее. Либо время вещи прошло, либо еще не пришло.

Часто, когда дело доходит до защиты чего-либо; «Лучше» и «хуже» существуют только для того, чтобы поддерживать друг друга. Таким образом, выбор между двумя решениями часто неуместен. Мудрый инженер не тратит время на неуместные обсуждения, он просто делает работу, а затем отпускает ее.

Это часть серии Tao Te Dev, читайте об этом (и найдите больше статей) здесь.