Образ мышления программиста

16.02.21

Саморазвитие - Личная эффективность

Статья описывает основные столпы образа мышления программиста.

Образ мышления программиста

 

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

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

Простой пример - игра в шахматы. Фигуры ходят по определенной траектории, ведущей к результату. Каждый шаг имеет причинно-следственные связи. Этим принципом руководствуются программисты при разработке программ.

Для того, чтобы научиться мыслить как программист, необходимо иметь: 

  • аналитическое мышление;
  • алгоритмическое мышление;
  • умение мыслить абстракцией;
  • знание синтаксиса и языков программирования.

 

Аналитическое мышление

 

Аналитическое мышление тесно связана с логикой. Заключается в умении обращать внимание на детали анализируемого объекта и находить его причинно-следственные связи. Программист руководствуется законами математической логики. Для решения профессиональных задач, необходимо разбивать их на составляющие.

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

Специально для преодоления таких препятствий разработан “метод утенка”. Этот психологический прием заключается в том, что человек ставит на стол игрушечного утенка или любой другой предмет. Нужно сформулировать сложный вопрос и задать его “утенку”. Правильная постановка вопроса и понимание сути поставленной задачи заключает в себе часть ответа. Такой метод дает толчок для дальнейших действий, позволяет преодолеть препятствия.

“Метод утенка” используется при проектировании. Если некоторую часть системы не получается запрограммировать, программист объясняет “утенку” каждую строку. В процессе объяснения специалист находит решение.

 

Алгоритмическое мышление

 

Тесно связано с аналитическим и позволяет понимать задачу в целом, а также разбивать ее на более маленькие подзадачи. Программист прописывает основные логические блоки и пишет код отдельно для каждого. Тестирование кода проводится по частям, затем собирается в единое целое. Таким образом, составляется логическая цепочка и предлагается четкий алгоритм действий. 

Алгоритмическое мышление отвечает за умение составлять план действий и прогнозировать результаты. Предлагается несколько путей решения поставленной задачи, и для каждого прописывается результат.

Принцип декомпозиции применим не только в программировании, но и других сферах деятельности.

Такой подход применяют все успешные программисты. Если решение задачи не достигается путем упрощения, не нужно паниковать. Следует сделать глубокий вдох и посмотреть на проблему под другим углом. Переоценка позволяет осуществить шаг назад с целью поиска ошибок. Вероятно, следует пренебречь некоторыми деталями в пользу общего подхода.

Один из самых эффективных методов переоценки - это попытка начать решение задачи заново. Необходимо вычеркнуть все написанное ранее и взглянуть на задачу в новом ракурсе.

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

 

Умение мыслить абстракцией

 

Понимание абстракции в программировании - это сосредоточенность на существенных для задачи деталях объекта и игнорирование всего остального. Для решения задачи каждому объекту задается минимум описаний, полей и методов. Сохраняются только ключевые характеристики, чем их меньше, тем лучше. 

Пример абстракции: если попросить разных людей рассказать про телефон, то можно получить разные описания. Телефоны могут быть с базой и трубкой, то есть стационарные. Будут версии описания мобильных и даже дисковых телефонов. Но все описания будут сводиться к общим деталям:

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

В программировании абстракция выглядит немного по-другому. Тут необходимо уметь выделить в задаче “Х” и “У” и выразить одного через другое. 

Дана задача: “Отфильтровать спам-письма в отдельную папку”. Программист создает алгоритм, который за указанное время “Х” будет отрабатывать “У” писем и анализировать их на соответствие указанным требованиям. Грамотный специалист умеет перевести задачу с человеческого языка на язык информационных технологий и наоборот.

 

Знание синтаксиса и языков программирования

 

Синтаксис языков программирования характеризуется совокупностью правил, описывающих различные комбинации из символов алфавита. Это четко структурированная система, либо ее часть. Противоположностью синтаксиса является семантика языка. 

Семантика изучает параметры языков программирования путем построения формальных математических моделей. Для построения моделей применяется широкий спектр средств, таких как теория множеств, математическая логика, универсальная алгебра, теория категорий, теория моделей.

Синтаксис характеризует “чистый язык”. Семантика языка описывает действия различных синтаксических конструкций.

Нужно постоянно совершенствовать свои знания в языке и семантике следя за обновлениями своих рабочих языков.  

 

Набор навыков, необходимых для развития мышления программиста
 

  • Для того, чтобы научиться мыслить как программист, необходимо уметь проводить аналогии между знакомым и новым. Имея базовые знания в программировании, специалист должен разбираться в технической документации и осваивать новые технологии на базе предыдущего опыта; 
  • Программист должен уметь сосредоточится на выполнении поставленной задачи на протяжении длительного времени. Если внимание не будет сфокусировано полностью на решении проблемы, то может быть упущена большая часть работы. Также необходимо концентрироваться на связанных друг с другом элементах и понимать принципы их взаимодействия;
  • Способность грамотно пользоваться наработками. Программисту нужно учитывать при решении задачи, что ранее ее мог решить другой специалист. Допустимо разбирать готовые наработки, вникая в код. Таким образом, можно сэкономить большое количество времени, а также дополнить ранее написанный код;
  • Прогнозирование различных сценариев развития событий.  Специалист Нужно предусмотреть несколько вариантов, в том числе и нестандартных. Необходимо продумать, к чему приведет каждый из сценариев. Мышление программиста отличается именно этими особенностями, что позволяет избежать сбой программы в разных случаях ее использования;
  • Способность к непрерывному обучению. Постоянное развитие информационных технологий сопровождается тем, что программисту нужно уметь быстро реагировать на изменения. Нейронные сети становятся длиннее, видеокарты - мощнее, а бизнес процессы - сложнее;
  • Стремление к совершенствованию навыков. Рефакторинг постоянно сопровождает программиста в работе. Идеальный код еще не придуман, его всегда можно переписать эффективно, увеличив его производительность.

Важный шаг в освоении программирования - это личный опыт. Для того, чтобы стать профессионалом в этой области, необходимо решить большое количество задач. Со временем и с постоянной практикой, можно добиться выдающихся результатов. Так приходит умение решать различные проблемы. 

Тренироваться в решении задач можно разными методами: от игры в шахматы до математических и физических задач.

Программирование - это не только знание теории и математической логики. Исследования, показали, что при изучении исходного кода, задействованы следующие отделы мозга: 

  • средняя лобная извилина. Отвечает за рабочую память, внимание и язык;
  • средняя височная извилина. Отвечает за семантический поиск в памяти;
  •  нижняя теменная доля и нижняя лобная извилина. Соответствуют рабочей памяти;
  • нижняя лобная извилина. Отождествляется с рабочей памятью и языком.

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

 

Примеры задач для развития мышления программиста

 

  1.  Задача, популярная при собеседованиях на Amazon:

Необходимо продолжить последовательность: ППП, ППК, ПКК, ПП.

Задача имеет несколько возможных решений, одно из них:

В последовательности закодированы буквы алфавита, сопоставленные с набором символов “П” и “К”. Символы отражают набор характеристик. Следует найти детали, которых в букве “А” - три, “Б” - две и так далее. Например, здесь будет определенное количество кривых и штрихов. Логично будет продолжить последовательность символами ПППП, что соответствует букве “Д” в ряду: А, Б, В, Г, Д.

  1. Человека уменьшили до размера 5-центовой монеты и поместили в блендер. При этом вес уменьшился, а плотность тела осталась прежней. Лопасти блендера начнут вращение через одну минуту. Каковы должны быть действия человека?

Правильного ответа на эту задачу нет, предложено несколько путей ее решения. Вот некоторые из них:

  • Человек может прижаться ко дну чаши блендера, тогда, возможно, лопасти его не коснуться;
  • Влезть на ось вращения вверх по лезвию. Можно найти участок, на котором удастся сохранить равновесия при вращении. В этом случае центростремительная сила будет близка к нулю, что даст шанс удержаться;
  • Найти зазор между устройством крепления лезвий и стенкой блендера. Вероятно, в это пространство сможет поместиться 5-центовая монета.

Больше примеров подобных задач можно найти на сайтах: TopCoder, Programming Praxis, Coderbyte, CodeKata, The Daily WTF, Al Zimmermann’s Programming Contests, Timus Online Judge.

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

Успехов! 

Программирование мышление язык программирования алгоритм семантика домашнее задание образ мышления программиста мозговая деятельность аналитическое алгоритмическое умение мыслить абстракцией

См. также

Личная эффективность Бесплатно (free)

Отдых необходим каждому специалисту, однако правильное планирование и качественная подготовка помогают провести его эффективно и без последствий для карьеры. Эта статья ориентирована на разработчиков 1С и направлена на раскрытие важных особенностей подготовки к длительным выходным и плавное возвращение к работе после отдыха. В данной статье мы рассмотрим ключевые аспекты подготовки к длительному отдыху: завершение текущих проектов, передача обязанностей коллегам, обеспечение бесперебойной работы информационных систем и создание условий для полного физического и морального восстановления. Особое внимание уделим процессу адаптации после отдыха, включая постепенную активацию профессиональных функций, контроль уровня стресса и выработку оптимальной модели поведения на рабочем месте.

17.12.2025    257    0    Gigantrop    0    

-1

Личная эффективность Радио Аналитик Бесплатно (free)

В восьмом выпуске четвертого сезона подкаста Радио “Аналитик“ обсудили в чем польза ведения личной базы знаний, как организовать процесс работы с информацией и какие возможности Obsidian можно для этого использовать.

08.12.2025    430    0    Radio_Analyst    0    

0

Личная эффективность Компетенции и навыки Бесплатно (free)

Карьера в экосистеме 1С - это не просто накопление знаний, а последовательная трансформация профессионального "Я". Специалист проходит через несколько стадий, каждая из которых характеризуется своим типом мышления, ключевыми мотивами и типичными конфликтами. Понимание этих стадий объясняет многое, что происходит внутри сообщества.

04.12.2025    2528    0    GarriSoft    29    

9

Личная эффективность Бесплатно (free)

Мы попробовали использовать современные макбуки для разработки на 1С – и нам очень понравилось! Настолько, что многие разработчики в отделе полностью перешли на них. Хотим рассказать, как организовали разработку 1С на технике Apple и что нас в ней так впечатлило.

30.11.2025    4241    0    leemuar    103    

6

Личная эффективность Бесплатно (free)

Здоровый программист, качественный код и стабильный карьерный рост – звенья одной цепи: невозможно развиваться, опираясь только на hard skills. Расскажем о том, как с первых шагов в профессии избежать проблем со здоровьем и выгоранием, сохраняя энергию на долгую дистанцию.

24.11.2025    2992    0    aidar_safin    58    

34

Личная эффективность Бесплатно (free)

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

17.11.2025    884    0    SerjoginaMaria    2    

3

Личная эффективность Россия Бесплатно (free)

Мы часто ищем способы управлять временем, но забываем, что главный ресурс — это энергия. В этой статье автор делится личным экспериментом по измерению своих циркадных ритмов. В течение пяти дней он отслеживал уровень энергии и внимания каждые 15 минут — результаты кардинально изменили его подход к работе.

10.11.2025    912    0    Adapta    4    

2

Личная эффективность Бесплатно (free)

Иногда даже опытный разработчик смотрит на код и… не может заставить себя нажимать на клавиши. Мозг будто специально включает «режим ожидания» – откладывает задачу, предлагает проверить почту, сделать кофе или почистить клавиатуру. Почему это происходит и как с этим быть? В этой статье разберём, как работает прокрастинация на уровне мозга, и почему программисты особенно подвержены ей. Расскажу, как маленькие «трюки» помогают войти в поток, почему иногда стоит «сдаться» и посмотреть на задачу под другим углом, и какие привычки действительно помогают не просто начать, а продолжать.

28.10.2025    2707    0    Oksana_Makr    10    

32
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. capitan 2548 16.02.21 18:25 Сейчас в теме
Вспоминается...
Шерлок Холмс и доктор Ватсон летят на воздушном шаре. Погода
портится, шар несется по ветру с огромной скоростю, оринетация
полностью потеряна...
Наконец небо расчищается, Холмс и Ватсон видят под собой залитую
солнцем природу. На берегу ручейка мужик пасет коров.
Когда шар пролетает над мужиком, Холмс обращается к нему:
- Любезнейший, не подскажете ли, э-э..., где мы находимся?
Мужик обалдело смотрит на Холмса и Ватсона, и, когда шар уже
улетел довольно далеко, кричит ему вдогонку:
- Вы находитесь на воздушном шаре!!
Холмс:
- Все ясно, Ватсон. Мы в России.
- Но Холмс! Почему вы решили...
- Элементарно, Ватсон. Этот человек - системный программист.
Только системный программист мог дать столь правильный и
при этом столь бесполезный ответ.
- Да, но почему вы решили, что мы именно в России?
- Элементарно, Ватсон. Только в России системные программисты
пасут коров.

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

Чего вдруг нестандартные то ?

И вот это
Простой пример - игра в шахматы. Фигуры ходят по определенной траектории, ведущей к результату.

Серьезно ???

А как же программирование это искусство ?
А есть Образ мышления водителя автобуса ?
IgorS; mysm; SagittariusA; zaic; ELInfinito; Award; PetrPan; ILM; Nubsdale; Jeka44; akim2040; -_ABC; Batman; +13 1 Ответить
2. ILM 241 18.02.21 10:07 Сейчас в теме
(1) А всё, Вы уже не художник и не творец - Вы теперь бизнес-единица, поэтому от вас ждут быстрого результата и желательно малозатратного.
biimmap; grantmax2005; kseagle; +3 Ответить
3. FesenkoA 59 18.02.21 16:05 Сейчас в теме
П=1, К=0
111
110
100
11
далее будет
10 (ПК)
1 (П)

в случае если меня сейчас размозжит блендер, нужно срочно скинуть все пароли от аккаунтов родственникам и коллегам чтобы снизить последствия для остальных)
SavDm; vika534; IgorS; +3 Ответить
Для отправки сообщения требуется регистрация/авторизация