Образованные идиоты
Индустрия ИТ борется с проникновением посторонних взглядов в свои ряды почти с момента своего возникновения. Она создаёт вокруг себя завесу таинства знаний, непостижимости своих путей и действий непосвящёнными, и высоты барьера или ступени между немытыми массами и ею самой. Это в том числе проявляется в презрительных шутках и анекдотах о тупости и неосведомлённости пользователей, которые распространяются среди её работников. Но что будет, если обратить пристальное внимание на них самих, гениальных и опытных? Окажется, что они лажают на каждом шагу. В чём же дело?
Во-первых, они все кукушки и кукушата. Они страшно боятся, что их кто-нибудь подсидит и выпихнет, что кто-то разработает лучшее решение, которое больше понравится пользователям, и что в итоге им настанет лютый мат. Из-за этого сковывающего леденящего страха практически все они без исключения стараются сделать результаты своей работы как можно более сложными, чтобы никто, кроме них самих не смог бы разобраться. Это называется безопасностью занятости. Страх потерять непыльную работу за большие деньги довлеет над ними и затмевает их разумы, что приводит к неизбежным последствиям: для мыслей об эффективных, удобных, качественных решениях не остаётся ни места среди извилин, ни времени в сутках.
Возьмём два примера, наиболее ярко олицетворяющих блеск и нищету индустрии ИТ: форматы XML и JSON. Первый родился в тишине мраморных залов академии. Как все её детища, он заумен до головокружения. Обвешанный подпорками-костылями: форматами описания своей структуры DTD и XSD и языком трансформаций XSLT, он постоянно запутывается в полах своей мантии, спотыкается, падает и расшибает себе то нос, то лоб, то подбородок. С момента, когда всё это вывалили на индустрию ИТ, она честно пыталась применять его, где возможно и невозможно. Например, некоторое время было модно генерировать страницы веб-сайтов на XML и на лету превращать его в HTML. Чудовищные сайты, применившие такую технологию, всё ещё можно найти на задворках Интернет. Ещё он был использован в тяжеловесном и замудрённом формате SOAP, ошибочно именуемом некоторыми протоколом. Распространение XML продолжает сокращаться, но всё равно в нём хранят ещё какой-то значительный объём информации.
Причина этого фиаско заключается в том, что академики перемудрили. Формат слишком сложен для постижения простыми смертными. Они нагрузили его бессмысленными довесками: пространствами имён, от которых большинство разработчиков плевались и изо всех сил старались избавиться, тогда как меньшинство пыталось выкрутить им руки и принудить ими пользоваться. Сразу расставлю точки над i: пространства имён имеют смысл для нелепой ситуации, когда более, чем один элемент документа имеют одинаковые имена, но несут разную смысловую нагрузку. Но реализация запутала всех, кого могла: объявление этих пространств зачем-то ссылалось на бессмысленные с точки зрения программного кода случайные адреса в Интернет. По идее по этим адресам должны были храниться описания схем, но это случалось редко. Они никак не помогали программному коду работать с такими элементами. Как почти всегда бывает в ИТ: разбег на рубль, удар на копейку. Такой конфликт не может не вылиться в массовый отказ от технологии, что и случилось.
Свято место пусто не бывает, и на него тут же вползло не менее уродливое чудовище: JSON. Порождение столь же академической среды, создавшей язык программирования JavaScript, он тем не менее проще в понимании и применении, но создаёт не намного меньше проблем. Дело в том, что в JavaScript поддержка JSON встроена изначально, и трансформации между ним и объектами классов происходит естественно и безболезненно. В других языках дело обстоит иначе. Там возможны разнообразные инциденты. Возьмём, например, такой пустячок, как запятая, которой элементы отделяются друг от друга. Как неоднократно упоминалось в предыдущих статьях этого цикла, в нашем мире царит режим строжайшей экономии. Предприниматели, частные лица и государственные органы удавятся за копейку в силу ограниченности их бюджетов, острой конкуренции и других причин. Из-за этого мир не может допустить, чтобы по Интернет передавалось лишние пятьдесят-сто байт, и минимизирует формат JSON среди прочих. Из него удаляются знаки табуляции и переноса строк, чтобы победить в конкурентной борьбе. То, что при этом сайт вываливает на посетителей мегабайты дурацких картинок, его владельца не волнует.
Но я отвлёкся! В итоге JSON обычно оказывается одной длинной, нечитаемой строкой. Так какого чёрта вы используете в нём запятую, а не пробел, из-за чего наличие запятой после последнего элемента вызывает в некоторых языках ошибку импорта? Разделяй вы элементы пробелами, которые как правило игнорируются, проблемы бы не существовало, но нет, в одних языках последняя запятая допускается, а в других вызывает ошибку и сбой, и нужно всегда быть начеку и помнить, где что. У нас что, проблем мало, чтобы держать работников индустрии ИТ в ненужном дополнительном напряжении по такому пустяковому поводу? Вот так ведут себя образованные идиоты. Это как если бы токарю нужно было бы помнить, что втулку диаметром в два сантиметра нужно точить не таким резцом, как трёхсантиметровую. Он бы вас так послал...
Идём дальше. Вы разделяете идентификатор и значение бессмысленным знаком двоеточия, а не использованным в XML, простым, понятным знаком равенства. Почему вам было так важно отличиться и выделиться? Чтобы не быть «как XML»? Чтобы уже существующий код для обработки XML точно нельзя было применить без полной переделки, и чтобы можно было срубить дополнительного бабла? Достойная мотивация: уровня детского сада. Иначе и не объяснишь.
Вот вы так экономите, что вам лишняя табуляция (один символ) и перенос строки (один-два) поперёк горла. Тогда что ж вы все ключи в JSON в две двойные кавычки заворачиваете? Если ключ состоит из одного сплошного слова, как примерно 99% всего JSON на планете, ему эти кавычки не нужны. Всё, что вы сэкономили на минимизации, отменяется ими. Но нет, непрошибаемым это не аргумент, равно как и то, что браузеры и веб-серверы нынче сами сжимают передаваемые данные, что отменяет эффект от предварительной минимизации (как, кстати, и в отношении HTML, CSS и JavaScript, равно как и нормальные файловые системы сжимают их при хранении). Но нет, идиотская услужливость перевешивает удобство пользования хорошо отформатированными блоками данных в JSON, сценариями на JavaScript, стилями в CSS и страницами в HTML. Что это я «волнуюсь о несущественном», противоречу самому себе? Да то, что, например, некоторые текстовые редакторы шизеют и тормозят от длинных файлов в одну строку. Их, кстати, тоже гении писали, но протестировать такой сценарий не додумались, а другие гении понасовали их в дистрибутивы Linux, ничтоже сумлящеся.
А вот возьмите ещё распространённый среди самых гениальных особей формат интернет-страниц с документацией, при котором всё содержание расположено посреди страницы в одной узкой колонке, слева от которой находится меню. Чем гениальнее, тем уже. То, что у читателя есть больше места на экране, чем на телефоне в вертикальной ориентации, авторы не догадываются. То, что весь около-интернетный мирок разработчиков последние лет 20 орёт, корчится и крутит заднее сальто, чтобы сделать страницы адаптивными к размеру экрана устройства, им тоже по барабану: главное — это чтобы была одна узкая вертикальная колонка, и чтобы читатель крутил её вверх-вниз до посинения, пытаясь отыскать крохи нужной ему информации. Это элитизм? Идиотизм? Одно из двух или какое-нибудь другое психическое отклонение. Мысль о том, что читать удобнее столько символов в строке, сколько взгляд охватывает без поворота головы, то есть в 3-4 раза шире их колоночки, их не посещает, потому что сами они документации не читают и неудобств не испытывают, а следовательно и не догадываются, что это может быть кому-то очень неудобно. Ну или им приятно доставлять страдания ближним.
Апофеозом идиотизма являются две расхожие фразы работников индустрии ИТ: «У меня работает, а значит, и у Вас должно» и «Мы не будем это исправлять, потому что не можем воспроизвести». Обе являются клиническим диагнозом, окончательным приговором: «В топку!» Первый свидетельствует о непререкаемой уверенности в собственной непогрешимости, тогда как второй о потере контроля разработчика над его кодом. У обоих ноги растут из нежелания оторвать зад от кресла и заняться скучным и неинтересным исправлением ошибок, которые сначала надо признать.
Вот это словечко, «должно», должно было сразу насторожить окружающих. С чего бы это вдруг среди обязательности остальных наук и отраслей вдруг возникла туманная, зыбкая отрасль, которая сквозь пальцы лезет и никому ничего не обязана? Инженеров сажают в тюрьму сидеть, если их крыша проваливается под снегопадом или мост падает под поездом. Дальнобойщиков сажают, если они вылезли на встречную, чтобы обогнать пенсионера, и устроили лобовую. Разработчика, оставившего дыру в коде, из-за которой украли сто миллионов учётных записей, даже на допросы не таскают. Вы когда-нибудь слышали, чтобы виновного в утечке преследовали по закону? Автор не слыхал о таком. Это не могло не избаловать работников индустрии ИТ и привлечь в неё любителей лёгкой наживы, единственной компетенцией которых является хорошо подвешенный, лживый язык. Человечество как всегда неправильно расставило приоритеты и махнуло рукой на то, что было для него критически важным, а главное, становится всё более важным со временем.
«У меня работает, а значит, и у пользователя должно», означает, что разработчик пользователя ни в грош не ставит. Он не допускает мысли, что пользователь всё сделал правильно и исчерпал все возможные способы добиться правильного функционирования ПО. Он не допускает мысли, что проблема может быть в его коде. Он требует от пользователя доказать это, тогда как бремя доказательства должно быть развёрнуто на 180 градусов: это разработчик должен доказывать, что его код правильно работает, прежде чем он будет допущен в эксплуатацию. Вместо этого применяется лицензионное соглашение, выворачивающее реальность наизнанку: разработчик ничего никому не обязан, ответственности не несёт, а пользователь на свой страх и риск применяет ПО. Это не могло не избаловать работников индустрии ИТ и привлечь в неё любителей лёгкой наживы. Человечество как всегда неправильно расставило приоритеты и махнуло рукой на то, что было для него критически важным, а главное, становится всё более важным со временем. Ой, что это я повторяюсь?
«Мы не будем это исправлять, потому что не можем воспроизвести» означает, что разработчик не имеет ни желания, ни возможности по описанию проблемы и своему знанию кода определить, что с ним не так. Код настолько сложен, а разработчик настолько слабо в нём разбирается, что затраты труда и времени на отладку выходят за рамки его бюджета. Это очередное проявление идиотизма разработчиков, избалованных вседозволенностью. Они изначально ведутся на «лучшие практики» индустрии и пишут зыбкий, рассыпчатый код, который невозможно освоить и контролировать в силу его непредсказуемости. Вместо этого в качестве оправдания они используют жаргон и напускают тумана.
Случилось как-то автору доводить до сведения команды разработчиков одного продукта его случайное поведение, зависевшее от расположения звёзд в небе или косточек, разбросанных на шкуре осла одним африканским шаманом где-то в саванне. После долгих упирательств рогом, огрызания, отбрыкивания, отбрёхивания, обвинений автора во всех смертных грехах и оскорблений, внезапно один из них открыл для себя, что проблема действительно существует из-за случайности продолжительности одновременного исполнения нескольких функций под влиянием загрузки пользовательского процессора другими программами. Они уже успели вывалить на автора эти их две коронные фразы к тому моменту. В итоге всё равно никто ничего исправлять не стал.
Способность признавать ошибки распространена по земной поверхности неравномерно. Где-то их признают, а следовательно и исправляют, легко и охотно. В других местах признание ошибки болезненно, практически недопустимо. К сожалению, именно из этих регионов в индустрию ИТ хлынули самые большие потоки сотрудников, и это самый ужасный тревожный сигнал для человечества. Эти лица уверены в собственной непогрешимости и патологически не могут допустить мысль о том, что они способны на ошибку. Любой, кто сообщает им о ней, убеждает их в её существовании, а главное, требует её исправления, автоматически становится заклятым врагом на всю жизнь, которому необходимо отомстить.
Эти лица никогда не должны были быть допущены в индустрию ИТ, потому что они её этой своей философией губят на корню. Является ли такое проявление идиотизмом, или это проявление находится в другой плоскости, судить не автору, а учёным-психологам или психиатрам. Как частное лицо, автор считает это одним и тем же. Они косячат и сопротивляются исправлениям, а мы даём этому сходить им с рук. Хуже кандидатов на должность разработчика ПО, чем они, представить себе нельзя, но они дешевле тех, кто ошибки способны признавать, и это оказывается главным критерием, потому что все удавятся за копейку. Отсутствие ответственности позволяет нанимать их, а там, что бы ни случилось, хоть трава не расти. Ну так кто теперь идиот?
Если пузырь искусственного интеллекта вскорости не лопнет, то мы вступим в его новый, замечательный век. Все звоночки уже звенят, но мы не обращаем на них внимания. Через ИИ боты обратной связи уже невозможно разрешить проблемы, потому что их гениальные разработчики не додумались предусмотреть все возможные варианты нештатных ситуаций. Только когда удаётся достучаться до человека, причём не до любого, а только до того, кто всё ещё умеет думать, проблемы иногда решаются. Но ограниченность создателей таких ботов не позволяет им даже допустить мысли, что что-то может пойти настолько не так, что ИИ не справится. В головах всех соучастников процесса внедрения ИИ не укладывается простая и железобетонная истина: нештатные ситуации невозможно предусмотреть, тогда как ИИ способен только руководствоваться имеющимися знаниями. Ни интуиции, ни изобретательности у него нет. Все сладостные вбросы про то, какой он гениальный, что взломал чей-нибудь сайт, умалчивают одно: были перепробованы известные варианты взломов, и он подобрал один или несколько, которые не закрыли недоучки и тупицы, сайт разработавшие и запустившие в эксплуатацию, потому что руководствовались в первую очередь шаблонами, а они-то и известны ИИ. Это как показывать фокусы папуасам: те удивляются, а на самом деле нечему.
Образованные идиоты обожают выкладывать в Интернет свои проекты бесплатного ПО с открытым кодом. Видимо, это тешит их громадное эго и непомерное чувство собственного величия: «Смотрите! Я могу облагодетельствовать всё человечество!» Но тут приходит это немытое человечество и сообщает им об ошибке и ином недочёте в их продукте, которые превращают его в тыкву, а иными словами делают бесполезным. Реакция нормального разумного человека на такое была бы простой и однозначной: полная остановка дальнейшей разработки до полного устранения ошибки. Но образованный идиот не понимает этого или понимает, но делает вид, что это в человечестве проблема, а не в нём. Не тот народ попался. Поэтому такие отвечают: «Не мешайте нам своими отчётами! Мы очень заняты работой над следующей версией!» Что ни нынешняя забагованная версия, что следующая, которая точно будет столь же забагованной, даром не сдалась пользователю, потому что они отказываются работать над ошибками, образованным идиотам всё равно.
Откуда такие берутся? Нет, не то, что вы подумали! Они берутся из университетов. Проявив чудеса знаний и интеллекта, чтобы поступить на профильные факультеты ИТ с громадным конкурсом, они неизбежно заражаются вирусом элитизма, то есть мнят себя великими, а всех, кто не поступил туда, вшами тифозными. После этого проявлять уважение к своим пользователям они уже неспособны, и их единственным способом защитить своё эго от сообщений об ошибках, поступающих от немытых масс, становится информационная война: обвинения, хамство, культура отмены. Обладай эти индивидуумы разумом, культурой общения, социальными навыками, они могли бы понять нелепость противоречивости своего поведения, но увы, они их или не приобрели, или растеряли.
Стирание файлов «куки» в браузерах заслуживает особого упоминания. Это требование мы слышим от поддержек всех мастей, стоит какому-нибудь интернет-приложению сбойнуть и лечь на бок или пузом кверху. Кто-нибудь из них задумывался, что они вообще предлагают? Ну да, стереть эти файлы. Только вот одна загвоздка: из этих файлов лишь часть является их собственностью, и это тоже мутный вопрос, чьи они: владельца ресурса или владельца устройства, то есть ваши. Поддержка сайта требует, чтобы вы, то есть пользователь, удалили все без исключения, в том числе посаженные другими ресурсами. Этим они автоматически превышают свои полномочия, поскольку у пользователя в этих файлах может храниться важная информация других ресурсов. Ставя штатное функционирование своего в зависимость от других, они вмешиваются в правовые отношения, в которых не имеют полномочий участвовать. Кто-нибудь на планете за всё время с возникновения этой технологии рассмотрел вопрос с такой точки зрения? Нет, автор первый такой уникум, а суслик-то есть, то есть конфликт налицо, только его все игнорируют, поскольку в Интернет это нормально и сходит с рук.
Правильным и законным решением был бы специальный раздел сайта, который специально разработан, чтобы стереть все такие файлы, которые имеют устаревший формат, содержат устаревшие данные, или иным образом повреждены. Только свои, а не все подряд! Только в контролируемой манере! Только сами, а не пользователь абы как ему там неизвестно какое ПО браузера позволит. Кто-нибудь применил такой подход? Исчезающе мало, считанные единицы ресурсов имеют такой функционал, тогда как подавляющее большинство требуют огульно удалить всё, что на устройстве. Это как если бы врачи удаляли аппендицит не только пациенту, но и всем в квартире. Такие разработчики и поддержка интернет-ресурсов тоже образованные идиоты, потому что убеждены в своей правоте, как бы технически ни были слабы и неустойчивы ПО их ресурса и персонал его разработки и поддержки.
В последнее время эти персонажи взяли моду удалять предыдущие версии ПО из репозитариев. Ну да, у нас тут цены на комплектующие подскочили до небес. Вот только лет 10 назад, когда жёсткие диски и SSD были маленькими, такое никому в голову не приходило, а в наши дни 12-терабайтных накопителей, купившись, как дешёвка, на посулы замечательных функций новой версии, пользователь обнаруживает, что она сломала что-то важное и пытается использовать команду отката на предыдущую версию диспетчера пакетов, но она не работает, потому что из репозитария предусмотрительные образованные идиоты уже удалили её саму или необходимые зависимости. Сиди, пользователь, кури бамбук в ожидании, пока убитую важную для тебя функцию исправят! Такой саботаж сходит им с рук, и они пребывают в неведении относительно урона, который наносят, но автор повторяется. Нам бы скинуться деньгами на Джона Вика, но это из области фантастики. А что если они делают это намеренно, а не в силу врождённого или приобретённого идиотизма? Страшно подумать, да?
Отдельного упоминания заслуживает гениальный отец-основатель всего бесплатного с открытым кодом, Линус Торвальдс. Он несомненно гениален, иначе как бы он смог запилить такую замечательную штуку, как Linux? То, что Линкус дрянь, мало кто понимает. То, что он основал культ безответственности, безалаберности, величия разработчика без учёта качества его работы и ничтожества потребителя независимо от его квалификации, тоже мало кто понимает. А ещё эта личность помогла невероятно усложнить сам процесс разработки ПО и сделать его хрупким, как бисквитное печенье, но это понимают уже вообще считанные единицы. Дело в его системе контроля версий под идиотским и как всегда бессмысленным названием Git. Назвать систему контроля версий кода «ублюдком» мог только такой же. В чём сыр-бор? Сейчас объясню!
Не обижайтесь, но каждая особь Homo Sapiens ограничена. Не в умственном плане, а в плане ресурсов: в сутках только 24 часа, из них бодрствовать можно не больше 16, а работать не больше 8. Превысили это, и накапливается усталость и совершаются ошибки. Съесть и усвоить можно только определённое количество калорий в питательных веществах. Бесконечных сил, внимания и сноровки тоже ни у кого нет. Затрудните людям рабочий процесс, разорвите связи, запудрите мозги, замусорите рабочий стол (как физический, так и компьютерный), поднимите шум, привнесите в рабочее место отвлекающие элементы, и человек не сможет эффективно трудиться. Это неизбежно. Таковы все, и гении, и недоумки, и промежуточные стадии. Автор тоже таков, не исключение из правил. Короче, Git делает вид, что упрощает работу, но на самом деле всё наоборот. Делая вид, что ведение проектов с его помощью одновременно множеством команд и разработчиков — это плёвое дело, его автор оказал человечеству плохую услугу. Из-за его искусной, красноречивой лжи управленческий персонал систематически поручает одновременно больше, чем одному разработчику, менять одни и те же строки в одном и том же файле исходного кода и считает это новой нормой.
В какой бы команде, использующей Git, автору не приходилось работать, везде сотрудники фигуративно наступали друг другу на пятки и отдавливали пальцы ног, затирая взаимные изменения своими ветвями при слиянии. Не проходило недели, чтобы по кабинетам и залам не начинали носиться с выпученными глазами руководители, вопя, что в релиз попали ошибки из-за того, что кто-то неправильно объединил ветви при слиянии. Причина проста: с размаха соединить две пластиковые гребёнки так, чтобы каждая игла попала между противоположными, и нигде не попали две или ни одной, не под силу практически никому на свете. Именно таков процесс слияния двух ветвей, каждая из которых меняет один и тот же файл, причём часто одни и те же строки в нём, а ведь их иногда сотни и тысячи! Обязательно где-нибудь вкрадётся ошибка. Хорошо, если она приведёт к ошибке компиляции и будет сразу выявлена. А если нет, или проект не компилируется, а написан на интерпретируемом языке, как пресловутые PHP или Python, которые автор поносит на чём свет стоит во многих статьях этого цикла? Если же ошибка не приводит к остановке компиляции, а проявляется только в эксплуатации, то её и выявят только пользователи со временем. Хорошо, если они на этот момент не успеют потерять миллион или десять прибыли или выручки. Опять прикажете им рты затыкать?
Да, объективно процесс слияния в Git кажется легче, чем в других системах, но это впечатление обманчиво. В нём легко принять плохие изменения и потерять хорошие. Да, под него подставили подпорки в виде программ визуального тройного сравнения. Но на сложность процесса это мало повлияло, и тысячи команд по всей планете плодят ошибки уже после стадии разработки — на стадии слияния изменений. А всё потому, что Линус всех убедил, что это просто, и ему поверили. На самом деле внести ошибки на этой стадии проще простого, а вот гарантировать правильность каждой строчки кода, одновременно изменённой разными разработчиками, так же сложно, как и без Git.
Вы думаете, Линус хоть почесался, чтобы как-то облегчить человечеству эту задачу? Вы правильно подумали: ни ухом, ни рылом. Творение его рук, Git GUI — это тихий ужас. Разработчик пользовательских интерфейсов из Линуса, как та самая пресловутая пуля. Он сляпал неимоверно сложный интерфейс командной строки, наплодил запутанных файлов конфигурации и на этом всё бросил: кому надо, допилят. Хорошо, когда тебя прикрывают влиятельные спонсоры, не правда ли? Один редактор Git по умолчанию, vim, чего стоит! Он был разработан в 1976 году, когда у компьютеров было 16 килобайт памяти, и с тех пор не менялся. Идеальный выбор для 2го десятилетия XXI века, не правда ли? Это не привычный редактор с меню и полосами прокрутки, в котором удобно править текст, а система двух-трёхбуквенных команд, эдакая командная строка в себе.
Когда уже мы, человечество, прекратим верить на слово индустрии ИТ? Когда уже мы перестанем покупаться на их красивый лексикон, полный плохо понятных жаргонизмов и сокращений? Когда мы уже осознаем, что это скопище жадных, нечистоплотных, безответственных паразитов, едущих по инерции на величии Алана Тюринга, Дональда Кнута, Ады Лоулэйс, Питера Нортона, Лесли Лампорта, Брайана Кернигана, Дениса Ричи, Георга Строуструпа и других создателей потрясающе совершенного, производительного, компактного ПО, по сей день выполняющего заявленные функции без ошибок? Вместо этих звёзд теперь ИТ заполнена бесполезными образованными идиотами, плодящими ошибки и не только воротящими от них нос, но и агрессивно отбрёхивающимися от их исправления.
ПО не работает, как заявлено? Норма.
Документация не соответствует действительности? Сами исправьте и принесите нам на блюдечке с голубой каёмочкой.
Производительность ниже плинтуса? Да как ты смеешь такое городить, смерд?
Требуется безумный объём памяти? Да так и должно быть!
И вот мы приехали: в наши дни ПО стремится взять на себя 100% информационных услуг, и близко не будучи к этому готовым, а образованные идиоты, создавшие его, делают вид, что наступает вселенская гармония.
Образованные идиоты индустрии ИТ встали на путь деградации, когда отказались от графических пользовательских интерфейсов и поручили разношёрстным разработчикам и командам переносить их обратно на командную строку. Потеря способности разрабатывать качественные графические пользовательские интерфейсы произошла примерно между 2005-2010 годами, когда начался повальный отказ от них и переход на интерпретируемые языки. Звоночки звенели не переставая: PowerShell, WMI, msbuild, dotnet, Maven, Ant, Gradle, набившие оскомину PHP, Python, Ruby и прочая приблудная шелупонь, тот же Git и многое другое. Стройные, качественные, надёжные системы начали превращаться в груду мусора, подпираемую со всех сторон костылями, склеенными соплями и перевязанными туалетной бумагой, чтобы не развалились.
Компенсировали они за это нормализацией командной строки в популярной культуре, то есть скинулись деньгами на прогрев публики и разгон идеи. Чем более драматичное кинцо про великого хакера, тем больше и быстрее он там печатает на клавиатуре. При этом лишь внимательный и осведомлённый зритель замечает, что при этом он ни разу не исправляет напечатанное, как бывает даже с великими и опытными знатоками соответствующего языка. Персонажи не допускают ни одной ошибки. Да, да, упрощение. Да, да, не судите о жизни по кино. Но факт остаётся фактом: мысль о том, что хороший тот, кто много печатает, вдалбливается обществу. На самом деле хороший тот, кто курсором мышки менюшку на экране щёлкает, потому что ошибается с гораздо меньшей вероятностью, но это фу, непопулярная мысль.
Почему автор так настроен против командной строки? Элементарно, Ватсон! Её нужно помнить. Каждая следующая система приносит свой командный язык, который нужно осваивать, а главное — запоминать. С её появлением количество команд и их параметров растёт экспоненциально, и все их нужно держать в голове. Надёжность этого подхода стремится к таковой Джесса Пинкмана из «Во все тяжкие». Теперь все мы должны помнить регистр букв команд и параметров, сколько минусов перед ними ставить, в какие кавычки заключать значения и прочее бесполезное нагромождение знаний, нигде больше неприменимых и временных, как и автор вместе с его проектом.
В то же время разработчик системы, управление которой осуществляется через графический интерфейс, сам знает, как его ПО должно работать и как работает. Обычно это соотносится один к одному. Простой и интуитивный интерфейс пользователя позволяет ему выполнять свои обязанности, не тратя драгоценную память на запоминание кучи команд, аргументов командной строки и их значений, не нужных больше ни для чего и неприменимых больше нигде. Только идиот мог убедить себя и окружающих в том, что это правильный и перспективный подход, и этот идиот был несомненно высоко образованным. В своё время CISCO, маршрутизаторы которого управлялись исключительно с командной строки, пережил крах недаром: изо всех его товары были самыми дорогими в освоении и эксплуатации. Выжили примитивные, но обладавшие графическим интерфейсом. Это что-то, да значит.
Точно такой же образованный идиот изобрёл нелепый термин «разработчик полного цикла». Это тот, кто одинаково посредственно знает все слои ПО плюс кое-как системное администрирование, но именно о таких мечтает индустрия. Соблазн получить готовый продукт, затратив 1/3 или даже 1/4 ресурсов, непреодолим, а то, что продукт будет и на треть или на четверть от практически достижимого качества, никого не пугает: пользователь и так утрётся, а микросервисы в контейнерах в облаке всё вытянут. То, что ни облако, ни контейнеры, ни микросервисы на самом деле не нужны, больше никто не знает.
Требование разработчикам знать контейнеризацию и оркестрирование контейнеров столь же нелепо: это задачи не для разработчика. Это системное администрирование, причём невысокого уровня полёта: так, для мальчика-эникейщика на побегушках, но нет, это должен знать тот же работник, который пишет посредственные интернет-страницы в какой-нибудь системе React, Angular, Vue или с другим столь же бессмысленным названием, позорные стили для них в CSS (пожатые в Less), кривые подпорки на JavaScript, жутковатый средний слой на Python или Ruby, едва ворочающиеся хранимые процедуры на PG/SQL и кучу костылей, чтобы всё это срослось. Заворачивать это в Docker контейнеры и рулить ими через Kubernetes (шиз название, не так ли?) будет тоже он. А, вот, почему! Потому что, кроме него, там сам чёрт ногу сломит.
Посидите некоторое время в кабинетах или залах небольших организаций, выживание которых зависит от того, насколько их продуктами доволен пользователь. Там вы услышите такие слова, которые давно забыты в блистательных кругах разработчиков бесплатного ПО с открытым кодом или в организациях-монополистах рынка. Например, там постоянно слышится «совместимость с браузерами», «порядок табуляции», «обратная совместимость», «цветовая кодировка», «всплывающие подсказки», «требования к ресурсам», «время отклика», «разумные начальные значения», «параллельная обработка» и другие, вызывающие нервный тик и истошный визг у рыцарей в сияющих доспехах. Эти организации тихонько вымирают по мере того, как их «дешёвые аналоги» заполоняют рынок. Мы все замечаем это, когда очередной хороший продукт исчезает, и его заменяет нечто непотребное.
Однажды автору пришлось сообщать одной из таких команд неприятную истину, что их ПО в эксплуатации не помещается в разумный объём памяти, и он имел неосторожность сравнить его с требуемым Windows 10. Ответом ему было, что их продукт выполняет гораздо больше функций. Слова несомненно гениального разработчика, но при этом образованного идиота. Он всю свою короткую карьеру проработал под ОС Linux, используя вышеупомянутые приблудные языки, чтобы пилить свой продукт, и представления не имеет, о чём плетёт, но это его не останавливает: главное в данный момент — это отбрехаться, чтобы пользователь заткнулся и, смущённый величием разработчика и сиянием его нимба, продолжил молча довольствоваться предоставленным ему ПО. В его голове не укладывается, что пользователь может знать гораздо больше, а именно, как дела обстоят на самом деле.
Что в их продукт включён PostgreSQL? Молодцы! А в Windows MS SQL встроен. Бито.
Что у них сотня страниц на Ruby вертится? Так и в Windows есть встроенный HTTP сервер, и я не про IIS. Бито.
Что у них какой-то программный интерфейс? А в Windows их десяток, другой. Бито.
Таких мыслей образованные идиоты не допускают. Даже тот факт, что в штате Microsoft уже десятилетия состоят десятки тысяч сотрудников, а в их организации, возникшей всего несколько лет назад, всего пара дюжин, не способен затмить сияние чистого разума: они в своём проектике великие, и всё тут. Арифметика — очевидно лженаука, и то, что переплюнуть глобального монополиста рынка ИТ по выпуску ПО не в человеческих силах за обозримое время, их нисколько не смущает.
Когда уже мы трезво взглянем на маркёра и увидим, что это воинственно невежественная обезьяна с гранатой? Когда уже мы поймём, что на сообщение о том, что ПО зависает, ответ «оно не должно зависать» неподходящий? Это очевидно и тупому, но мысли о том, что раз к разработчику обращаются, то это нештатная ситуация, в которой вероятно виноват только он, ему в голову не приходит. Он уверен, что может в первую очередь отбрёхиваться и лишь в последнюю начинать думать. Кто убедил их всех в их собственной непогрешимости и непогрешимости их программного кода? Кто убедил их в том, что все упрёки в неработоспособности ПО надо прежде всего отрицать, а пользователя дискредитировать, третировать, порицать и изгонять? Кто сказал им, что так будет лучше? Ладно, это трудный вопрос, а вот лёгкий: с чего они поверили? Поверить мог только идиот, потому что в реальной жизни это так не работает. И ладно бы они были неучами, но ведь нет: они получили прекрасное образование. Образованные идиоты заполонили индустрию ИТ и требуют, чтобы все взаимодействия человечества впредь обслуживались только их ПО, которое автор и другие специалисты постоянно ловят на ошибках и недочётах. Бегите, глупцы!
Свидетельство о публикации №226101901705