Опыт, сын ошибок нудных, и гений, перекосов друг
Разработка программных продуктов как правило начинается с двух основных сценариев: или некий программист рождает идею, пишет прототип, подкатывает к инвесторам и получает финансирование, или же некий предприниматель рождает идею и находит готового взяться за неё программиста. В любом случае у истока стоит некий условный программист. В одиночку сделать что-то масштабное сложно, поэтому в обоих случаях дальше начинается найм ещё больше программистов, администраторов, и т.д. Его уже осуществляет как правило отдел кадров, которому задачу ставит самый старший программист, от которого ожидается, что он знает, кто нужен проекту или организации.
Общим для всех таких сценариев является формулировка, которую кадры передают дальше агентствам по найму: кандидат с таким-то опытом. И вот тут-то все участники вставляют палку в колёса своего велосипеда и летят головой вперёд через руль, жевать песок, потому что опыт не гарантирует вообще ничего, а потребность в нём существует не от хорошей жизни. Одной из главных причин, по которой подавляющее большинство тех, кто участвует в процессе найма сотрудников в сфере ИТ, обманывают себя и окружающих, считая, что опыт необходим, является повальное использование т.н. бесплатного ПО с открытым кодом. Как я уже писал в предыдущих статьях этого цикла, именно оно является кандалами на ногах человечества и камнем, тянущим его в глубину.
До некоего момента, примерно 30 лет назад или около того, бесплатное ПО было мало распространено, а вот коммерческое ПО доминировало и было хорошо, качественно, подробно документировано. Тома документации на средства разработки, библиотеки, операционные системы и т.д. не просто сопровождали носители, с которых они устанавливались, но и содержали т.н. список выявленных ошибок и адреса и телефонные номера для сообщений о таковых. И да, представьте себе, производители устраняли их оперативно и качественно. К чему я это? Да к тому, что разработчикам на тех языках и библиотеках не требовался опыт. По ним существовали учебники, и достаточно было окончить профильный ВУЗ и ознакомиться с документацией, и вот вам готовый к работе программист.
Дальше всё изменилось. Индустрия начала стремительно соскакивать на бесплатные продукты с открытым кодом, у которых документация скупа, отсутствуют примеры, а главное, количество ошибок зашкаливает, и устранять их никто не спешит. Образование стало бесполезным, но потребовался опыт, потому что только с его помощью теперь можно освоить технологии и продукты. И вот уже пару десятилетий планета нанимает сотрудников практически только на основании опыта. Теперь кандидат должен обязательно проработать столько-то лет в такой же отрасли, должности, проекте, и с такой же именно технологией, как ожидает наниматель. Иначе кандидат не годится. Требуются орды безработных или низкооплачиваемых кандидатов в разработчики, чтобы иметь возможность среди них найти нужную комбинацию.
Человечеству бы задуматься и вспомнить, что разработка ПО на 99% состоит из правильного воплощения требований хозяйственной деятельности организации и лишь на 1% из чисто технологических вопросов. Важно не то, как долго проработал конкретный сотрудник с конкретным языком, библиотекой, протоколом, форматом или чем там угодно, а как внимательно он относится к требованиям заказчика, насколько аккуратно и добросовестно формулирует их в коде, и как вдумчиво он умеет читать и анализировать чужой код и документацию. Если задуматься, то у нас внезапно формируется образ человека с высоким интеллектом. А вот это требование почему-то отвергнуто практически всеми нанимателями и их агентами по найму.
К чему это нас привело? К многомиллиардным а то и многотриллионным затратам всей планеты на изобретение велосипеда путём создания схожих но разных технологий и продуктов и на неизбежно вытекающее из этого многократное обучение и переобучение работников сферы ИТ схожим но разным технологиям. Про разброд и шатание в отрасли я уже писал.
C++ этих бунтарей не устроил, придумали Rust.
Fortran не устроил, придумали Haskell.
Java их не устроила, придумали Kotlin, Scala и Golang.
C# их не устроил, придумали F#.
Perl их не устроил, придумали PHP, Python, Lua и Ruby.
JavaScript их не устроил, придумали Jquery, Angular, React, Vue и Ember.
Про базы данных лучше не начинать, страницы не хватит.
Пытались замутить XML, не устроило, перешли на JSON.
Websphere MQ не устроила, напридумывали RabbitMQ, Kafka, ApacheMQ.
Продолжать можно до бесконечности.
Каждый раз про следующую инкарнацию того же самого врут, что он/она/оно простой, эффективный, современный, приспособленный, и т.д. Ничто не может быть дальше от истины, потому что для начала его нужно освоить, когда уже освоен предыдущий вариант. Человечеству бы вытащить первого пере-изобретателя подобного мусора на площадь и отрубить руки, чтобы неповадно было, но нет, все только рукоплескали, и вот теперь по планете ходят и сидят за клавиатурами поколения разработчиков, убеждённые в том, что необходимо тащить этот мусор в свои проекты, чтобы резюме выглядело привлекательно. Вчитайтесь, это важно!
С точки зрения нанимателя, невозможно приобрести опыт никаким образом, кроме как поработав с какой-то технологией или продуктом на рабочем месте. Образование их не устраивает. Следовательно, единственным выходом для кандидатов становится именно то, что я написал выше: убеждать руководство и заказчиков, что необходимо добавлять новомодные технологии в существующие проекты, заменяя часть компонентов и решений на выполненные на других языках, библиотеках, продуктах и в других форматах и т.д. Без расслоения и дробления уже ведущихся проектов они не смогут продемонстрировать опыт своим будущим нанимателям. Сами наниматели и заказчики идут на поводу у работников и облегчают им переход на другие работы, соглашаясь превратить свои стройные и контролируемые проекты в цыганский табор и цирк Шапито с хромым пони и фальшивой египетской мумией.
Не существует технических проблем. Существуют только организационные препятствия, мнения и решения, принятые руководством. Об этом я говорю уже 30 лет, и история каждый раз подтверждает мою правоту. Ни у каких проверенных и надёжных решений нет изначально заложенных препятствий к прогрессу. Ни один классический язык программирования не содержит элементов, препятствующих воплощению идеалов поклонников всего новомодного. Просто в нём ещё нет библиотеки, которая воплощала бы их желания. Вместо «разрушим до основанья, а затем» можно создать эти библиотеки, пользуясь существующим фундаментом и инструментарием, но это не модно, не прогрессивно, и главное, льёт воду на мельницу существующих организаций, а не позволяет растолкать их и пробиться на рынок. Ах, так вот что тут главное! Так вот откуда ноги растут!
Покупаясь на цветастые лозунги и транспаранты, которыми размахивают создатели и сторонники новомодных технологий, работники сферы ИТ всей планеты соглашаются разбазаривать средства, заработанные сотрудниками их организаций, занятыми основной деятельностью, а затем они соглашаются на это ещё раз, когда бросаются искать разработчиков с опытом работы с этими новомодными технологиями. Через это они разбазаривают доходы и сбережения потребителей, и так уже почти обанкротившаяся планета топчется на месте, находясь под ошибочным впечатлением прогресса.
Для примера сделаем краткий экскурс в историю. Существует технология Common Gateway Interface (CGI). В своё время CGI подвергся острой критике и был практически забыт, за то что якобы представлял угрозу безопасности интернет-серверов, как в своё время Java Applets, «приложеньица» на языке Java, обвиняли в угрозе безопасности пользователей. С него соскочили кто на что: на VB и C# .NET, Java, PHP и т.д. Но вот по одному показателю CGI, написанный на таких языках, как C/C++ или Delphi, существенно опережал все остальные технологии. Это была производительность. И что вы думаете? Да, большинство соскочило с CGI, но только не, например, Google, который молча и незаметно сидел на этой технологии ещё лет 10. И он был не одинок. Там, где производительность имеет решающее, критическое значение, старое и проверенное решение прижилось. А потом тихой сапой его вытащили с пыльных задворок истории и применили, например, для ускорения позорно тормозившего PHP, родив FastCGI. Неловко получилось, правда?
Спросите большинство работников отрасли, пришедших в неё за последние 10-15 лет, какие самые перспективные технологии и решения должны применяться в разработке интернет-серверов, и на вас посыпется стандартный набор из микро-сервисов, контейнеризации, Python, Ruby, Node.js и прочей непотребной шелухи. Но зайдите в отделы разработки и поддержки организаций, ответственных за проведение большей части мировых финансовых и иных транзакций, и вы внезапно увидите там экраны классических страниц ASP и код приложений на VB6, Visual C++ и старые версии Java 1.4-1.8 или .NET 4. Я уже не говорю про COBOL и RPG. Эти люди тихо и без помпы помогают своим нанимателям и их клиентам зарабатывать огромные деньги, все десятилетия, пока орды легковерных простаков ломают копья по поводу всей этой жути-мути с непотребными названиями.
Устал повторять: у человечества имеется проблема. У него заканчиваются минеральные ресурсы, пропускная способность всех видов транспорта на пределе, назревает катастрофа в области чистоты критических ресурсов, как вода и воздух, и политическая обстановка практически везде накалена до предела, за которым только стеклянная пустыня. Мы что, серьёзно считаем, что всё настолько прекрасно, чтобы позволить себе дробить наши ИТ проекты на факториал количества приведённых выше языков программирования, библиотек, технологий, и т.д. плюс ещё вагон и маленькая тележка? Это число сравнимо с количеством электронов во вселенной. Какова вероятность найти кандидата, у которого есть именно нужное сочетание опыта работы из такого количества комбинаций? Серьёзно? Вместо двух специалистов, например, по языку Java и базе данных Oracle или другого по языку C# и базе MS SQL, мы очень хотим и согласны нуждаться в дюжине, другой по мешанине из конкурирующих новомодных технологий, которые, как библейские строители вавилонской башни, не понимают друг друга?
Внимательный читатель обратит внимание, что их ещё и нанять непросто! Нанимателям и агентам по найму нужно хоть в какой-то степени, хоть капельку быть знакомыми с этим зоопарком технологий, чтобы отсеивать шарлатанов и самозванцев, приукрасивших свои резюме в надежде на лёгкую наживу. И вот ряды агентов разбухают, изымая из продуктивной экономики тех, кто могли бы трудится, а вместо этого превращаются в очередных паразитов на комиссии. Сравните это с простотой найма по принципу получения официального диплома или учёной степени об образовании в конкретной области. Таких даже интервьюировать практически не нужно: просмотрел листок с оценками, задал пару вопросов, годен или не годен. Сравните это так же с необходимостью прочтения и осмысления резюме длиной в несколько страниц, только чтобы убедиться, что имеются требуемые 10 лет опыта работы с дюжиной технологий!
И вот, как все искусственные образования, паразитирующие на обществе и не дающие ничего взамен, практика набора сотрудников по опыту работы догоняет общество, кусает его за ногу и заражает бешенством или столбняком. Так часто бывает в разрушающихся обществах: появляется и растёт прослойка паразитов, стремящихся использовать одни красивые слова, чтобы награбить как можно больше и как можно быстрее, чтобы набить пачками денег матрас на чёрный день. Со всеми вытекающими.
И опять, как и во многих других случаях и областях деятельности, человечество занято второстепенным и несущественным, демонстрируя полнейшую неспособность сосредоточиться на важном и главном.
Свидетельство о публикации №226021200090