«Конец кода»: почему профессия программиста близка к вымиранию
фото: ideanomics.ru
Мир технологий переживает фундаментальные изменения, которые ставят под угрозу существование разработчиков ПО.
Я начинаю решать проблему, которая меня очень сильно волнует… Нужно ли мне учиться программировать, чтобы создать прототип? Нужно ли мне немедленно передать разработку на аутсорсинг? Нужно ли мне изучать компьютерные дисциплины? Эти вопросы задает себе каждый начинающий предприниматель. Еще в 2014 году мой решительный ответ в статье под названием «Нужны ли нам уроки информатики?» заключался в том, что изучать компьютерные науки нужно, или, по крайней мере, надо уметь программировать самостоятельно. Этот основной тезис звучал повсюду — от Билла Гейтса и New York Times до эстонского правительства, побуждавшего студентов учиться программированию.
И, возможно, это была хорошая идея в эпоху, когда облачные вычисления позволили двадцатилетним парням, у которых было подключение к интернету, создать Facebook. За последние десять лет программное обеспечение действительно поглотило мир, как заявили Бен Хоровиц и основатель Netscape Марк Андриссен в 2011 году: сегодня мы вызываем такси от Uber, смотрим фильмы на Netflix и заказываем еду при помощи DoorDash.
Четыре из пяти крупнейших компаний в Америке (по рыночной капитализации) — это технологические компании, выпускающие программное обеспечение. И в последние десять или около того лет казалось, что изучение информатики или, по крайней мере, «умение писать код» — это волшебный способ стать «следующим Марком Цукербергом».
Или, если со «стартапом и делом, изменяющим мир,» ничего не вышло, всегда можно выбрать относительно протоптанный и необременительный путь прямо из колледжа к шестизначной зарплате разработчика в технологической компании Кремниевой долины.
Что терять?
Вскоре появились буткемпы — курсы для программистов, такие как Flatiron School, General Assembly и Make School. Они обещали, казалось, невозможное — должность разработчика софта в Сан-Франциско всего через несколько месяцев обучения вместо четырех лет традиционного образования. К тому же с потоком венчурных долларов, льющимся в стартапы (в 2015 году было инвестировано $47,2 млрд), в высокотехнологичных компаниях всегда был избыточный спрос на разработчиков.
Но теперь кажется, что сам факт существования этих буткемпов доказывает, что разработка программного обеспечения быстро становится предметом массового спроса… В конце концов, если не-инженер может научиться разработке программного обеспечения за три месяца, почему эта работа не может быть переведена в офшоры или даже автоматизирована?
Похоже, что мир технологий переживает фундаментальные изменения. По словам основателя AOL Стива Кейса в The Third Wave, «вторая волна технологий» 2000-х и 2010-х годов, основными символами которой были такая социальная сеть, как Facebook, такая поисковая система, как Google, и такая компания, предоставляющая услуги программного обеспечения, как Salesforce, уступает место проблемам, которые не могут решаться использованием только «кода». Эти новые проблемы создадут новую волну стартапов, которые будут строиться в первую очередь на управлении информацией, в значительной степени регулироваться правительством, укоренятся в физическом мире и таких отраслях, как сельское хозяйство, образование и финансы.
В результате этой трансформации может случиться то, что Джейсон Танц в своей статье в мае 2016 года «Скоро мы не будем программировать компьютеры, мы будем дрессировать их, как собак» называет «концом кода». Его аргумент заключается в том, что с ростом машинного обучения — когда вы «кормите» машину огромными объемами данных, а алгоритм «учится», как идентифицировать объекты, как отправлять вам наиболее релевантную информацию на ленту Facebook или даже как водить автомобиль, — даже самые умные инженеры не знают, как их программа работает на самом деле. Как утверждает создатель Android Энди Рубин, «после того, как нейронная сеть научится распознавать речь, программист не может залезть внутрь и посмотреть, как это произошло. Это как мозг. Вы не можете снять голову и посмотреть, о чем думаете».
Уже сейчас мы наблюдаем сокращение рабочих мест в области разработки программного обеспечения. По словам компьютерного ученого Мартина Форда, автора книги «Роботы наступают», в настоящее время количество кандидатов на позиции штатных разработчиков на 50% превышает спрос (многие успешные лагеря программирования закрываются). Разработчики программного обеспечения переквалифицируются на другую работу или занимаются фрилансом, конкурируя при этом с миллионами зарубежных фрилансеров.
В конце концов, когда вам просто нужен кто-то для создания начального прототипа iOS-приложения (до того, как вы действительно решите создать собственную команду), всё, что нужно сделать, — просто следовать ряду инструкций, доступных в учебных онлайн-пособиях, или объединить ряд программных интерфейсов для написания приложения. Зачем платить $100 тыс. разработчику из Кремниевой долины, когда сотни людей на таких сайтах, как Freelancer, с радостью напишут вам приложение за $15 тыс. в Индии? По словам Форда, офшоринг — это лишь предшественник автоматизации.
Сегодня компании Кремниевой долины платят инженерам большие деньги потому, что когда у вас сложная архитектура в огромных программах, «кодирование» менее важно, чем решение проблем путем разложения их на более мелкие, размышления о безопасности и о том, как масштабировать решение для миллионов пользователей, а также забота о системах (что занимает большую часть времени и охватывает многие сферы информатики).
Конечно, эти проблемы не будут волшебным образом решаться благодаря машинному обучению, и всегда будет спрос на инженеров, которые могут их решать (к тому же сохраняется необходимость поддерживать предыдущие кодовые базы), но, похоже, с ростом и распространением машинного обучения для большинства компаний, «программирование» — собственно стучание пальцами по клавиатуре — будет не настолько важно, как поиск лучших данных, их обработка, а затем обучение алгоритма.
Учитывая все это, возникает вопрос: стоит ли молодым людям и предпринимателям «учиться программировать»? В ответе на этот вопрос много аспектов. Программирование в каком-то отношении всегда будет необходимо (ведь машинное обучение не может заменить всё — оно вам не нужно, например, чтобы получить размер фонда оплаты труда), но просто умение написать приложение для Android не дает вам большого конкурентного преимущества над остальными или возможности создавать что-то существенное в супер-насыщенном технологическом мире, где каждая программная идея уже была реализована десятью предпринимателями до вас. И все же, с точки зрения образования, важно ли, чтобы студенты понимали основы работы программируемого программного обеспечения, чтобы понимать, как устроен мир? Безусловно.
Тем не менее, возможно, чтобы опередить кривую (не только с точки зрения возможностей для создания прочного бизнеса, но и с точки зрения работы), было бы более полезно научиться программированию и алгоритмам как можно скорее, чтобы понять основы, а затем уделять большую часть времени изучению особенностей машинного обучения (которое интересно уходит корнями в математику вероятности, исчисления и линейную алгебру).
Другими словами, изучение машинного обучения — и информатики в целом, которая, конечно же, шире, чем просто «программирование» или «кодирование» — может иметь больше смысла с точки зрения футуризма, чем трата времени на изучение того, как создавать веб-приложение (если, конечно, вы не хотите конкурировать с миллионами разработчиков по всему миру и не готовы подвергнуться атоматизации в ближайшие десять лет). Можно сказать, что обучение кодированию по-прежнему дает умение решать проблемы и учит настоящему упорству. Возможно, так и есть, но я бы сказал, что вы можете получить те же преимущества, изучая машинное обучение или информатику в целом.
Кто знает — кажется, что скоро построение алгоритмов машинного обучения также будет автоматизированным, с искусственным интеллектом, который строит искусственный интеллект. Но пока похоже, что это путь, по которому стоит пойти.
Forbes, перевод "Идеономики"