В последнее время стали появляться статьи, настойчиво зазывающие обывателя окунуться в волшебный мир программирования. Думаю, это связано с тем, что крупным производителям софта, от смартфонов до web-приложений, хочется видеть своих пользователей более технически подготовленными к светлому IT-будущему. Производители курсов программирования радостно поддерживают это начинание. А вот многие программисты относятся к этой идее весьма скептически. Не смотря на то, что в преддверии летних каникул я, в наивной попытке "сделать из обезьяны человека", подарил своему 14-летнему племяннику книгу "Программирование для детей", я тоже отношусь к лагерю убеждённых скептиков. На Geektimes уже публиковалась заметка, пытающаяся опровергнуть тезис "Coding is fun", но не смотря на правильный заголовок, аргументы в ней, на мой взгляд, были приведены весьма сомнительные. Поэтому, когда мне попалась статься "Coding is not ‘fun’, it’s technically and ethically complex ", я не смог противиться желанию ею поделиться. Правда во второй части статьи автор немного сгущает краски, но и в этом драматизме мне видится рациональное зерно.
Программирование — что может быть проще! По крайней мере ИТ-гуру с мировым именем пытаются нас в этом убедить. От обещания Code.org "Научиться может каждый!", до выражения генерального директора Apple Тима Кука, что программирование — это "весело и интересно", все пытаются убедить нас, что искусство и наука создания программ являются теперь такими же доступными, как алфавит.
К несчастью, эта картина в розовых красках имеет мало общего с действительностью. Сам стиль мышления программистов чужд неофиту. Будучи глубоко аналитическим и творческим, он, в то же время, требует почти сверхчеловеческой сосредоточенности, необходимой для преодоления сложности поставленных задач. Маниакальное внимание к деталям является совершенно необходимым, любая неряшливость или неаккуратность — под запретом. Чтобы достигнуть такого уровня концентрации требуется состояние сознания, называемое "потоком", квази-симбиотическое отношение между человеком и машиной, повышающее производительность и мотивацию программиста.
Программирование не единственная сфера, требующая глубокой сосредоточенности. Но вы никогда не услышите, что нейрохирургия — это весело, или что проектирование зданий — это легко. Почему же, когда речь заходит о программировании, управленцы и технологи притворяются в обратном? Кому-то это помогает соблазнять людей переходить в новые сферы деятельности в эпоху, когда программное обеспечение (по словам венчурного инвестора Марка Андерсона) "пожирает мир", и таким образом расширять рынок рабочих рук, тем самым ставя под контроль рост заработной платы. Другая причина в том, что само слово "программирование" звучит так обыденно и так часто повторяется, словно существует некий волшебный ключик, который программисты механически используют для решения любой поставленной задачи. Голливуд только усугубляет стереотип, создавая образ "кодера" как асоциального бей-по-клаве-думай-потом хакера, непременно белого мужчины, наделённого способностью с лёгкостью разрушать планы нацистов и проникать в компьютеры ЦРУ.
Настаивание на гламурности и лёгкости программирования неправильный путь знакомства детей с компьютерными науками. Это оскорбляет их интеллект и зарождает в их головах пагубные представления, что для получения прогресса им не нужна учёба. Хотя любой человек с минимальными опытом разработки программного обеспечения знает, что за минутой стучания по клавиатуре стоит час обучения.
Стоит признать, что программирование сложно, как с технической, так и с этической точки зрения. Компьютеры, в данный момент, исключительно исполняют команды различной степени сложности. И разработчик должен ясно понимать: машина делает то, что ей сказано, а не то, что он подразумевал сказать. Всё больше и больше "решений" делегируется компьютерам, включая вопросы жизни и смерти: автомобили с автопилотом, полу-автономное оружие, Facebook и Google делают умозаключения о вашем семейном, психическом, физическом состоянии и продают эту информацию тому, кто больше заплатит. И не в интересах компаний и правительства поощрять наш интерес к тому, что стоит за этими процессами.
Все эти сценарии построены на изящных технических решениях. Но мы не можем реагировать на них, отвечая исключительно на технические вопросы. Программирование не является деталью, которую можно оставить на усмотрение "технарям", фальшиво притворяясь, что их решения будут "научно нейтральны". Общество слишком сложно, и алгоритмически и политически. Автоматизация уже лишила работы низкоквалифицированные кадры фабрик и складов по всему миру. Белые воротнички стоят в этой очереди следующими. Индустриальным гигантам завтрашнего дня потребуется только часть задействованных работников ИТ-гигантов сегодняшнего. Ирония судьбы состоит в том, что привлечение большего числа людей в программирование только медленно готовит почву к тому, что завтра они пополнят ряды безработных.
В более чем когда-либо запутанном и связанном мире, в котором программное обеспечение выполняет все более и более важную роль в повседневной жизни, безответственно говорить о программировании как о каком-то легковесном занятии. Программное обеспечение — не простые строчки кода, не безликие технические решения. Всего через несколько лет понимание сути программирования станет обязательной частью жизни активного гражданина. Идея, что программирование предлагает беспроблемные пути социального прогресса и персонального самосовершенствования, работает на руку растущим техно-плутократам, скрывающимся за собственными технологиями.