Как разработчик программного обеспечения, который бродит по кругу социальных сетей, вы, возможно, уже наткнулись на пост Никиты Тонского. Сколько себя помню, я возился с программированием. Я профессионально пишу код уже почти десять лет. Поэтому я не могла просто оставить слова Никиты мимо меня и не оставить реплики. Вот цитата из поста Никиты, задающая общий тон:

Только в программном обеспечении - это нормально, если программа работает с 1% или даже 0,01% от возможной производительности. Кажется, всех это устраивает. Люди часто даже гордятся тем, насколько это неэффективно, например, «зачем нам волноваться, компьютеры достаточно быстрые».

Также…

Итак, все представляет собой просто груду едва работающего кода, добавленную поверх ранее написанного едва работающего кода. Он продолжает расти в размерах и сложнее, уменьшая любые шансы на изменения.

И это…

Это не инженерное дело. Это просто ленивое программирование. Инженерия - это глубокое понимание производительности, структуры и ограничений того, что вы создаете. Сочетание плохо написанного материала с более плохо написанным - это категорически против этого. Чтобы прогрессировать, нам нужно понимать, что и почему мы делаем.

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

Причина, по которой все стало настолько раздутым, частично объясняется тем, что оборудование стало дешевле и эффективнее, и эта тенденция, скорее всего, сохранится в будущем. Можно сказать, что наша готовность повторно использовать код неблагоприятно привела к перекрытиям и непреднамеренному повторению. Без сомнений. И все же, ИМХО, настоящая причина в том, что мы, разработчики, или, лучше сказать, люди, ненавидим специализироваться. Мы любим абстрагироваться, обобщать, скрывать основные детали под ковром.

Это больше связано с нашей эволюцией как людей, чем с чем-либо еще. Если вы когда-нибудь видели или изучали Иерархию потребностей Маслоу, вы точно поймете, что я имею в виду. По мере того, как организмы начинают развиваться, их приоритеты смещаются от базовых (еда, туалет, размножение и т. Д.) К более абстрактным и высокоуровневым целям. Найдя способ удовлетворить свои основные потребности, человечество начало смотреть не только на человека, но и в окружающий мир. В какой-то мере став хозяевами своего окружения, люди стали заглядывать еще дальше - в глубокие неизведанные мироздания. Все с одной целью - узнать, кто они и какова их цель в жизни.

Вот и все. Это действительно просто. Наша неспособность решить этот очень экзистенциальный вопрос заставляет нас двигаться дальше, чтобы достичь следующей подсказки, которая потенциально может дать нам ответ. Однако чем больше мы развиваемся, тем сложнее становится. Фактически, настолько сложен, что мы часто недооцениваем сложность, которую создали, и продолжаем строить прямо на ней. Время от времени происходила серьезная проверка реальности (то, что Нассим Николас Талеб называет Черным лебедем, что немного мешает, но редко удается остановить или значительно вернуть в исходное состояние.

Если вы все еще читаете (я впечатлен), позвольте мне повторить, имея в виду конкретный случай. Стремясь обеспечить соответствие наших творений требованиям будущего, мы переоцениваем их до такой степени, что зачастую начинать с нуля неизбежно. Я не думаю, что это изменится или даже может измениться. Чем больше мы развиваемся, тем дальше мы будем смотреть и тем сложнее станет наше окружение.

Как разработчики, мы особенно склонны попадать в кроличью нору сложности. Осознание сложности, возможно, поможет нам сдержать ее в определенных ситуациях или повысит нашу осведомленность о риске потенциальных неудач. Они будут укореняться все глубже и глубже по мере дальнейшего развития человечества и время от времени будут появляться снова, чтобы восстановить равновесие.

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

Первоначально опубликовано на preslav.me 6 октября 2018 г.