Статьи
Вы против мира глупости: советы разгневанным разработчикам
Почти каждый проект или начинание, которое мы видим, не соответствует самому лучшему из того, что могло бы быть.
Я надеюсь, что человек, который читает это, кто-то вроде меня:
- Часто испытывает раздражение во время написания кода или выполнения другой технической работы из-за того, что вещи «не работают должным образом».
- Склонен к праведным разглагольствованиям в духе «я против мира тупости», также известного как «синдром Блэкэддера».
- Обладает достаточным самосознанием и нейропластичностью, чтобы сформировать собственную личность.
- Ок, на самом деле это мистер Бин выше, а не Эдмунд Блэкэддер. Это был лучший бесплатный фильм Роуэна Аткинсона, который я смог найти.
Предположим, вы и есть этот человек. Моя следующая проблема — заставить вас оставаться в этой статье достаточно долго, чтобы я мог донести до вас несколько ценных вещей. Потому что если вы находитесь в том самом состоянии, из которого я пытаюсь вас вытащить, то эта статья наверняка не будет соответствовать вашим ожиданиям. Есть другой контент, который ярче и более соответствует вашему настроению.
Если вы хотите получить удовлетворительную техническую тираду вместо того, чтобы выяснить, как стать счастливее в своей трудовой жизни, я искренне рекомендую этот доклад от Джонатана Блоу:
Это видео — кладезь злой инженерии — грандиозно, элитарно, да. Но он несколько раз попадает в точку. В начале Джонатан рассказывает об эксперименте, в ходе которого он отмечает каждый раз, когда программное обеспечение отвечает ему сбивчиво или неправильно. И он абсолютно прав в отношении того, насколько дрянным стало программное обеспечение.
Предположим, вы все еще читаете…
Кем вы хотите быть?
Все сводится к этому. Есть один человек, с которым вы проведете всю свою жизнь — это вы сами! И в отличие от других людей, с которыми вы будете проводить время, вы можете превратить этого человека в кого-то, с кем приятно быть рядом.
Проблемы возникают, когда есть определенные привычки, которые поначалу вознаграждают вас, но потом доставляют вам неприятности. И если вы заворачиваете свою личность в шаблоны, которые на самом деле вам не помогают, становится трудно измениться.
На приведенной ниже диаграмме показан один из тех срезов «Двух типов людей», которые обречены быть упрощенными и не охватывать нюансы каждого человека. Включая вас. Я был бы очень удивлен, если бы вы полностью соответствовали чертам парня слева или справа. Это всего лишь кадр, который мы можем использовать на мгновение.
Первый рисунок выше, кажется, был создан самодовольным техническим гуру справа. Он превращает все его черты в достоинства и изображает Левого парня озлобленным ботаником. Давайте дадим нашему мятежнику-иконоборцу слева шанс представить свою версию той же диаграммы…
Итак, здесь представлена пара архетипов. Я говорю, что, хотя и то, и другое имеет ценность, существует опасность того, что ваша личность склонится к эгоистическому цинизму, который может сделать вашу жизнь излишне неприятной. В идеале мы должны запечатлеть мужество, страсть и проницательность Левого Парня, а также практичность, такт и бескорыстную ясность Правого Парня.
И да, я все еще говорю здесь о разработке программного обеспечения. Инженеры перемещаются внутри кажущегося строгим цифрового ландшафта программного и аппаратного обеспечения. Тем не менее, трудно сделать шаг в этом мире без того, чтобы решения других людей не тыкали в вас. И то, как вы реагируете на этих людей и их работу, важно для вашего благополучия.
Проклятие инженера
Я бы не написал эту статью, если бы не считал, что в инженерах и их мышлении есть что-то уникальное. Пусть психологи говорят о более общих проблемах, применимых к более широким слоям населения. Мы с вами страдаем от недуга, который еще не попал в DSM-5 («номенклатура» психических расстройств)…
Мы действительно хотим, чтобы все работало.
Когда что-то не работает, это беспокоит нас. И, честно говоря, я думаю, что это на самом низком уровне и очень просто. Вы можете использовать другие преимущества пирамиды Маслоу, чтобы объяснить, почему мы хотим, чтобы программное обеспечение было производительным и не содержало ошибок. Но я не думаю, что вам это нужно.
Если вы не верите мне в том, что для работы необходимо что-то фундаментальное, просто немного помедитируйте над видео ниже. Это череда простых неудач.
Однажды я застрял на железнодорожном переезде, где шлагбаумы оставались опущенными и блокировали движение в ожидании поезда. Я ждал пять минут, пока ворота распахнутся или приедет поезд. Я вышел из машины и посмотрел на рельсы в поисках поездов. Их не было. Звякнули колокола и загорелись светофоры в ожидании поезда-призрака, который так и не прибудет.
Все остальные ожидающие машины уже давно развернулись и уехали по делам. Но я сумасшедший в этом плане, характерном для инженеров. Здесь мне было чем заняться.
Я нашел номер телефона «В случае проблем звоните по…», напечатанный на ближайшем указателе, и позвонил в железнодорожную службу. Голос человека на другом конце провода, который, я надеюсь, был одет в классическую кепку, услышал ситуацию, которую я описал. Затем он попросил у меня «номер перекрестка» (может быть, это был другой термин), который я нашел напечатанным на ближайшем оборудовании. Он поблагодарил меня и сказал, что они пришлют кого-нибудь, чтобы исправить это.
Я просто подал баг репорт для железнодорожного переезда.
Я сделал это не на благо человечества. Я сделал это не потому, что боялся, что мои поездки и в будущем будут блокироваться. Я сделал это из-за Проклятия Инженера. Я действительно, искренне, глубоко хочу, чтобы все работало.
Сломанный мир
И все же мы живем в мире, который постоянно нас подводит. Это место, где власть вращается вокруг денег, а создание чего-то является средством достижения этой цели, а не самоцелью.
Почти каждый проект или начинание, которое мы видим, не соответствует самому лучшему из того, что могло бы быть. Рыночные уравнения производят не лучшие инженерные решения, а скорее оптимальное решение для успеха продукта или услуги. Существует определенное количество низкокачественной техники, которую потребители готовы принять в обмен на более низкие цены и другие преимущества. В результате кажется, что приложения, устройства, люди и учреждения не соответствуют нашим стандартам.
Вот подборка некоторых вещей, которые подталкивают меня к таким техно-разглагольствованиям:
- Пластиковые бутылки для горчицы или кетчупа (я мог бы написать целую статью о том, насколько они «дивный новый мир»).
- Кондиционеры, которые не просто нагревают или охлаждают до заданной температуры, а требуют, чтобы вы постоянно возились с их элементами управления.
- Облачное распознавание речи (офлайн работает быстрее и не угрожает вашей конфиденциальности).
- Стриминг видеоигр из облака (с такими-то лагами).
- Облачное все, что на самом деле не хочет быть облачным. Людям лучше рассматривать периферийные вычисления и Offline-First решения.
- Фреймворки CSS (я перестал их использовать в этом году. Джейсон Найт насильно скормил мне красную таблетку).
- Proof-of-work как средство борьбы с цифровым дефицитом.
Честно говоря, мне пришлось остановить себя, чтобы не печатать дальше. Просто поток!
Многое можно исправить. Есть так много вещей, которые кажутся мне продуктом лени, пренебрежения и откровенного лемминга.
Следите за дергающимся коленом
Те из нас, у кого есть Проклятие инженера, могут начать смотреть на мир как на парад неудач.
И по мере того, как мы будем чаще применять эту линзу, мы будем упускать моменты, когда все хорошо или даже просто достаточно хорошо. Другие соображения, помимо инженерной строгости, ускользают от нас. Иногда есть варианты использования, которые больше подходят другим людям, чем нам, и наше разочарование не заслуживает того, чтобы озвучивать его как универсальную критику.
Например, после завершения 4-летнего проекта я достиг точки, когда Unity больше не является игровым движком, который я бы выбрал для коммерческой игры. Подгонка фреймворка и проверка этого черного ящика, которые я должен делать, просто тратят впустую много моего времени. Начав снова, я мог бы создать свой игровой движок. Но Unity по-прежнему может оставаться отличным инструментом для начинающего разработчика игр или для тех, кто хорошо использует его функции визуального программирования.
И у меня был болезненный опыт работы с библиотекой TurfJS для геопространственной математики, связанной с некоторыми ее булевыми операциями. Сначала было много потрясания кулаками и упреков с моей стороны. Но после двух лет поисков исправлений найденных ошибок я познакомился с Очень сложной проблемой, которая вызвала эти ошибки. Было легко стоять в стороне и кричать о людях, пишущих плохой код. Но приближение к проблеме рассказало другую историю. И я познакомился с некоторыми инженерами, внесшими большой вклад в открытый исходный код.
Сочетание эмпатии с инженерией
Даже в тех случаях, когда техническое решение неоспоримо является чудовищным, есть и другие вещи, которые следует учитывать помимо инженерных.
Является ли проект нефинансируемым проектом с открытым исходным кодом, полностью написанным добровольцами? (Большая часть программного обеспечения, которое мы используем для разработки, является!) Если это так, мы можем быть чуткими и конструктивными в отношении его проблем. Пожертвуйте время, деньги или свой тактичный совет, чтобы сделать его лучше. Или просто незаметно переключитесь на другое решение, не выливая злобу на чужую работу.
Иногда у вас возникают проблемы с инженерией внутри той же компании или организации, где вы работаете. В этом случае вы сможете познакомиться с реальными людьми, которые своими ошибками превращают вашу жизнь в ад. Но чем больше вы разговариваете с ними и работаете с ними, тем больше вы будете понимать, как они пришли к своим решениям. При ближайшем рассмотрении эти «ошибки» могут и не быть ошибками.
Возможно, ту библиотеку виджетов, которую вы ненавидите, уже планируется заменить чем-то лучшим. Команда просто ждет зеленого света на работу по замене. И один разговор с менеджером по продукту может стать решающим фактором для повышения приоритета.
Возможно, медленная конечная точка службы, к которой вы обращаетесь, изначально была предназначена исключительно для массового скачивания. И ваша проблема решается простым вызовом другой конечной точки, о которой вы не знали, пока не навели справки.
Или, может быть, вы загнали инженера в угол и спросили: «Почему вы сделали это таким нелепым образом?» А он вам объяснил что-то сложное о транзакциях атомарной базы данных или что-то в этом роде. И вы ушли, уже не соглашаясь со вчерашней версией себя. Иногда вы сами просто ошибаетесь!
Беспорядочный мир со множеством недостатков, которые всегда можно исправить
Сомневаюсь, что смогу сказать вам в этой статье что-то, что вы еще не знаете. Я просто тот, кто провел некоторое время в положении «Я против мира глупости». Такое настроение коварно и может увести вас от лучших вещей. Поэтому я искренне рекомендую культивировать более открытый и позитивный взгляд на мир.