Почему программирование — это не написание кода
Программисты так любят свой код, что совсем забывают, для чего он нужен. Давайте-ка вспомним.
Люди, которые далеки от программирования, думают, что работа программистов заключается в написании кода. И хорош тот программист, который пишет больше кода за меньшее время. Мы можем их простить, потому что сами имеем ошибочное представление о работе других специалистов.
Беда в том, что мы, программисты, думаем о своей работе точно так же.
Давайте разберёмся, чем мы на самом деле должны заниматься и почему кода нужно писать как можно меньше.
Пишет о программировании, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.
Зачем нужны программисты
И код, и любые приложения на самом деле никому не нужны. Что действительно нужно людям — это решение их проблем.
Например, цель компании, которая владеет социальной сетью, — деньги. Чтобы получать больше денег, нужно привлечь больше пользователей. А для этого нужно, чтобы социальная сеть решала какие-то проблемы этих пользователей.
Ни один пользователь не заходит в приложение просто потому, что ему нравится, что оно существует.
Люблю этот набор единиц и нулей в моём вычислительном устройстве!
© Ни один пользователь в мире.
Пользователям не нужно это приложение, они хотят:
Помогает ли код удовлетворить хоть одну из этих потребностей? Сам по себе — нет. Он лишь инструмент в руках программиста. Поэтому программист должен думать не о коде, а о том, как с его помощью решить конкретные проблемы.
Больше кода == больше проблем
Если не думать о конкретных задачах, то кода становится слишком много:
Всё это мешает развивать проект, потому что чем больше кода, тем больше вероятность, что где-то появятся уязвимости и баги. В итоге получается приложение, которое не только не решает прежних проблем, но и создаёт новые.
И наоборот: нацеленность на решение проблем позволяет лучше продумать архитектуру и правильно расставить приоритеты в разработке. Так можно достичь большей эффективности с помощью меньшего объёма кода.
Отсюда следует простое правило:
Если код можно не писать, то его не нужно писать.
Сколько времени нужно писать код
Я считаю, что не стоит заниматься этим больше 4 часов в день. Оставшееся время лучше тратить на планирование архитектуры, изучение потребностей пользователей, ревью существующего кода, составление тестов и документации (этим лучше заниматься заранее).
В пример можно привести эту статью. Мне потребовалось всего полдня, чтобы написать её, но перед этим я несколько недель «варил» её в своей голове. То же самое и с программированием: лучшие решения появляются когда угодно, но не в процессе написания кода.
Конечно, чтобы прийти к этому, нужно овладеть хотя бы одной технологией — тогда вы поймёте, как писать небольшие, но эффективные приложения.
Например, вы можете пройти курс «Профессия С#-разработчик». Там вы изучите язык C#, работая над проектами для компьютеров и веба, что поможет узнать лучшие подходы к разработке.
Профессия С#-разработчик
130 часов — и вы научитесь писать программы на языке, созданном Microsoft. Вы создадите 5 проектов для портфолио, даже если до этого никогда не программировали. После прохождения обучения — помощь в трудоустройстве.
Основы программирования: как начать писать код
Окончил курс по языку программирования, но писать код не научился. С подобным сталкиваются многие новички. Пользователи Reddit описывают проблему так:
Разбираемся, в чём может быть проблема и как её решить.
Проблема: искусственная среда программирования
Многие онлайн‑курсы и книги предлагают новичкам работать в искусственной среде программирования, которая сопровождает написание кода различными инструкциями и подсказками. Она не соответствует тому, как в действительности работают разработчики. Когда курс заканчивается и бывший студент пытается совладать с реальной средой программирования, он чувствует себя потерянным, потому как привык к учебным инструментам, которые на каждом шагу предлагают подсказки.
Причина, по которой разработчики онлайн‑курсов пользуются подобными инструментами, заключается в том, что новичкам сложно взаимодействовать с реальными средами разработки. А искусственные платформы хороши тем, что помогают преодолеть первое сопротивление перед написанием кода. В конечном же счёте начинающему программисту всё равно придётся столкнуться с реальной средой разработки.
Проблема: чрезмерные руководства
На курсах программирования и при прочтении учебника ученик получает большое количество инструкций, советов, рекомендаций, что позволяет быстро добиваться успехов в учёбе. В некоторых случая студентам сразу дают ответы или напрямую говорят, как писать код.
По окончании курса новичок оказывается один на один с пустым файлом, без подсказок, и может почувствовать себя в замешательстве.
Проблема здесь — в чрезмерном руководстве. Ученика натаскивают на синтаксис языка, не уделяя при этом должного внимания основным идеям и понятиям программирования.
Синтаксис — это просто набор символов, которые используются для определённого языка программирования. Можно провести параллель с естественными языками: умение написать и произнести фразу на французском “S’il vous plaît” не имеет смысла, если вы не знаете её значения.
Только знание и понимание концепций, которые лежат в основе программирования, позволит понять, как работает код.
Решение 1: использовать реальные среды разработки
Стоит помучиться: установить и настроить реальную среду разработки. Начать можно с обычного текстового блокнота или сразу с редактора кода.
Узнайте, какой редактор чаще всего используют для выбранного вами языка, и установите его. Тщательно изучите его работу: как создать проект, запустить код, какие есть горячие клавиши и сокращения.
Напишите код, сохраните его и запустите — это будет вашим первым серьёзным шагом, ведь именно так работают настоящие разработчики.
Решение 2: писать код с нуля
Достаточно подсказок и инструкций! Начните с пустого файла, в который вы добавите каждую строку кода самостоятельно.
Это трудная задача, в процессе решения которой вы потратите кучу времени на отладку и попытки понять, что написано в сообщениях об ошибках. Но недаром говорят, что хороший программист тот, что умеет пользоваться поисковиком. Воспользуйтесь им по назначению — так вы сможете найти ответы на многие вопросы.
Не копипастите чужой код. Если вы используете работающих чужой код — вы ничему не научитесь. Изучайте чужой код, но не копируйте!
Главное на данном этапе — дойти до решения самостоятельно, а не получить уже готовое. Каждый раз, когда вы ищите и исправляете ошибку, вы получаете реальный опыт программирования.
Решение 3: писать много кода, очень много кода
Программирование — не теоретическая дисциплина: чтения книг, просмотра учебных видео и выполнения тренировочных упражнений недостаточно, чтобы освоить её. Чтобы научить программировать, нужно написать тысячи строк кода.
Ваша первая программа сможет немногое, а в вашем коде будет масса ошибок — но это не столь важно. Главное, сразу не разочаровываться в своих способностях и не бросить всё.
Процесс обучения может выглядеть так: изучаете теорию, ищите советы в поиске, пишите программу и так по кругу.
Решение 4: просить о помощи
Некоторые задачи и ошибки кажутся нерешаемыми: вы бьётесь час, другой, но ничего не приходит в голову. Возможно, пришло время попросить совет.
Сделать это можно на сайтах вопросов и ответов для разработчиков, самый известный — Stackoverflow, который существует в англоязычной и русскоязычной версиях. Не забывайте: хороший программист должен владеть английским языком, ведь это основной язык разработчиков всего мира, и ответ вы быстрее найдёте или получите именно на нём.
Чтобы получить корректный ответ на свой вопрос, стоит научиться правильно составлять запрос:
Программирование — непростое занятие, которое требует реальной заинтересованности и способности часами думать над решением задачи. Если вы воспользуетесь решениями из статьи и не передумаете становиться разработчиком — вы действительно готовы ступить на эту стезю.
Курсы программирования — хороший старт для новичка или человека знающего, которому не хватает системы или у которого возникают сложности при изучении нового языка или технологии. Но не стоит надеяться, что они сразу сделают из вас профи. От вас потребуется настоящая заинтересованность, способность часами думать над решением задачи, искать ошибки и умение учиться самостоятельно.
Не говорите этого программисту! Часть 2
Перевод второй части статьи «51 Things You Shouldn’t Say to a Programmer Explained with GIFs».
В первой части мы обсудили 25 вопросов, которые не стоит задавать программисту, если не хотите наступить ему на любимую мозоль. В этой части рассмотрим еще 25 таких вопросов.
Photo by You X Ventures on Unsplash
26. «Можем ли мы назначить митинг для переноса дедлайна, потому что последний был пропущен?»
Да, конечно можем, но стоит ли? Давайте лучше откажемся от митингов по теме дедлайнов, пока мы не вернемся в ритм.
27. «ИИ вас заменит»
ИИ помогает нам в работе гораздо дольше, чем вы можете представить, но он не отнимает нашу работу. Даже если подобное случится, программирование будет одной из задач, требующих автоматизации, а для этого потребуется огромный объем работ, выполняемых вручную.
28. «Процессор (или любая другая часть) моего ноутбука барахлит. Ты не посмотришь?»
Прежде всего, программирование это процесс создания программ. Программы это наборы инструкций, которые должен выполнять компьютер. Они бывают разными (это могут быть и игры, и приложения на телефоне), но все программы состоят из строк кода.
«Железо», включая центральный процессор, клавиатуру и мышь, — это нечто совершенно иное. И хотя некоторые программисты могут также разбираться и в «железе», не стоит ожидать от всех программистов умения чинить машины.
29. «Могут ли женщины писать код?»
Да! Вообще считается, что первым программистом в мире была именно женщина — Ада Лавлейс, опубликовавшая алгоритм для первого современного компьютера. Если вопрос заключается в том, почему женщин-программисток меньше, чем мужчин-программистов, это другое дело. Это вопрос гендерного неравенства, представления о программистах в обществе и прочих факторов.
30. «Какой мне купить?»
Я, конечно, могу что-то посоветовать, но как программист я имею дело с программами, а не с «железом». Мои знания о «железе» никак не связаны с моей профессией, они скорее проистекают из моего личного интереса к этой теме. Не нужно считать, что программисты разбираются в «железе», только потому, что работают с компьютерами. Мы просто используем компьютеры как инструменты для своей работы — как и миллионы представителей других профессий.
31. «Можешь написать руководство для этой программы?»
Все любят читать руководства, когда получают новую программу. Но написание такого руководства это форменный кошмар (поэтому мы ненавидим подобные вопросы). Программисты предпочитают писать код, а не мануалы, хотя написание последних может быть частью их работы, в зависимости от сложности продукта.
32. «Может, мне перезагрузить компьютер, чтобы избавиться от этого бага?»
Многие люди (особенно с ограниченными знаниями по компьютерной части) считают, что перезагрузка системы это отличный способ решения большинства проблем с компьютером.
Перезагрузка, конечно, может помочь, но только при некоторых не слишком серьезных проблемах. Если у вас баг в коде, перезагрузка не поможет. Лучше позволить программисту (как эксперту в этом деле) самому решать, как поступить.
33. «Сделайте, чтоб это выглядело в точности как продукт «Х»»
Когда вы обращаетесь к программисту с такими запросами, вы фактически просите скопировать чужую работу. Программисты терпеть этого не могут, и не только потому, что это незаконно, но и потому, что хотят иметь шанс показать свои возможности. Зачастую программист может все сделать куда лучше, чем в приведенном вами образце.
34. «Когда будет готово?»
Программисты ненавидят обсуждать дедлайны до начала работ над проектом. Дело в том, что чтобы дать точный прогноз по завершению той или иной задачи, нужно погрузиться в программирование. Если же без определения дедлайна не обойтись, у программистов возникнет множество вопросов, на которые клиент должен будет ответить с самого начала.
35 «Я — HTML-программист»
Когда вы такое говорите, вы и себя обижаете, и других программистов. Простите, но HTML — не язык программирования.
36. «У меня есть идея на миллион долларов. Давайте вы поможете мне ее воплотить, а я вам заплачу, когда дело выгорит»
Спасибо за щедрое предложение, но я пожалуй откажусь. Программирование перестало быть моим хобби много лет назад, и с тех пор я программирую за деньги, потому что только деньгами можно заплатить за квартиру.
37. «Давай сделаем видеоигру»
У программистов бывают разные специализации, и то, что я программист, еще не значит, что я умею делать игры. Это все равно что просить дерматолога посоветовать зубную пасту.
38. «А ты можешь хакнуть этот сайт?»
Возвращаемся к дерматологу и просим вылечить что угодно в организме, кроме кожи. Он же учился медицине! Но нет, это так не работает. То, что врач изучал медицинское дело, еще не значит, что он знает всю человеческую физиологию.
То же самое касается и программистов. То, что человек работает с кодом и компьютерами, еще не значит, что он может взломать программу или игру. Программист — не эксперт по компьютерной безопасности, не системный разработчик, не сетевой инженер и т. д.
39. «О, ты так быстро справился. Можем, сократим оплату на половину?»
То, что я написал код или исправил баг намного быстрее, чем ожидалось, не значит, что это было легко сделать. Так что, пожалуйста, не покушайтесь на мои деньги. Лучше поблагодарите и вспомните обо мне, когда понадобится сделать что-то еще.
40. «Забудь о том, чем ты там сейчас занимаешься. Нам нужно вот это прямо сейчас»
Люди часто меняют требования к проектам. Это нормально, но не лучше ли спланировать все заранее — до того, как звать программиста поработать над проектом? Этим вы не только программисту жизнь облегчите, но и себе деньги и время сэкономите.
Photo by Fabrizio Verrecchia on Unsplash
41. «В этом проекте практически такой же функционал, как и в том, что ты делал несколько месяцев назад. Может, просто скопируешь готовый код?
Если функционал буквально такой же, то да, я его скопирую, и все будет прекрасно. Но в случаях, когда функционал практически такой же, скопировать не всегда получается. Если проект требует хоть небольшого различия с предыдущим, то копипаст не сработает (и следовательно, программисту потребуется больше времени на работу).
42. «Твой код — отстой»
Если вы программист, проверяющий код другого программиста, то по факту вы можете быть правы. Но ведь выразиться можно и более конструктивно! Например, можно сказать что-то вроде «Давай вместе посмотрим твой код. Покажи мне, что и почему ты сделал, чтобы я мог это понять». Чаще всего человек, плохо отзывающийся о чужом коде, сам не лучший программист.
43. «Я бы сделал лучше, с меньшим количеством кода»
Очень может быть. Но также вероятно, что этот код обрабатывает какие-то специальные условия, о которых вы не подозреваете. Больше того, может быть, что автор кода тоже мог бы написать короче. Но код выглядит именно так, как он выглядит, в силу определенных обстоятельств. Возможно, лучше задать наводящие вопросы типа «этот код пора отрефакторить или мы спешим?»
44. «Просто сделайте, чтобы было, как у конкурентов»
Вы сможете построить машину, если кто-то просто скажет «сделай, чтобы выглядело, как Ferrari»? Если вам действительно нужно создать такой же продукт, как у конкурента, лучше сказать так: «Вот продукт нашего конкурента, давайте изучим, что именно в нем нам нравится, и почему он так хорошо работает».
45. «Почему так долго?»
Да, очень жаль, но иногда создание продукта действительно происходит дольше, чем хотелось бы. И мы либо не знаем, почему это так, либо боимся сказать, чтобы нас не уволили.
Вместо того чтобы спрашивать, почему так долго, попробуйте спросить что-то вроде «Как вы думаете, сколько времени это займет? Говорите, неделю? Хорошо, я свяжусь с вами через несколько дней, чтобы узнать, как дела. Если сделаете за неделю — прекрасно, но если это займет больше двух недель, нам нужно будет разработать другой план».
Этот подход больше напоминает сотрудничество и позволяет программисту почувствовать, что на него не нападают, а поддерживают.
46. «Почему разработка стоит так дорого? Мы ведь не используем никакие материалы!»
Чтобы создать программу, программистам нужен компьютер, лицензии, серверы, опыт, а также провести много времени, уткнувшись в экран. Последние два пункта пользуются особенным спросом, а потому требуют большей компенсации.
47. «Почему ты кодишь по выходным?»
Для этого есть две причины:
48. «Мы — стартап, поэтому не можем заплатить так много. Но мы заплатим, когда добьемся успеха»
Программисты действительно любят роялти, но когда компенсация зависит от того, насколько хорошо компании удастся себя продать, ситуация усложняется. Одно дело стартап, в котором программист сам заинтересован, и совсем другое — бесплатная работа в надежде, что продукт станет популярным.
49. «Я знаю восемь языков программирования, включая HTML, CSS, PHP, JavaScript, C++ и т.п.»
Прекрасно! Но, во-первых, знание языка еще не делает вас хорошим программистом. Во-вторых, умение написать «Hello World» после прохождения туториала или даже получения сертификата еще не означает, что вы знаете этот язык.
50. Программирование это всего лишь работа за кулисами. Вот менеджмент, бизнес-аналитика, стратегическое консультирование — это дело!
В экосистеме важны все виды работ. Моя работа имеет такую же ценность, как и работа представителей всех остальных сфер!
Как программирование влияет на мозг: три научных факта
Учёные считают, что программирование не просто нагружает мозг — оно его меняет, заставляет думать иначе. Рассказываем, как именно.
Ниши Кашьяп
(Nishi Kashyap)
Пишет о технологиях, стартапах и предпринимательстве.
Сын спросил своего отца-программиста:
— Пап, почему солнце встаёт на востоке и заходит на западе?
— Работает? Вот и не трогай ничего.
Фулстек-разработчик. Любимый стек: Java + Angular, но в хорошей компании готова писать хоть на языке Ада.
Программисты на самом деле думают по-особенному. Про это даже целая книга написана: «Думай как программист: введение в решение творческих задач».
На русском языке эта книга Антона Спрола (V. Anton Spraul) издана под названием «Думай как программист. Креативный подход к созданию кода. C++ версия».
Автор считает, что настоящий программист к решению любой задачи должен подходить организованно: составлять план с учётом своих сильных и слабых сторон и следовать ему.
При этом не обязательно изобретать решение с нуля — важно научиться применять готовые наработки. Но опять же — делать это надо грамотно. То есть не бездумно копировать чужой код, а разбираться в алгоритмах, шаблонах проектирования, учиться видеть общее в разных проблемах.
Сам создатель Apple, Стив Джобс, говорил: «Программирование учит вас думать».
Программисты не просто пишут простыни кода или что-то там разрабатывают. Им приходится решать сложные задачи, подключать логику и мыслить нестандартно. Проявляется это даже в профессиональных шутках.
«Программирование похоже на секс: одна ошибка — и вам придётся поддерживать результат всю жизнь».
В разработке программного обеспечения поддержка (support) — это когда компания-разработчик консультирует пользователей своих продуктов, помогает с настройкой программ и исправляет ошибки в их работе.
Майкл Синц, конечно, не считает ребёнка ошибкой. Он говорит о беспечности и её результате: в одном случае это плохой код, а в другом — дети, которых родители нередко поддерживают всю жизнь.
Учёные много лет копаются в мозгах у программистов, чтобы узнать, что там происходит и чем этот самый программерский мозг отличается от прочих.
В конце концов они выяснили, что программирование как интеллектуальная деятельность влияет на то, как человек думает.
Факт №1
Программирование активизирует центры обучения в мозге
Согласно исследованию доктора Джанет Зигмунд (Janet Siegmund), одного из ведущих мировых экспертов в области создания исследовательских компьютерных программ, анализ программного кода активизирует в мозге сразу пять зон.
Они связаны с обработкой естественного языка, рабочей памятью и вниманием.
То есть при восприятии исходного кода активны части мозга, которые связаны с обработкой языка, памятью и вниманием, и почти не задействованы центры, ассоциированные с математикой и вычислениями.
Когда эти зоны используются часто, нейронных связей между ними становится всё больше и больше. Это похоже на протаптывание тропинки. (По такому же принципу улучшается мышечная память при регулярном повторении монотонных движений.) В результате мозг быстрее реагирует на изменения, а мы быстрее обучаемся.
Японские учёные в другом эксперименте выяснили, что чем выше квалификация программиста, тем более активны эти зоны и менее нагружены все «неспецифические».
« Есть так много способов научиться программировать: от самостоятельного обучения до курсов. А вот мозговые зоны у людей, когда они работают с кодом, всегда активизируются одни и те же. Это удивительно», — подвёл итог Юнь-Фэй.
В этой серии экспериментов учёные сравнивали, какие зоны активируются при анализе программного кода и при решении других задач: на логику, математику и понимание естественного языка.
Выяснилось, что программистские задачки по рисунку активации похожи на логические (левый лобный полюс) и математические (внутритеменная борозда и правый лобный полюс), в то же время при восприятии кода больше включаются «лингвистические» отделы мозга.
Занятия вроде программирования стимулируют мозг, это отличная тренировка для него. Они улучшают способность запоминать информацию и решать задачи.
Поскольку задачи программиста сложны и многогранны, они требуют аппарата себе под стать. Так, написание кода меняет мозг, усиливает нейронную связанность между разными его областями. Есть мнение, что такой мозг лучше способен проявлять креативность, хорошо анализировать проблемы, мыслить логически, да и в целом быстрее обучается.
От переводчика
Любопытство учёных распространяется не только на программистов. Частенько достаётся и шахматистам, и переводчикам-синхронистам, и музыкантам.
Например, в этом исследовании с помощью фМРТ-сканера наблюдали за мозгом профессиональных пианистов.
Снимки показали, что при музыкальной импровизации так же, как и в случае с программированием, активизируются зоны префронтальной коры, отвечающие за речь. Кроме них, активны были сенсомоторные области, а также угловая извилина — она вовлечена в процессы, связанные с восприятием пространства, памятью, вниманием и психическим состоянием человека.
Другие исследователи, Цюньлинь Чэнь (Qunlin Chen) и его коллеги, пошли дальше и решили сравнить музыкальное, литературное и художественное творчество — то есть сразу три вида деятельности.
Эти специалисты Университета штата Пенсильвания провели метаанализ 21 эксперимента, включающего фМРТ-сканирование мозга творческих людей, выявили сходства и различия в рисунке активации зон.
Оказалось, что при всех трёх видах творчества значительно активизировались три отдела мозга, ассоциированные с моторными функциями, рабочей памятью и речью. Две из них упоминались и в исследовании Джанет Зигмунд, а вот моторика при программировании, похоже, играет не такую большую роль. Наверное, потому что мастерство программиста измеряется не числом напечатанных строк кода, а качеством этого кода 🙂
Факт №2
Программирование меняет мышление
«Инструменты, которыми мы пользуемся, незаметно для нас самих, но неотвратимо влияют на наши ментальные привычки, а значит, и на мыслительные способности».
Само устройство языка программирования, без сомнения, меняет образ мышления тех, кто с этим языком работает.
Я говорю не просто о написании строчек кода, а об ином мышлении, которое нужно для создания этих строчек. То есть о том, чтобы взять какие-то смутные концепции и превратить их во что-то конкретное и понятное — представить в виде кода, который решает задачу.
Проведём эксперимент. Попробуйте прочесть это сообщение:
«По рзеульаттам илссеовадний Кмедгижобрксо унвиертисета, не иеемт занчнеия, в кокам пряокде рсапожолены бкувы в солве. Галвоне, чотбы преавя и пслоендяя бквуы блыи на мсете. Осатьлыне бкувы мгоут селдовтаь в плоонм бсепордяке, всё рвано ткест чтаитсея без побрелм. Это потмоу, что мы чиатем не кдаужю бкувy по отдльенотси, а всё солво цликеом».
Получилось? Конечно же вы поняли смысл текста, несмотря на бардак с буквами. (Это явление называется типогликемией.) А удалось это потому, что обычно люди читают не буквы по отдельности, а слова целиком.
Это не совсем верно.
1. Кембриджский университет не проводил исследования, о котором автор говорил выше. Этот текст — популярный мем.
2. Не так всё просто и с перестановкой букв: чтобы понять слова, значима не только позиция первой и последней буквы. Важно ещё:
3. Есть мнение, что, наряду с выделением слов целиком, глаз при сканировании текста всё же считывает и отдельные буквы.
Подход с чтением слова целиком не годится для программирования: там бесполезно писать srting вместо string, несмотря на то, что ваш мозг в любом случае поймёт написанное.
Мне кажется, что эта особенность при работе с кодом, когда читать приходится все отдельные символы, а не слова и предложения сразу, развивает иной способ мыслить.
Это переносится и на более высокие уровни мышления: даже считывая смысл целиком, нельзя забивать на детали. Когда программист пишет код, ему нужно действовать способами, подходящими для опредёленного контекста, — начиная с корректного синтаксиса и правильных названий для всего и вся. Одна маленькая ошибка — и программа не заработает (или будет работать неверно).
Внимание к деталям пригодится и в повседневной жизни. Если тренировать этот навык не только на работе и чаще «думать как программист», вы не пропустите новый дорожный знак, даже если уже пять лет ездите по одной дороге, а знак поставили только вчера. А ещё не придётся срочно бежать в магазин за переходником, потому что вы по недосмотру купили роутер с китайской вилкой.
Если прислушаться к советам Антона Спрола и перед решением хотя бы самых важных бытовых задач составлять план и учитывать свои сильные и слабые стороны, возможно, вам даже удастся завершить в срок ремонт в квартире. Деньги и стройматериалы не закончатся в самый разгар мероприятий, а соседи снизу не подадут на вас в суд за то, что вы взялись сами устанавливать унитаз (без опыта сантехнических работ) и затопили их.
Кроме того, программирование приучает ожидать подвоха там, откуда не ждали, — пользователи, а до них тестировщики, не всегда используют приложение так, как задумывали его создатели: жмут не на те кнопки и не в то время, вводят некорректные данные и тому подобное. Наверное, поэтому настоящий программист всегда смотрит в обе стороны, прежде чем перейти дорогу. Даже если это дорога с односторонним движением 🙂
Львиная доля работы программистов приходится на отладку кода — поиск и исправление ошибок в нём. И тут им тоже приходится быть начеку. Ведь, как говорится в известной шутке, отладку кода можно сравнить с детективом, где программист сразу и следователь, и свидетель, и главный подозреваемый.
В программировании важны не только логика и математика — чтобы создавать что-то новое, нужен творческий подход, умение мыслить нестандартно. Именно в этом направлении и развиваются мыслительные процессы.
Факт №3
Программирование улучшает память и когнитивные навыки
С возрастом ухудшается наша способность запоминать новое и память в целом, но в одном из исследований учёные обнаружили, что «интеллектуальные занятия служат буфером, который сглаживает когнитивный спад».
Проще говоря, занятия, которые требуют значительных умственных усилий, такие как программирование, помогают бороться с потерей памяти и укреплять здоровье мозга.
К слову, деменция может настигнуть не только в старости: ранняя деменция диагностируется у людей в возрасте от 30 лет. Учёные считают, что риск её снижается, если питаться сбалансированно, поддерживать физическую активность и активность мозга.
Программирование — отличная зарядка для ума. И вряд ли хуже решения кроссвордов, изучения иностранных языков или разгадывания головоломок. Ведь, согласно этому исследованию, программирование соответствует всем критериям мыслительной деятельности, которая действительно улучшает мозг:
В человеческом мозге два полушария: левое и правое. Правое отвечает за интуицию и воображение, левое — за аналитическое и логическое мышление.
При программировании задействованы функции обоих полушарий, поэтому оно развивает мозг комплексно. Оно усиливает когнитивные способности, которые отвечают за обучаемость, преодоление интеллектуальных трудностей, запоминание информации.
Кажется, здесь автор повторяет популярный миф о том, что левое и правое полушария работают по-разному. Эта теория появилась во второй половине XX века с лёгкой руки лауреата Нобелевской премии Роджера Сперри.
Позднее учёные выяснили, что, каким бы делом ни был занят человек, в нём участвуют оба полушария, причём разные зоны — в зависимости от вида деятельности, но вот доминирующих сторон не наблюдается. Например, в этом исследовании нейробиологи сделали магнитно-резонансную томографию тысяче человек, чтобы опровергнуть подобные заблуждения.
По словам Алана Перлиса, лауреата премии Тьюринга и автора языка Алгол, изучение языка программирования меняет восприятие программирования в целом. А если не меняет, то « изучать такой язык разработки не стоит вовсе». Также он заявлял, что « программирование дисциплинирует мышление, учить планировать, уделять внимание деталям и быть самокритичным».
Послесловие от переводчика
Программирование — сложное интеллектуальное занятие, благодаря которому возникают и крепнут связи между различными областями мозга.
Кроме того, при написании кода приходится прилагать дополнительные усилия, чтобы держать в голове задачу целиком и не забывать о деталях — таких, как синтаксис, например.
В итоге программирование не только учит решать нестандартные задачи, оно тренирует навыки, которые нужны в повседневной жизни, — вроде внимания к деталям и бдительности, а ещё служит профилактикой деменции.
обложка: Полина Суворова для Skillbox Media