какой склад ума нужен программисту
Разработка будущего: как определить у ребенка задатки программиста
Об эксперте: Оксана Селендеева — ИТ-предприниматель и идейный вдохновитель Школы программирования для детей CODDY. Соорганизатор благотворительного проекта помощи детям Donate-Codding. Основательница групп Sell Your Head в соцсетях.
Абстрактно-логическое мышление
Программирование строится на логике, это ее воплощение в жизнь. Иногда даже утрируют, что разработка — это и есть логика [1]. Поэтому умение абстрагироваться и логически мыслить — важнейшие навыки программиста.
Мыслить абстрактно-логически означает оперировать сущностями, а не конкретными предметами: умение обобщать, определять отношения между объектами, находить паттерны, строить гипотезы. Человек, который мыслит логически, делает верные выводы из предпосылок.
Вот пример из книги Канемана «Думай медленно… решай быстро»:
«Стоимость бейсбольного мяча и биты — 1 доллар и 10 центов. Бита на 1 доллар дороже мяча. Сколько стоит мяч?» Если вы ответили — 10 центов, то сделали неправильный вывод, ведь получается, что бита всего на 90 центов дороже мяча, и не совпадает совместная стоимость товаров. Логичный и верный ответ — 5 центов.
Чтобы строить верные умозаключения, нужно уметь применять виды логического мышления, следовать законам логики, не допускать логических ошибок. Можно не знать как это называется. Интуитивное, прокачанное жизненным опытом логическое мышление в быту часто называют здравым смыслом.
Как проверить логическое мышление у ребенка
Логическое мышление легко проверить задачами на смекалку. Они также помогут определить вдумчивость, метамышление, последовательность, внимательность и другие ценные для разработчика качества.
Вот несколько таких задач
Ответ. Это хрестоматийная задача на ошибку выжившего. Укреплять нужно защиту двигателя, ведь самолеты с пробитым двигателем не возвращаются.
Ответ. Банальная внимательность к предпосылкам и ответ очевиден — 5 копеек и 10 копеек. Ведь если одна монета — не пятак, нет противоречия в том, чтобы пятаком была другая.
Ответ. Опять же акцент на формальные условия. Нигде не сказано, что один кошелек не может лежать в другом.
Эти задачи подойдут для ребят, которые уже как минимум учатся в средней школе. Еще им подойдет тест на склонности к программированию, состоящий из десяти вопросов на проверку логического и причинно-следственного мышления, умения анализировать и обобщать, гибкости ума и внимательности. Тест на английском [2].
Малышам нужны задачи попроще и поинтереснее. Например, на сайте LogicLike много красочно оформленных задач, что особенно помогает удерживать внимание дошкольников [3].
Алгоритмическое мышление
Алгоритм — порядок шагов для решения задачи. Программы — это инструкции для компьютера, алгоритмы написанные на языке программирования. Без них не получится разработки.
Алгоритмическое мышление — навык определения последовательности действий для достижения цели. Задача разбивается на части и становится понятной. Простой пример — рецепты приготовления еды.
Алгоритмы помогают автоматизировать рутинные действия. Например, все мы в школе учили алгоритм умножения в столбик. С алгоритмом нам не нужно каждый раз с нуля придумывать, как умножить числа.
Исследования доказывают, что умение мыслить алгоритмами помогает преуспеть в программировании [4]. В исследовании одна половина учащихся могла в уме представить модель программы и поэтапно ее реализовать, а другая — нет. В первой группе экзамен сдали 84% студентов, во второй — 48%.
Как проверить алгоритмическое мышление у ребенка
Попросите рассказать, как что-то делать, например, чистить зубы или рисовать человека. Если ребенок без проблем сможет объяснить вам порядок действий, то все отлично.
Дети постарше могут построить алгоритмы в интуитивно-понятной визуальной среде программирования Scratch, где алгоритмы собирают из графических блоков [5]. При этом если ребенок справляется с задачами из точных наук, у него имеется развитое алгоритмическое мышление.
Твердость характера или стойкость
Твердость характера (grit) — упорство в следовании долгосрочным целям. Стойкость помогает выиграть марафон, а не спринт. Противоположности этого качества — слабохарактерность, импульсивность и малодушие.
Как проверить стойкость у ребенка
Для определения уровня твердости характера есть простой тест из десяти вопросов [6]. Его разработала Анжела Ли Дакворт, профессор психологии Пенсильванского университета, автор книги «Твердость характера. Как развить в себе главное качество успешных людей».
Определить зачатки твердости характера у малышей можно с помощью аналогов популярного «зефирного теста». Это серия исследований отсроченного удовольствия. Детям предлагают выбрать между одним небольшим вознаграждением сейчас, или в два раза больше, если они терпеливо подождут его в течение 15 минут. При этом если дети выбирают второе, экспериментатор выходит из комнаты. Ребенок остается с выбором один на один.
В таком исследовании важно выбрать наградой что-то действительно желанное. Исследователи доказали неточность оригинального «зефирного теста» — дети из богатых семей чаще откладывали сиюминутное удовольствие, потому что не видели ценности в зефире [7].
В целом, если ребенок проявляет силу воли и готов подождать, чтобы получить большую награду, то у него есть все шансы на успех в разработке. Волевой компонент самый важный в любом деле. Когда человек мотивирован — все необходимые навыки легко взращиваются на дороге к цели.
Какой склад ума у программистов
Уже около 40 лет проводятся различные исследования, в ходе которых изучается влияние написания кодов на мыслительные процессы человека.
Ученые заинтересовались этим вопросом почти сразу, как только появилась профессия «программист», то есть в 1970-1980-х гг.
Программирование становится все более популярным, поэтому интерес к теме растет. Специалисты хотят узнать, как навык разработки программ способен воздействовать на человеческий мозг. Также их интересует, какой склад ума должен быть у будущего программиста.
Кто склонен к программированию
Большинство считает, что быть хорошим программистом дано только тем, кто имеет высокий уровень интеллекта и хорошие способности в математике, склонен к анализу и систематизации, умеет четко выявлять взаимосвязь.
О том, как мыслят те, кто пишет коды, можно почитать в книге «Этюды программистов» Чарльза Уэзерелла. Американский специалист описывает способности, развитые у IT-сотрудников, упоминая дифференцированный подход в изучении данных, умение анализировать и оценивать доступные способы решения поставленной задачи, максимально упрощать информацию для машины и людей. Также Уэзерелл указывает, что программист не должен быть самолюбивым, иначе это будет мешать ему признавать ошибки и искать другие способы решения.
Будущий программист должен уметь ясно выражать мысли, наблюдать, искать информацию, самообучаться и постоянно совершенствоваться.
Должен ли программист любить математику
Существует ошибочное мнение, что программисты – это те люди, которые любят математику. Но это не всегда так.
Ученая Е. А. Орел провела исследование, для которого отобрали три группы людей: программистов, бухгалтеров и обычных пользователей интернета. Цель анализа – выявление важных навыков, которые есть у IT-специалистов. Для исследования подобрали вопросы по математическому мышлению (акцент на устные вычисления), вербальным способностям, пространственному и логическому мышлению.
Интересен тот факт, что у программистов уровень математических способностей оказался ниже, чем у людей из остальных двух групп. Причем среди IT-специалистов задействовали исключительно профессионалов, закончивши соответствующие ВУЗы и успевших поработать не менее 3 лет. Возраст респондентов – 23-24 года.
Самые высокие результаты в категории математических способностей показали бухгалтеры. Это не удивляет, ведь они постоянно работают с цифрами, подсчитывают в уме. Сказать такое про программистов нельзя: эти специалисты чаще пишут код, оставляя вычисления компьютеру.
Профессор Г. С. Цейтлин тоже поднимал вопрос о нематематическом складе ума у разработчиков программ. Вышеуказанные исследования только доказали это.
Важно заметить, что в ходе анализа у айтишников выявлен повышенный уровень вербальных способностей, эрудиции, а также логического мышления. Человеку с высоким IQ свойственно иметь именно словесно-логическое мышление. Оно также указывает на предрасположенность к изучению иностранных языков. А вот наличие вербальных способностей располагает к достижению успеха в IT-сфере. Развитая эрудиция никого не удивляет, ведь программисты постоянно учатся и интенсивно задействуют познавательный дар.
Формальное логическое мышление – еще одна важная составляющая мозга программиста. Она объясняется тем, что специалисты стараются особенно внимательно выстраивать алгоритмы, чтобы делегировать машине максимум функций.
Интересные факты открылись во время наблюдений с помощью МРТ за активностью мозга разработчиков при написании кода. У них задействуются отделы, отвечающие также за естественные языки. Так что можно стать профессионалом даже без любви к математике. При этом программирование развивает множество навыков, которые могут пригодиться в будущей жизни и тем, кто не выберет специальность в сфере IT.
Какой склад ума нужен программисту
Исследования в области влияния кодинга на мыслительные процессы насчитывают более 40 лет. Изучение особенностей интеллекта программистов зародилось практически единовременно с появлением данной профессиональной сферы в 70-80-е гг. прошлого века.
Ввиду популяризации профессии актуальность обсуждаемой темы возрастает. Повышается интерес к тому, какое воздействие на мозг оказывает навык написания программ и какими качествами должен обладать специалист из этой области.
Многие привыкли думать, что к программированию склонны люди с высоким уровнем интеллекта, с хорошими математическими способностями, критичностью, склонностью к систематизации, анализу и четкому выявлению взаимосвязей между элементами.
Для изучения данного вопроса мы обратились к исследованию Е.А. Орел. Было отобрано три фокус-группы: программисты, бухгалтера и обычные пользователи сети интернет. Основной целью сравнительного анализа являлось выявление ключевых факторов интеллекта, которыми выделяются профессионалы IT.
Для выявления способностей были подобраны вопросы по четырем категориям: математическое мышление (с упором на устные вычисления), пространственное мышление (визуализация), вербальные способности (лексическая грамотность) и логическое мышление.
Удивительно, но программисты продемонстрировали уровень математических способностей ниже, чем остальные респонденты. К слову, в исследованиях были задействованы только профессионалы с соответствующим образованием и стажем не менее трех лет. Возрастная выборка 23-24 года. Самый лучший результат по данной категории оказался у бухгалтеров, что неудивительно, так как представители данной профессии постоянно работают с цифрами и часто производят математические вычисления в уме. Этого определенно не скажешь об айтишниках, которые работают преимущественно с кодом, а вычисления остаются машине.
В то же время, в сравнении с другими группами, у программистов обнаружен ярко выраженный уровень вербальных способностей (высокая грамотность, красота речи, гибкость и скорость при построении фраз), эрудиции и логического мышления.
Словесно-логическое мышление присуще людям с высоким интеллектом. Оно свидетельствует о предрасположенности к изучению иностранных языков. По сути, программист при написании кода использует искусственную языковую систему. Хороший специалист, как правило, владеет несколькими языками.
Ученые высказали предположение, что люди с высоким уровнем вербальных способностей более предрасположены к достижению успеха в сфере программирования.
Вполне предсказуемо, что у программистов особо развита эрудиция. Люди из данной сферы регулярно обновляют свои знания, поэтому познавательные способности всегда активно задействованы.
Формальное логическое мышление также является важной составляющей интеллектуальной структуры программиста. Связано это с тем, что тенденция к делегированию машине всё большего количества функций требует от представителей данной профессии особого внимания к простраиванию алгоритмов.
Как программирование влияет на мозг и мышление
Это правда, что мышление программистов устроено иначе, чем у других людей. Не сказать, что они обязательно умнее, логичнее или рациональнее остальных. Однако не так давно учёные приступили к изучению влияния программирования на мозг, и пришли к интересным заключениям.
Как занятия искусствами могут по-разному менять ваше мышление, так и программирование влияет на ваш образ мыслей — возможно, не так, как вы ожидали.
1. Программирование влияет на ваши когнитивные модели
Важно ли, с какого языка программирования вы начали свой путь в этой профессии? Да!
Звучит нечестно, правда? Как ни крути, а большинство из нас познакомились с программированием ещё в школе, и первый язык нам навязывали. Я начал с языка С. Те, кто постарше меня, начинали с FORTRAN, COBOL или BASIC. А те, кто младше? Вы наверняка начинали с Java или Python.
Вне всяких сомнений, структура языка программирования влияет на образ мышления. Эдсгер Дейкстра, один из влиятельнейших учёных в сфере информатики, знал об этом, когда сказал:
Инструменты, которые мы используем, оказывают глубокое (и подспудное) влияние на наши мыслительные привычки, и, следовательно, на наши мыслительные способности.
COBOL уродует разум; его преподавание нужно расценивать как уголовное преступление.
Практически невозможно научить хорошо программировать студентов, которые раньше изучали BASIC: как потенциальные программисты они умственно искалечены, без надежды на восстановление.
В каком-то смысле, все языки программирования равны, потому что они полны по Тьюрингу. С другой стороны, овладение одним языком может привести к проблемам в другом. Программисты на Java и на Python — два разных типа специалистов, которые совершенно по-разному подходят к программированию.
Иными словами, парадигмы и идиомы вашего первого языка программирования влияют, и даже диктуют ваши ментальные подходы к структурам данных, алгоритмам и так далее.
Более того, можно взять анонимизированный код и определить, кто его написал, опираясь только на выбранный подход к решению задачи и стиль написания кода. И чем сложнее задача, тем легче «деанонимизировать» код.
Программисты могут обфусцировать переменные или имена функций, но не структуры, которые они подсознательно предпочитают использовать, или любимые операторы инкрементирования.
В английском языке есть пословица, которая суммирует всё вышесказанное в одной понятной фразе: «Когда у тебя есть только молоток, всё похоже на гвоздь». То есть научившись программировать определённым образом, вы будете аналогично подходить к решению всех задач.
Так что выбирайте язык программирования с умом!
2. Программирование помогает укрепить здоровье мозга
Мозг часто сравнивают с мышцей, которую нужно постоянно тренировать, чтобы оставаться умным и сообразительным. Так ли это? И если да, то можно ли считать программирование ментальным упражнением, достаточным для укрепления здоровья мозга?
Авторы метаисследования 1991 года хотели выяснить «влияние компьютерного программирования на когнитивные результаты», и обнаружили, что студенты, имевшие опыт программирования, при тестировании когнитивных способностей набирают на 16 перцентильных баллов больше, чем студенты без опыта программирования.
В ходе более крупного исследования 1999 года подтвердилось, что «интеллектуальная деятельность препятствует снижению [когнитивных] способностей». Но также авторы отметили, что, возможно, снижение когнитивных способностей может привести уменьшению вовлечённости в интеллектуальную деятельность.
Авторы ещё более крупного исследования 2009 года пришли к тому же выводу, и предположили, что «люди, участвующие в деятельности, стимулирующей мозг, в последующие годы могут снизить вероятность [и даже оттянуть начало] болезни Альцгеймера и прочих видов слабоумия». К стимулирующей мозг деятельности отнесли чтение, письмо, головоломки, настольные и карточные игры, исполнение музыки.
Наконец, в исследовании, опубликованном в 2013-м, сказано, что лишь строго определённые виды мыслительной деятельность действительно улучшают наш мозг, а именно — интенсивная когнитивная деятельность, интеллектуально трудная и подразумевающая изучение чего-либо.
Конечно, эта тема требует большего количества исследований, но всё же трудно представить себе такую умственную деятельность, которая требует больше сил и больше сосредоточена на изучении, чем программирование.
Хотя все упомянутые исследования и не доказывают, что интеллектуальная деятельность делает нас умнее или способнее, однако результаты говорят о том, что трудные когнитивные задачи как минимум улучшают текущее состояние мозга и значительно снижают вероятность деградации.
Бытует точка зрения, что учиться программированию никогда не поздно, и описанные исследования лишь подтверждают это мнение. Программирование идёт на пользу!
3. Программирование — это не одни лишь математика с логикой
Обратите внимание, что при этом почти не задействованы разделы мозга, связанные с математикой и вычислениями — даже при анализе фрагментов с циклами, условными и арифметическими вычислениями, и прочими алгоритмическими операциями.
Конечно, исследование не было всеобъемлющим, и его авторы указывают:
Так что это исследование вовсе не бессмысленно. Программирование — не просто «деятельность левого полушария мозга», и можно даже предположить, что у «правополушарных» программистов есть определённое преимущество.
Обязательно ли иметь математический склад ума, чтобы пойти на IT-специальность и правда ли, что навыки программирования скоро станут базовыми?
Многие задают нам вопрос: могу ли я пойти на IT-специальность, если не так уж хорошо знаю математику, но мне очень интересно? Короткий ответ: да, можешь. А более подробно будем разбираться вместе с Владимиром Баскаковым, преподавателем Института информационных технологий и разработчиком Mail.ru и Yandex.
В ЧЁМ ЗАКЛЮЧАЕТСЯ УНИКАЛЬНОСТЬ IT-ПРОФЕССИИ?
В настоящее время человечество переходит из постиндустриальной эпохи высокопроизводительных машин в информационное общество знаний. Программисты, дизайнеры, специалисты по искусственному интеллекту, Data Science, Big Data — это те уникальные люди, которые строят общество будущего. IT-специалисты приносят максимальную пользу обществу, создавая такие сервисы, как Google, Instagram, Netflix, Amazon, Yandex, Uber, Telegram, Facebook, делающие нашу жизнь комфортнее здесь и сейчас.
КАКИЕ ПРЕДМЕТЫ ВЫ ВЕДЁТЕ И ЧТО ОНИ ДАЮТ СТУДЕНТАМ?
Я преподаю программирование на языке Python. Окончив мой курс, вы сможете создавать программы и системы, решающие любые задачи: автоматизировать рутинную ежедневную деятельность скриптами, создавать сайты-визитки, интернет-магазины, огромные сервисы (такие как DropBox и YouTube), настольные приложение и всё, что может встретиться в жизни. Программирование развивает логическое мышление, способность фокусировать мозг на одной задаче, выбирать важное. А ещё программирование прекрасно тем, что результат работы можно увидеть мгновенно: ещё 10 минут назад ничего не работало, а теперь работает!
КАКОЙ СКЛАД УМА НУЖНО ИМЕТЬ, ЧТОБЫ ПОЙТИ НА IT-СПЕЦИАЛЬНОСТЬ? ОБЯЗАТЕЛЬНО ХОРОШО ЗНАТЬ МАТЕМАТИКУ?
Я глубоко убеждён в том, что, чтобы добиться хороших результатов, нужно быть искренне заинтересованным в предметной области. Делать нужно то, что приносит радость, что зажигает, даёт энергию. Программирование не исключение. Интерес к компьютерам — это необходимое и достаточное условие, чтобы осваивать IT-специальность. Технический склад ума и математическая подготовка могут ускорить освоение, но это не главное, а главное — кайфовать!
ПРАВДА, ЧТО НАВЫКИ ПРОГРАММИРОВАНИЯ СКОРО СТАНУТ БАЗОВЫМИ, КАК УМЕНИЕ ЧИТАТЬ И ПИСАТЬ?
Определённо, роль программирования будет только расти. В информационном обществе будущего люди будут управлять потоками информации, извлекать неожиданные закономерности и предлагать неординарные идеи, а производством вещей и рутинными операциями буду заниматься роботы. Таким образом, нужны будут люди двух типов: креативщики — те, кто будет придумывать нечто новое, и программисты всех мастей — те, кто будет общаться с машинами и реализовывать то, что придумано.