В наши дни кажется, что все, что вам нужно, это подписаться на Twitter или выступить на TEDx, чтобы назвать себя футурологом. Но Тим О’Рейли — основатель легендарной компании по обучению технологиям O’Reilly Media — не такой гуру. Его вдумчивые наблюдения за тенденциями в области вычислительной техники и его защита открытого исходного кода (задолго до того, как это считалось модным) придают ему должный уважительный ореол.
Поэтому, когда Тим О’Рейли недавно прокомментировал будущее индустрии программного обеспечения, профессиональные разработчики обратили на это внимание. Вот что он сказал:
Я думаю, что золотой век последних двух десятилетий, когда вы могли стать программистом и получить работу… в некотором смысле закончился. Программирование теперь больше похоже на умение читать и писать. Просто нужно уметь это делать.
Звучит достаточно логично. На самом деле, вы, вероятно, слышали и другие версии аргумента «сегодняшние элитные навыки программирования — это базовая компетенция завтрашнего дня». Но действительно ли это отражает будущее индустрии программного обеспечения?
Программирование как грамотность
Трудно спорить с тем, что код — это новая грамотность. Даже если вы не планируете писать собственное программное обеспечение, есть реальная ценность в понимании того, как работает программа. Даже непрограммисты могут использовать базовые навыки, необходимые для создания веб-сайта, делать выводы из массивов данных или автоматизировать простые задачи. И кто не проводит дни в теплых объятиях алгоритмов Google, Facebook или YouTube? Программист или нет, понимание того, как работают машины вокруг нас, как они формируют нашу жизнь, является ценным навыком.
Идея о том, что программирование является частью грамотности нового типа, что оно со временем превратится из почти магической силы в обычную человеческую практику, — не новость. Но есть основания подозревать, что все не так просто. В конце концов, всего десять лет назад мы также говорили о научной грамотности с целью дать рядовым гражданам знания, необходимые для принятия решений и выбора лидеров, которые могли бы проложить разумный курс в быстро меняющемся мире. Но обещания научной грамотности не оправдались. Сегодня средний человек в значительной степени полагается на современную науку, но он ничего не понимает или в нее не верит — от компьютеров (квантовая механика) до вакцин (генетика) и GPS (общая теория относительности). Если научная грамотность — это цель, которая никогда не была достигнута, можем ли мы действительно ожидать, что грамотность в области программирования постигнет лучшая участь?
Сторонники движения за программную грамотность отмечают, что чтение и письмо начинались как специализированные навыки, и потребовались годы, чтобы они распространились от ученых к населению в целом. (Если бы в 1620 году вы предсказали, что через несколько сотен лет даже самый простой человек сможет написать грамматически связный пост на Facebook, вы бы показались диким мечтателем.) Но есть разрыв между умением писать и быть писателем. Есть разрыв между изучением науки и тем, чтобы стать ученым. И есть разрыв между пониманием основ кода и обучением самостоятельному построению сложных систем.
Наши усилия по повышению грамотности в программировании на удивление мало подходят для подготовки будущих программистов. Фактически, мы часто уводим новичков от искусства программирования в крошечные ограниченные песочницы. В прошлом эти песочницы представляли собой макросы Excel и (если у вас были немного большие амбиции) Visual Basic и Access. Теперь это Power Apps. Чем больше меняются вещи, тем больше они остаются неизменными — если вы хотите стать профессиональным программистом, вам все равно нужно отклоняться от стандартного образовательного пути.
Современное образование снизило планку грамотности. Но это не изменило определение того, что значит быть профессиональным программистом.
Сколько стоит кодер?
Другая сторона комментария Тима О’Рейли более тонкая. Проще говоря, если программная грамотность растет, угрожает ли это привилегированному месту программистов в рабочей среде?
Люди заявляют о коммодификации, превращении программирования в товар, как минимум два десятилетия. Некоторые из сегодняшних программистов помнят, как их просили изучать что-нибудь более ценное, например математику, потому что разрыв в навыках программирования был близок к сокращению.
Но есть и обратная сторона: предсказание без временной шкалы на самом деле вовсе не предсказание. Сегодня у нас больше программистов, чем когда-либо прежде, и есть армия иностранных рабочих, стремящихся удовлетворить наши ИТ-потребности. Недостатка в программистах нет. Но не хватает квалифицированных программистов. И этот дефицит оказался на удивление долговечным. Даже несмотря на то, что мы расширили традиционное образование (продвигая предметы STEM глубже в учебную программу) и нетрадиционное образование (с взрывным ростом буткампов для начинающих), нехватка квалифицированных разработчиков осталась неизменной. По текущим оценкам, нехватка талантливых программистов в ближайшие годы будет только расти.
Легко предположить, что нехватка квалифицированных программистов отражает недостаток опыта в новых и появляющихся технологиях, таких как машинное обучение и аналитика больших данных. И хотя действительно, разработчики в этих областях пользуются большим спросом, похоже это не тот источник дефицита. Не хватает квалифицированных разработчиков среднего уровня. Это люди, которые владеют основами программирования, но также понимают эффективную командную работу, сотрудничество и обладают другими софт-скилами.
Квалифицированные разработчики среднего уровня сочетают навыки программирования с менее поддающимися количественной оценке навыками, такими как способность анализировать большие системы, решать реальные проблемы, управлять проектами и общаться с заинтересованными сторонами.
В будущем новоиспеченные программисты могут столкнуться с трудностями при поиске работы, в зависимости от их местного рынка труда и своего портфолио. Но опытные разработчики останутся ценным ресурсом на десятилетия. Даже появление инструментов генерации кода на основе искусственного интеллекта не заменит эксперта, который сможет работать на стыке кремниевой реальности и реального мира.
Станут ли когда-нибудь навыки программирования настолько распространенными, что программисты потеряют свою ценность? Возможно, но сегодня мало что говорит об этом. Более правдоподобный прогноз заключается в том, что любой, кто занялся программированием в поисках легких денег, вероятно, сгорит, прежде чем получит опыт, необходимый для того, чтобы добиться успеха.
Рассвет нового золотого века
Цитата Тима О’Рейли намекает на будущее, в котором навыки программирования не станут залогом успешной карьеры. Но что, если золотой век вычислительной техники — это не легкие деньги и не гарантированное получение работы? Что, если наша потеря на самом деле менее важна, чем то, что мы приобрели за полвека разработки программного обеспечения?
За прошедшие годы программирование становилось все более сложным. Но в то же время нас осыпали благами — IDE, которые отлавливают ошибки, компьютеры, которое компилируют код за секунды, фреймворки, автоматизирующие рутинную работу в обычных задачах, таких как проверка ввода и сортировка списков. Я до сих пор помню дни, когда программистам приходилось самим искать информацию, и правильная книга на такую тему, как Windows API, носилась по офису и читалась до тех пор, пока у нее ломался переплет.
Сегодня, с появлением веб-сайтов с бесплатными учебными пособиями, курсами YouTube, стримерами в Twitch и StackOverflow, барьеры для входа практически исчезли. Вместо стены тайных знаний, отпугивающей новичков, теперь у нас есть сообщество экспертов, которые приглашают новичков и готовы поделиться своей работой над проектами с открытым исходным кодом. Если мы определим золотой век на основании препятствий, мешающих нашим идеям, то сейчас — золотой век.
В истории не было времени, когда было бы проще превратить идею в программный проект и поделиться им со всем миром.
Мы не можем сказать, когда закончится золотой век, но одно можно сказать наверняка. Двери королевства по-прежнему открыты настежь.