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

Здесь действительно есть большая разница между мировоззрением. Основное отличие программистов — это внимание к деталям построения систем. Если обычный пользователь видит просто кнопку, то программист за этой кнопкой видит как минимум следующие неявные элементы:

  • расположение кнопки и логика вывода,
  • различные состояния (при наведении, блокировка кнопки и т.д.) кнопки в зависимости от состояния страницы,
  • права доступа на выполнения операции,
  • логирование операции,
  • выполнение бизнес-логики по нажатию,
  • формат вывода результата операции.

Когда программист начинает грузить этим обычного пользователя, тот начинает вопросительно смотреть на программиста. Мир пользователя по-своему прост и прекрасен — в нем нет всех этих нюансов. Но программист так не может — ведь ему надо КОНКРЕТНО реализовывать систему, а не “просто поставить кнопку”.

Думаю, хорошая аналогия — это Природа и Человек. Человек просто использует дары природы, не особо заботясь как внутри все это устроено (растет себе дерево, и ладно). Но как только мы начали изучать более глубоко процессы Природы, становится ясно как все очень сложно устроено. От обычного человека эта сложность скрыта, он просто принимает эту сложность как данность.

Примечание. Я буду вставлять малые задания в ходе этого руководства. Если вы намерены стать программистом, то прошу их выполнять сразу по ходу чтения. Именно собственная практика дает результат, а не чтение.

Задание

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

Согласитесь, это совсем другой взгляд — большинство людей вообще не осознают сложности процессов и систем (например, устройство телефона или создание малого предприятия). Развивайте в себе этот навык и постоянно мысленно создавайте системы.

Хороший способ развить в себе подобное мышление — это шахматы. В шахматах сложно “уговорить” фигуры ходить по-другому. Тут действует жесткая причинно-следственная связь. Это именно то, чем мы руководствуемся при разработке программ.

Главный навык программиста

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

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

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

← Введение. Кто такой программист? Качества хорошего программиста →