Мышление программиста: врождённый дар или приобретённый навык?

05:00, 20 June 2020

Что значит «думать как программист»? Есть множество историй, случаев из жизни, шуток и серьёзных доводов в пользу того, что у этих ребят мозг устроен как-то иначе, чем у всех остальных. Попробуем разобраться, так ли это на самом деле.

Если спросить Интернет, что же всё-таки означает это загадочное «мышление программиста», то он подскажет, что программист умеет:

  • системно подходить к решению проблемы
  • докапываться до сути и любить ошибки, ну или хотя бы относиться к ним с уважением
  • смотреть на задачу под разными углами
  • учитывать предыдущий опыт

Но это же навыки, полезные практически в любой сфере, а не только в IT!

— Это если не необходимые, то очень полезные инструменты в работе, как мне кажется. А если ими не пользоваться, то внезапно начавшиеся проблемы всё равно однажды подтолкнут к их применению. И всё же я бы не сказал, что это особенности именно программистов, на свете существует много других профессий, где приходится анализировать, применять системный подход, критически мыслить и так далее. — говорит инженер-программист отдела разработки прикладного ПО Вадим Белов.
— Я давно пришел к выводу, что все те качества, которыми, как многим кажется, хорошие разработчики отличаются от всех остальных, присущи любому профессионалу своего дела. Это в первую очередь стремление сделать работу качественно, и оно тянет за собой всё остальное. У разработчика это необходимость детально вникнуть в проблему или задачу, взвесить все варианты решения, какие только удастся придумать, и так далее. В других профессиях просто отличаются методы достижения качества. — делится мнением руководитель отдела разработки прикладного ПО Дмитрий Новгородов.

Откуда тогда берутся мнения, что IT-специалисты — это почти сверхлюди, умеющие видеть задачи особенным образом и находить изящное решение?

— В глазах обычного человека специалист, который «что-то нажал и всё заработало», скорее всего, выглядит как маг и волшебник. Потому такого человека спрашивают, чем же он занимается и кем работает. А в ответ получают что-то странное и непонятное. А странное и непонятное всегда обрастает всевозможными мифами.
Приведу самый яркий пример из жизни, когда я не просто не мог объяснить, что я делаю, а даже пытаться не стал. Моя бабушка испугалась, когда увидела меня с ноутбуком, а на экране были нерусские буквы, к тому же я их читал и понимал, что там написано. Кажется, она тогда перекрестилась. — рассказывает Вадим.

Результат труда разработчика или системного администратора порой нельзя увидеть, потрогать и почувствовать. Это и создаёт трудности при оценке IT-специалиста в картине окружающего мира, где всё ощутимо, понятно и осязаемо. Как объяснить маленькому ребёнку, чем занимается его папа в отделе разработки? Сколько аналогий ни приводи, малыш всё равно будет считать, что папа весь день сидит за компьютером, нажимает на кнопки и скорее всего играет.

Но при общении с большим количеством программистов и админов закрадывается мысль, что у них всех есть что-то общее. И, хотя у каждого свой неповторимый склад ума, характер, темперамент и набор твёрдых и гибких навыков, всех объединяет одна черта — умение эффективно решать задачи. Эта черта вшита в подкорку и не воспринимается владельцем как что-то особенное.

Это умение, кстати, применяется и к рабочим проектам, и к бытовым ситуациям.

Можно ли этому научиться? Безусловно! В сети много информации о системном подходе и декомпозиции, о планировании и понимании, о выборе способа решения, исследовании и многих других приёмах.

Многие новички в начале своей карьеры в IT погружаются как раз в тонкости решения задач (либо их погружает в это наставник во время стажировки). А затем это входит в привычку и со временем выбирается за пределы рабочих дел.

Так же, как привычка заниматься спортом превращается в образ жизни, привычка эффективно решать задачи переходит в образ мышления.

— Я думаю, что мышление у ребят немного отличается, картинку они представляют по-другому. Но мы часто общаемся с разработчиками и уже привыкли. А ещё, разговаривая с некоторыми из программистов, понимаешь, что не только нам приходится подстраиваться и пытаться понять их термины (разработчики забываются и порой говорят на инопланетном для нас языке), но и им приходится подбирать слова и разъяснять нам некоторые вещи. — говорит специалист по локализации Маргарита Фомочкина.
— Не знаю, тянет ли это на высокое звание мыслительной привычки, но со временем стремишься подробно пересказывать обсуждаемый процесс или объект. При этом, в противовес подробности, тщательно выбираешь слова и избегаешь многословия. В речи стараешься использовать именно те термины, которыми пользуется собеседник. Все ради того, чтобы человек как можно быстрее понял, что от него хотят, и обсуждение прошло максимально эффективно. — делится Вадим Белов.
— Умение погрузиться в проблему, с которой пришёл к тебе человек, вникнуть во все процессы, которые есть вокруг неё, и в итоге начать разбираться в этом вопросе лучше, чем тот человек, для которого ты это делаешь. Это наверное и является основной особенностью мышления разработчика. Развить все эти качества конечно можно, нужно в первую очередь этого хотеть. Во-вторую — отодвинуть стеснение (это зачастую сложно для технаря) и как можно больше общаться и выяснять детали при погружении в задачу. — говорит Дмитрий Новгородов.

Обсудить условия, перевести задачу с человеческого языка на язык технологий и обратно, спланировать алгоритм решения, отнестись внимательно ко всем возможным исходам и ошибкам — всё это невероятные базовые навыки, которые можно и нужно развивать.
А значит, умение думать как программист — не врождённый дар. На самом деле это большой труд, уйма больших и маленьких задач, упорство и азарт.