Действительно ли всем нужно учиться программированию?
Еще в 1981 году на 3-й Всемирной конференции Международной федерации по обработке информации и ЮНЕСКО по применению ЭВМ в обучении в Лозанне (Швейцария) Андрей Ершов, советский ученый, один из пионеров теоретического и системного программирования, выступает с докладом под названием «Программирование — вторая грамотность». В своем выступлении, проводя параллели между распространением книгопечатания и развитием технологий, он последовательно делает вывод: «если развитие и распространение книгопечатания привело к всеобщей грамотности, то развитие и распространение ЭВМ приведет ко всеобщему умению программировать».
Название доклада быстро становится лозунгом, после чего в стране начинаются первые эксперименты по преподаванию программирования, а затем информатики школьникам.
Спустя почти 25 лет выходит исследование, подготовленное специалистами Университета Карнеги-Меллон. В нем предсказывается, что в 2012 году из 90 млн работающего населения в США более 55 млн будут использовать электронные таблицы и базы данных, что можно считать элементарным программированием. Аналитики подчеркивают: многие люди занимаются программированием, не осознавая того: например, создавая макросы в электронных таблицах или делая запросы в базах данных c использованием SQL.
Однако насколько успешно «непрограммисты» могут использовать базовые навыки в своей повседневной работе? Как показывает практика, далеко не все, кому не помешает разбираться в технологиях на элементарном уровне, умеют применять эти знания. К примеру, чтобы проверить смогут ли профессиональные графические дизайнеры написать простейшую компьютерную программу, Брайан Дорн, в то время студент магистратуры в Технологическом институте Джорджии (Georgia Tech), попросил их прочесть и изменить фрагмент программного кода. Дорн хотел понять, смогут ли они сами разобраться, как автоматизировать работу в Adobe Photoshop.
Дизайнеры стали искать информацию в Сети, но во многих случаях вводили неверные поисковые запросы: например, пытались разобраться с Java, когда на самом деле им был нужен JavaScript для этого конкретного проекта. Эксперимент описывается в статье «Should everybody Learn to Code?», опубликованной в журнале Communications еще в 2011 году. В итоге автор делает вывод: такое положение дел может быть связано с «отсутствием общего базового понимания компьютерных и программных структур».
С Дорном соглашается и его научный руководитель, профессор и директор программы Контекстуализированной поддержки в обучении в Школе интерактивной обработки данных Georgia Tech Марк Гуздайл, который уверен: результаты эксперимента показывают, что «есть много людей, которым нужны знания в компьютерных науках… и которые будут использовать их в жизни, но они никогда не изучали эту дисциплину, и их самообучение проходит неэффективно, что приводит к потере времени и мотивации».
Однако в последние годы спрос на курсы по программированию продолжает расти год от года. Так, по данным аналитиков образовательной маркетплейс-площадки Courseburg, в среднем спрос на курсы по программированию за 2017 года увеличился на 50%. Больше всего в российском сегменте интернета люди ищут курсы Java, PHP, JavaScript и Python. Если же смотреть по скорости роста спроса на обучение, то на данный момент лидируют запросы: «курсы программирования с нуля», «курсы программирования для школьников», «курсы Python», «курсы JavaScript», также популярными остаются курсы, связанные с веб-разработкой и версткой, свидетельствуют данные компании. При этом спрос на курсы Java и PHP за последний год замедлился.
Кто и как учится программированию «с нуля»?
Если еще десять лет назад история про журналиста, освоившего азы программирования и создавшего своими силами собственный ресурс (например, именно так поступил в свое время Константин Бочарский, 10 лет проработавший в «Секрете фирмы», а потом фактически собственными силами создавший сервис Pressfeed) и удивляла, то сегодня навыки программирования осваивают многие, начиная от дизайнеров и журналистов до экономистов и создателей собственных компаний.
Взять хотя бы историю американского бездомного Лео Гранда, который научился кодить за четыре месяца и запустил мобильное приложение Trees for Cars. Много более традиционных примеров из бизнеса и в России: Константин Шадрин, сооснователь IT-агентства Interity, а в прошлом руководитель группы в консалтинговой компании решил, что без знания предмета невозможно запустить собственный IT-стартап, и прошел базовый курс HTML и СSS. Такое же мнения разделяет и Олег Юсупов, основатель digital-агентства 26dotss, который прошел курсы на пути создания собственной компании, чтобы лучше разбираться в предмете, а не «просто нанимать людей со стороны».
Шадрин и Юсупов предпочли учиться программированию в Moscow Coding School (компания позиционирует себя как «школа нового образца, где крутые девелоперы из прогрессивных интернет-компаний и стартапов приобщают к программированию креативных новичков»), однако многие, в том числе впоследствии профессиональные программисты, начинают путь самостоятельно — с книг и бесплатных онлайн-уроков.
Например, к такому выводу пришли исследователи HackerRank, онлайн-платформы тестовых заданий по программированию, которая в конце января 2018 года представила годовой доклад о навыках и квалификации разработчиков. В основу исследования легли результаты опроса 39,4 тыс. разработчиков из 17 стран мира, зарегистрированных на платформе.
Так, в ходе исследования выяснилось, что большинство программистов самоучки — 73,7% разработчиков постигали азы программирования без чьей-либо помощи. Самая высокая доля программистов, которые начали оттачивать свои навыки в написании программного кода в возрасте 5–10 лет, проживает в Великобритании — 10,7% респондентов. В список лидеров по этому показателю попала также Россия (7-е место) и Украина (10-е место) — 7% и 5,6% опрошенных программистов соответственно занялись программированием в столь раннем возрасте. Однако нашлись и те, кто написал свой первый код довольно “поздно” — после 26 лет. Впрочем, этот факт никак не сказался на их карьере, свидетельствуют данные компании, треть из них (36%) сейчас занимает позиции старших и ведущих программистов.
Одним из самых популярных ресурсов для получения новых знаний была названа платформа Stack Overflow — популярная система вопросов и ответов c пошаговыми рекомендациями по решению задач по программированию. Этот ресурс лидирует у разработчиков всех возрастных групп. Интереснее складывается ситуация со вторым любимым местом — в зависимости от возраста программисты отдают предпочтение YouTube или книгам. Так, программисты до 35 лет прибегают к помощи YouTube, старше 35 — используют бумажные носители.
Такой рецепт используют и те, кто решил освоить программирование, чтобы решать прикладные задачи в своей профессиональной области, не связанной с IT. Например, основатель платформы Courseburg Александр Альхов, будучи по образованию геохимиком, в свое время учился программированию самостоятельно, по книгам.
«Мне кажется, до сих пор книги — это самый разумный способ начать при условии, что вы будете дополнять обучение выполнением заданий, — говорит он. — Но в целом лучший способ начать программировать, на мой взгляд, это желание сделать конкретную штуку. В свое время я взял большую книгу по Access ради того, чтобы упростить хранение данных по литературным источникам. Это то, что сейчас реализовано в программе Mendeley. От идеи до первой версии базы данных и интерфейса для ввода и доступа к данным ушло месяца три, еще один-два месяца потребовались на доводку».
Следующим заходом к программированию для Александра стала задача сделать онлайн-библиотеку книг по его первой специальности. Тогда, как отмечает он, в интернете сложно было найти книги по геохимии в свободном доступе. В результате за два месяца удалось сделать сайт на PHP движке Drupal, который на тот момент стали лидером в своем сегменте, рассказывает Александр.
«Учить абстрактное программирование в вакууме, мне кажется, можно вечно. Но научиться решать конкретные задачи можно достаточно быстро, даже не имея профильного образования. Если бы сейчас я решил стать программистом, я бы посоветовал себе прочитать пару книг, дающих общее представление о выбранном языке. И уже пробуя на тестовой задаче, много и активно читать статьи по конкретным деталям», — отмечает он.
Для начала необходимо определиться, зачем учиться программированию
Прежде всего необходимо определиться с целью, ради которой вы решили учиться программировать, считает Иван Логинов, ассистент кафедры информатики и прикладной математики Университета ИТМО.
«Обучение человека профессии не просто так занимает приличное количество времени. Оно требует серьезного погружения обучающегося в процесс, сопоставимого с занятостью основной работой. Поэтому, если вы настроены на то, чтобы сменить область деятельности, следует понимать, что понадобится приложить массу усилий – от самостоятельного составления плана, поиска учебных материалов, выбора онлайн-курсов, до поступления в высшее учебное заведение», — говорит он.
С другой стороны, если речь идет о получении дополнительных к основной профессии навыков, то подход к обучению будет другим.
«Можно говорить, что один из классов задач, которые будет решать человек в этом случае, это несложная локальная автоматизация процессов, — продолжает Иван Логинов. — Например, подготовка документов в офисных пакетах, таких как Microsoft Office, может быть в какой-то степени автоматизирована за счет поддержки этими программами языка VBScript. Освоив его, вы сможете с большей эффективностью решить ряд профессиональных задач, связанных с использованием этих инструментов, например, автоматически генерировать заполненные формы на основе данных из определенного источника. При этом вам не потребуется задействовать профессиональных программистов, привлечение которых может быть необоснованным или обойдется достаточно дорого»
В подобных случаях обращаться к профессиональной подготовке необязательно — можно ограничиться самообразованием, а также дистанционными консультациями с преподавателем и общением со специалистами на профессиональных форумах. Начать лучше всего с высокоуровневых языков программирования, вокруг которых уже сложилось мощное сообщество.
«Если говорить о программировании как о дополнительном навыке к основной профессии, то лучше стартовать с языков программирования высокого уровня с большим комьюнити. Это, например, языки Python, JavaScript, Java, C#, выбор зависит от того, какие задачи собирается решать человек. Это достаточно популярные языки, которые прекрасно документированы, реализованы под все распространенные платформы. И есть шанс, что под многие задачи из различных предметных областей уже реализована необходимая функциональность. В таком случае достаточно будет ограничиться лишь освоением языка программирования и просто изучить документацию, примеры на предмет того, как именно использовать определенную библиотеку для получения конкретного необходимого результата, — уточняет Иван Логинов. — Главный критерий здесь — наличие очень мощного комьюнити. Оно необходимо, чтобы решение какой-то проблемы не привело к тому, что человек без специального образования не оказался перед нерешаемой задачей, связанной с техническими деталями реализации языка, платформы».
Он отмечает, что такой подход позволяет существенно экономить время на процессе обучения, но стоит отдавать себе отчет в том, что он не делает человека профессиональным разработчиком ПО, хотя и может послужить точкой для начала получения новой профессии.
Что в перспективе?
В будущем понимание основ программирования и умение работать с технологиями станет обязательным навыком для многих нетехнических профессий, считает директор по стратегическому маркетингу компании Яндекс, автор одного из самых популярных русскоязычных телеграм-каналов о технологиях @techsparks Андрей Себрант. Программистам, напротив, предстоит обогащать свои знания по основной специальности дополнительными навыками, в том числе в сфере коммуникаций.
При этом уже сегодня тем, кто делает профессию программиста основной, лучше не идти в эту сферу только потому, что профессия «стала модной», уверен старший разработчик сервиса «Яндекс.Такси» Николай Фильченко. Уже сегодня, чтобы заниматься программированием, требуется много времени: нужно постоянно учиться и следить за новыми технологиями.
«Если человеку действительно нравится программирование, то самое главное не то, куда он пойдет учиться языку программирования и алгоритмам, а то, готов ли он тратить на это много времени. Отрасль меняется очень быстро, и если программист не будет следить за изменениями, то через несколько лет он окажется на обочине рынка», — говорит специалист.