Парадокс бабла
adolfstallmanУдивительно, но есть люди, которые всерьез считают, что программисты зажрались. Не готов ни подтверждать, ни опровергать, думаю, здесь все и без меня очевидно, меня беспокоит другое популярное заблуждение.
Многие коллеги думают, что в индустрии все хорошо, потому что у них на банковском счету все хорошо, в первую очередь. Давайте попробуем самостоятельно оценить, так ли это.
По моим наблюдениям, в нынешнем десятилетии разработка ПО характеризуется следующими особенностями:
- движение вперед происходит очень быстро (гораздо быстрее, чем в 2003-м);
- рынком предложен некий кажущийся разумным компромисс для определения понятия "качественный продукт" (бизнес готов мириться с потерей качества до последнего, см. "Boeing-737 MAX");
- на рынке труда выстроена целая иерархия потребностей и предложения (см. "ebanoe.it");
- процесс производства ПО унифицирован, дальнейшие попытки его улучшить уже десять лет порождают дискуссии вида "мой скрам лучше твоего канбана" и "эджайл манифест был не про это";
- целые классы ПО и целые направления по его созданию коммодитизированы, то есть являются массовыми продуктами общего назначения, как кеды Converse, смартфоны Xiaomi или презервативы "Гусарские";
- первая волна коммодитизации, инициированная Microsoft, Oracle, Cisco и другими крупными игроками так называемого "Enterprise-рынка", не достигла желаемого результата полностью (тем не менее, нельзя утверждать, что она провалилась).
При дальнейшем рассмотрении феноменов, связанных с современным состоянием рынка разработки ПО, я буду опираться на труды Пола Грэма, Дэниэла Пинка, Бориса Белокурова и царя Давида.
Одним из популярных (и довольно травмирующих) заблуждений является миф о том, что программисты в частности, как и STEM-специалисты вообще, являются слабо социально адаптированными людьми. В программах современных конференций часто встречаются доклады о важности soft skills в жизни инженера-разработчика ПО.
В трудах мыслителей прошлого, таких как "Wasserman's revenge" неизвестного автора и "Why nerds are unpopular" Пола Грэма, убедительно показано, что непонимание между "нердом" и социумом проистекает из фундаментального различия взглядов на мир, - в подростковом возрасте нерды взрослее своих сверстников (внимательный читатель может сослаться на ненаучный характер данного утверждения, но мне, откровенно говоря, до пизды). Популярные эксперименты с крысами, моделью застройки клетки в стиле района "Кудрово" и кокаином показывают, что, стоит переселить "нерда" в комфортную среду (нет, я не имею в виду опенспейс), как проблемы социальной адаптации исчезают (как и многие другие проблемы). Тем не менее, идея обеспечения рабочей силы комфортными условиями труда находится в прямом конфликте с целями и задачами многих и многих управленцев.
Итак, поскольку "опенспейс" из граничных условий убрать нельзя, а soft skills, как нам в субботу объяснят с большой сцены ITGM, "необходимы", мы опять имеем перекладывание проблемы с плеч работодателя на плечи работника.
Еще один парадокс состоит в том, что, хотя и принято декларировать постоянно возрастающую потребность современного общества в квалифицированных IT-кадрах, мы наблюдаем глубочайший кризис как традиционных методов обучения, так и большинства новых подходов, таких как "обучение онлайн на Coursera" и "участие в буткэмпах за деньги обучающегося" (последние два подхода имеют потрясающе низкую эффективность, несмотря на относительную свежесть идей). Постулат, выраженный, в общих чертах, как "правило 10000 часов", требует выработки в долговременной памяти обучающегося устойчивых нейронных связей, репрезентующих доменную модель (для тренировки попробуйте описать своими словами процесс загрузки компьютера от момента включения кнопки питания до появления подсказки "login"). Взрослому человеку, объективно не обладающему любознательностью и свободным временем подростка, крайне сложно убедить свой мозг в необходимости изнурительных тренировок (а, поверьте мне, мозгу все равно, Ansible, Haskell или VBA вы в него пытаетесь запихать, - если у вас нет ментального представления доменной модели, вам будет больно).
Весь предыдущий абзац можно вкратце выразить следующим образом: "Дорогой 'длинный хвост' непрофильных специалистов! Вас никто не умеет, не хочет и не будет с достаточным качеством учить! (кроме Кирилла Мокевнина, но это не точно)".
Сформулированный Полом Грэмом "парадокс Блаба" является, по сути, неоскорбительной переформулировкой сути эффекта Даннинга-Крюгера (а заодно и выражением гипотезы Сепира-Уорфа применительно к языкам программирования) - он утверждает, что инженер-разработчик на языке "Блаб" может осознанно замечать только отличия языка Блаб от языков, выразительность ("мощность", "набор парадигм") которых меньше или равна выразительности самого языка Блаб. В практическим применении, если разработчик - не лиспер, то он не понимает, что ему в его пайтоне может дать гигиеничность макросов или гомоиконичность (кстати, что это?), а если некто не обзавелся интуитивным представлением о монадах, то ему и if err != nil норм.
Я позволю себе пойти дальше и сформулировать парадокс бабла: если некто (а также его или ее девушка, собака, секретарша и садовник) зарабатывает путем применения своих недюжинных способностей в сфере разработки ПО устраивающее его или ее количество денег, то, значит, он или она находится на верном пути, знает, как надо, искушен(а) в процессах разработки, выбора инструмента и подбора персонала, а далее - хоть трава не расти.
Достаточное количество денег на банковском счету является извиняющим и обосновывающим фактором для любых утверждений, например:
- надо просто слушать запросы бизнеса;
- я умею решать конкретные проблемы конкретных кастомеров;
- язык программирования в наше время уже не важен;
- мы будем писать на PHP (Ruby, Python, Golang, vanilla JS), потому что так мы всегда найдем разработчиков;
- ученые совершенно оторваны от реальной жизни.
Целью данного эссе не является обсуждение или опровержение каждого из этих постулатов по отдельности, кроме того, как показывает практика, на апологетов этих догм не действуют никакие увещевания, поскольку их величества Бизнес и Банковский Счет могут предъявить аргументы в твердой валюте, моей же целью не является выяснение того, чья рыночная стоимость длиннее.
Вместо этого я хотел бы поговорить про энвиронментализм. У меня есть знакомые европейцы, которые не едят мяса не потому, что мясо - грубая еда, засоряющая чакру Кундалини, а потому, что промышленное производство мяса крайне негативно сказывается на окружающей среде. Мне это кажется еще одним уровнем пирамиды Маслоу, где вместо "самореализация" написано "подумай о чем-нибудь, кроме своего кармана".
Один мой русскоязычный коллега несколько лет назад отказался продолжать работу в финтех-компании, занимающейся криптовалютами. По этическим соображениям, - потому что он не хотел работать на развитие технологии, которая позволяет купить вещи, находящиеся за рамками зоны действия традиционных регуляторов, например, живого ребенка (с его слов, сам я не очень в курсе, можно за биткойны покупать дете, или же нет). У меня лично финансовый вопрос не был тогда закрыт, не закрыт он и по сей день, - поэтому жизнь толкает меня на компромиссы, но я уважаю тех, кто на компромиссы не идет.
В моем балансе жизни и работы почти отсутствует жизнь (но это не потому, что ее нет (привет ребяткам с ebanoe.it, которые врут напропалую о наличии какой-то "жизни" (почему-то, в основном, половой) за пределами обсираемой ими профессии), а потому, что мне не интересно). Мне не интересен отдых в Турции, мне не интересна машина, у меня достаточно детей и квартир. Мне интересно уметь делать сложные вещи. Вообще, дорогие коллеги, мы с вами делаем довольно сложные вещи.
Когда человеку интересно уметь делать сложные вещи, он естественным образом начинает задумываться о качестве создаваемого им. Я прочитал "Дзен и искусство ухода за мотоциклом" уже в достаточно зрелом возрасте, и меня поразила эта книга, она - гимн тому, что я эмпирически определяю как "инженерная деятельность". Она целиком посвящена понятию качества.
В индустрии разработки ПО интересующиеся вопросами повышения качества рано или поздно сталкиваются с результатами деятельности Бертрана Майера, отца контрактного программирования, потом, если у них жена не просит новую шубу, - с результатами деятельности Саймона Пейтона-Джонса, а потом и до seL4 дело, возможно, доходит. В процессе сначала выясняется, что нет, не все языки программирования одинаковы, как бы некоторым этого ни хотелось. Потом выясняется, что программисты на Perl - вовсе не такие уж дураки (главное, с ними лично не общаться, чтобы сохранить это впечатление), и что про программистов на Java, PHP, Ruby, C, C++ и JS ничего хорошего сказать, в среднем, нельзя. Далее становится ясно, что работы у человечества еще огромная прорва, и искусственный интеллект нас не заменит до конца никогда.
У меня есть мечта, что настанет день, когда нам не придется больше писать Spring Boot-based application, реализуя пожелание "сделать отказоустойчивый MySQL в двух датацентрах". И зацветет миндаль, и отяжелеет кузнечик, и рассыплется каперс. И P будет равно NP. И в "nginx--" решат проблему C1B.
Я часто слышу, что программисты, поганцы этакие, удовлетворяют собственное любопытство за счет работодателя. Но мы делаем это, потому что прогресс не идет линейно, я имею в виду как прогресс всего человечества, так и взросление и развитие одного конкретного профессионала. Чтобы понимать, в какую сторону двигаться, надо набить шишек, много раз упав.
В России нет культуры признания ошибок. В России нет уважения к ошибкам. В России нет стратегического планирования длиной более чем в три года. В России стремительно разрушается система образования. Сколько на предстоящем глобальном митапе будет докладов на английском языке, кажется, девять из шестидесяти?
Никто не обещал, что прогресс вообще обладает отрицательной обратной связью. Наоборот, в Откровении Иоанна Богослова написано совершенно иное.
Написание веб- и мобайл-микросервисов на языках пайтон и гоулэнг является относительно безопасным способом встретить старость, если у вас, конечно, есть удовлетворительное объяснение смысла вашего нахождения здесь, но я бы хотел, по возможности, не только избежать для себя такой судьбы, но и многих других отговорить от подобного времяпрепровождения.
Несмотря на очевидную левизну высказываемых автором идей, я прошу читателя воздержаться от огульной критики только на основании политических атрибуций. В конце концов, "левак" - это не "либертарианец", "ребенок", "инфантил" или "шимпанзе". "Левак" - это человек, который не один раз уже проиграл, и, видимо, бессчетное количество раз еще проиграет.
Но я, хотя бы, попытался.