Кодирование, программирование и computer science
Эти термины часто путаются или используются один вместо другого. На самом деле, это три отдельных понятия: кодирование, программирование и computer science (в дословном переводе – «компьютерная наука», но чаще – информатика, или теория вычислительных машин). Кодирование – это написание программного кода. Программирование в узком понимании часто приравнивается к кодированию, но в широком смысле оно включает не только кодирование, но и проектирование программы, построение алгоритмов, разработку структур данных и т.д. – все то, что называется «программная инженерия» (software engineering). Computer science, или информатика, это наука о методах и процессах сбора, обработки и хранения информации, при этом речь может идти о хранении информации как в виде битов в памяти компьютера, так и в генной структуре клетки. Computer science – это именно наука, предполагающая определенные теоретические и практические знания, а также соответствующее университетское образование. Но для кодирования и программирования в узком понимании заканчивать специализированный ВУЗ совсем не обязательно.
Программирование – это просто!
Одна из главных преград на пути популяризации программирования – твердая уверенность, что это сложно и доступно только людям с «математическим складом ума». Популяризаторы программирования (например, code.org) пытаются разрушить этот стереотип и объяснить обществу, что программирование доступно всем. Его все чаще предлагают рассматривать как часть цифровой грамотности (digital literacy), которой можно обучить любого, как читать и писать. Не надо быть гением, чтобы научиться создавать программный код. В доказательство этого часто приводят историю американского бомжа Лео, которая разлетелась по всему Интернету.
Однажды нью-йоркский программист и предприниматель Патрик Макконлог (Patrick McConlogue) решил провести необычный эксперимент, и вместо очередной милостыни нищему на улице, он решил научить бомжа программированию, чтобы тот зарабатывал на жизнь интеллектуальным трудом. Спустя восемь недель обучения с помощью книг, сайтов и уроков Патрика, бомж Лео создал свое первое мобильное приложение.
Однако не все профессионалы с энтузиазмом принимают идею обучения и обучаемости всех. Профессиональные программисты реагируют на историю Лео негативно.
К слову, идея программирования как второй грамотности появилась в СССР. В 1981 году академик Андрей Петрович Ершов представил на Всемирной конференции ИФИП и ЮНЕСКО выступление, которое и называлось «Программирование – вторая грамотность» и вызвало большой резонанс. Ершов рассматривал программирование как «выражение органической способности человека».
Чему нас учит программирование?
Мыслить. Стив Джобса говорил: «Все в этой стране должны учиться программировать … потому что это учит вас мыслить».
Компьютер - это машина, которую создал человек. Программы тоже созданы человеком, и изучая их язык и логику, мы больше узнаем о самом человеке. «Мы были компьютерами до того, как компьютеры стали компьютерами», – говорит Лора Кирсоп, директор Code Club, одной из самых успешных программ в Англии, которая работает со школами. Именно человек дал компьютерам ту логику, по которой они действуют.
Творить
Несмотря на традиционное разделение на физиков и лириков, развитие программирования говорит о том, что пора расстаться с таким устаревшим представлением о знаниях. Эрик Шмидт, директор компании Google, в 2011 году сказал о том, что системе образования стоит вернуться в славные времена, когда «одни и те же люди сочиняли поэзию, и строили мосты, Льюис Кэрролл не только написал одну из самых классических сказок, но и был математиком в Оксфорде». Система образования должна опять соединить искусство и науки вместе. Это касается глобальных изменений всей системы образования на институциональном уровне.
«Создание кода – это просто еще один способ выразить свою креативность, творческий потенциал», – говорят популяризаторы идеи. Можно рисовать, можно лепить, можно сочинять стихи, а можно писать код. Романтизация кода кажется одной из самых успешных стратегий для привлечения учеников и последователей. Хотя не уверена, что все программисты, сидящие часами за написанием своего кода, или вынужденные разбираться в чужом, солидарны с этим трендом.
Развиваться
Программирование рассматривается и как некий инструмент для саморазвития, подобно математике и иностранным языкам. Так же, как человек, изучая иностранный язык, учится выражать на нем свои мысли, читать и получать новую информацию, и тем самым поступательно развивается, так и программирование позволяет постепенно переходить от базовых знаний к более глубоким.
Умение операционально мыслить, которому учит программирование, полезно для общего развития человека. В том же выступлении в 1981 году академик Ершов сказал: «Мы жалуемся на социальные болезни века, в частности абсентеизм и пассивность, ратуем за формирование активной жизненной позиции. Что это такое? Попросту говоря, это способность выработать программу действия и следовать ей».
Быть гражданином
Сегодня мы живем в обществе, которое функционирует во многом благодаря сложным технологиям: наши счета в банках, наша личная информация, наша работа и наш досуг все больше существуют в цифровом мире. Более того, в повседневной жизни на интуитивном бессознательном уровне мы пользуемся тем, что предлагают нам создатели программ, такие, как Microsoft, Apple, IBM. Мы благодарны, что у нас есть Microsoft Word и приложения в iPhone, но почему мы должны довольствоваться лишь теми решениями, которые нам предлагают большие компании? Часто самые успешные самоучки в программировании – это именно те, кто был недоволен существующими программами, и вынужден был научиться программировать, чтобы создать свое собственное приложение, программу или сайт.
В гражданском контексте борьба за свои права часто упирается в недостаток данных или невозможность их правильно обработать. Умение создать программу или приложение, которое будет решать реальные проблемы, может изменить мир. Так, проект «Зарплата учителей меняется» был создан после реакции учителей из разных регионов на несоответствие их низких зарплат официальным данным. Он был построен на анализе официальных данных по показателю «Заработная плата учителей» сайта «Комплексный проект модернизации образования» и позволял в доходчивой форме ознакомиться с официальными данными и обсудить их в конструктивном ключе. То есть информация государственными органами предоставлялась, но не было возможности эту информацию оценить и использовать. Именно умение программировать позволило инициативной группе создать необходимый инструмент и площадку для обсуждения.
Зарабатывать
Наверное, самой важной причиной учиться программировать является материальное вознаграждение и уверенность в своей востребованности на рынке труда. Дрю Хаустон, основатель Dropbox, в промо-видео code.org, говорит: «В мире такой спрос на программистов и тех, кто может кодировать, что предложение никогда не догонит спрос. Так что мы живем волшебной жизнью».
Кроме мишуры обычных заманчивых историй о паре чудаков-программистов, создавших стартап, который заинтересовал инвесторов и превратил их в миллионеров, существует и вполне реальная перспектива развития рынка труда, где работодатели предлагают не только конкурентную заработную плату, но и привлекательные льготы и привилегии. «Чтобы заполучить самых лучших людей в индустрии, мы стараемся создать офисы, которые наши работники будут называть «классными»», – говорит Дрю Хаустон. Даже далекий от IT человек, наверняка, видел фото офиса Google, где приглашенный шеф-повар готовит еду для сотрудников, причем для них она совершенно бесплатна. В офисе есть специальные зоны для релаксации, игр, отдыха, а при желании, если это способствует продуктивности, сотрудники могут играть на музыкальных инструментах или в компьютерные игры в течение рабочего дня. Не все программисты работают в Google, не все программисты могут в течение дня расположиться с ноутбуком на лужайке, освещенной ярким солнышком, но картинка создана. Создана самой индустрией для привлечения лучших.
«Бросаю все – и я миллиардер! Как устроен факультет «Яндекса» и «Вышки»» – под таким заголовком вышла статья, посвященная открытию факультета компьютерных наук «Яндекса» в «Высшей школе экономики». Яркая формулировка говорит не только о том, как глубоко в массовой культуре уже закрепилась иллюзия, что достаточно научиться программировать, и на тебя сразу упадут несметные богатства, но и о том, как СМИ упрощают значение умения программировать.
Контролировать
На сайте codecademy.com, который предлагает бесплатные онлайн курсы по обучению основным языкам программирования, таким как Python, Ruby, Java, те, кто уже научились программировать с помощью этого ресурса, рассказывают, зачем они начали учиться, и как это изменило их жизнь.
Ведущим мотивом во многих историях становится получение контроля над своей жизнью и над той частью работы, которую ты делаешь. Рассказы мелких клерков, создающих специальную программу для автоматизации процесса отсылки писем; исследователей-лингвистов, которые пишут программы для анализа данных, – это истории создания инструментов, которые не только оптимизируют труд, но и гипотетически позволяют не зависеть от программистов. А это не только иллюзия контроля в новом цифровом мире, но и реальная стабильность на рынке труда.
Глобальный навык, локальный контекст
Несмотря на то, что само умение программировать является универсальным, и не зависит от страны и языка, инициативы по продвижению программирования в массы становятся призмой, через которую видны локальные проблемы и особенности.
Американская кампания по популяризации программирования среди детей и взрослых по эгидой Code.org идет простым, но эффективным путем. Звезды от IT-мира такие, например, как Билл Гейтс и Марк Цукерберг, простым и доступным языком объясняют, что такое команды «если» и циклы, а заодно рассказывают, почему они начали заниматься программированием, и как это изменило их мир. Две мысли повторяются с завидным упорством: 1) чтобы кодировать, не нужно быть гением, это всего лишь навык; 2) но при этом этот навык в сегодняшнем мире становится суперсилой, так что «завтрашние программисты станут чародеями будущего».
Заявления, что для программирования знание алгоритмов – это не главное, а важно уметь разбивать проблемы на более мелкие части, отражают в целом образовательную культуру Америки, где умение практически применять навык важнее фундаментальности, а умение коллективно работать в команде соответствует прославленному корпоративному духу.
Есть еще экономический и политический аспекты, характеризующие, например, американский контекст: к 2020 году США создаст 1.4 миллиона рабочих мест в сферах, связанных с computer science, однако если не изменить сегодняшнюю тенденцию в образовании (меньше 2,4% выпускниковамериканских вузов имеют степень в computer science), американские граждане смогут заполнить лишь 30% рабочих мест. Растущий сектор IT и понимание того, что его накачивание с помощью передачи части труда в страны с более дешевой рабочей силой или приглашение иностранных специалистов, не только делает отрасль зависимой от иностранных квалифицированных работников, но и создает нестабильную политическую ситуацию, толкает индустрию и политиков на новые непопулярные меры.
Также в Америке и в Англии существует огромное количество инициатив, пропагандирующих изучение программирования, которые направлены на определенные узкие социальные группы. Инициативы с названием «Женщины кодируют», «Девочки кодируют», «Чернокожие женщины кодируют», «Чернокожие девочки кодируют» (Womenwhocode.co.uk, Girlswhocode.com, #blackwomencode, BlackGirlsCode.Com) свидетельствуют о том, что программирование, как когда-то и базовая грамотность, дает возможность «социального лифта» определенным социальным группам, находящимся в невыгодном и уязвимом положении в обществе.
Что значит для нас программирование?
Во-первых, массовая популяризация программирования позволяет вспомнить об идее академика Ершова о программировании как второй грамотности. Все больше людей понимают, что огромная часть жизни происходит в цифровом мире и регулируется технологиями, и соответственно, если раньше достаточно было уметь читать, писать, и считать, то теперь многие думают, что надо уметь кодировать.
Во-вторых, экономика все больше зависит от высоких технологий, и это надо принять, если мы хотим если уж не разбогатеть как Цукерберг, то хотя бы контролировать свое место работы. Это свидетельствует и о том, насколько новые веяния в обществе теперь диктуются представителями IT-индустрии. Это новая элита с «суперсилой», которая состоит не только в их семи-восьмизначных прибылях, или в том, что они создают программы и приложения, которыми мы потом пользуемся, но и то, что теперь они задают тон и в образовательном контексте.
И наконец, подобные инициативы говорят и о вере в «нового человека», который не будет слепо полагаться на технологические решения других, а способен создавать сам, как физическом в мире, так и в мире программного кода. Человека, который может перестроить себя и свои умения, чтобы обеспечить себе место на рынке труда. Человека, который примет мир в его новой цельности с программным кодом – такой же неотъемлемой частью мира, как и язык.