5 навыков фантастического программиста
easy

5 навыков фантастического программиста

Добрались и до них

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

Огромное терпение и умение не отвлекаться

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

Эти два качества неразрывны: без терпения трудно не отвлекаться, а без сосредоточенности трудно быть терпеливым.

Как это выглядит на практике:

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

Как развить терпение и умение не отвлекаться

Сразу оговорка — мы говорим не про то терпение, которое в итоге приводит к выгоранию или нервному срыву. Мы говорим о том, что помогает долго и целеустремлённо двигаться в сторону цели, даже если не видно промежуточных результатов. 

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

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

Умение не отвлекаться тоже можно выработать, например так:

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

Энциклопедическое понимание платформы

Большинство программистов осознают, что у их инструментов короткий срок службы, и потому не тратят всё своё время на запоминание того, что рано или поздно устареет. Но большинство программистов также не понимают, что в ИТ всё является производным от чего-то более раннего, с общим синтаксисом и ограничениями, которые проживут намного дольше, чем мы. Как говорится, если вы выучите латынь и математику, вся современная ерунда будет вам не нужна, потому что у вас будут инструменты для понимания чего угодно.

Как это выглядит на практике:

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

Как развить энциклопедическое понимание платформы

Чтобы приобрести энциклопедические знания, потребуются годы, а возможно, и десятилетия, но каждый фантастический программист достиг этого, делая примерно одно и то же каждый день:

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

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

Мышление кодом

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

Как это выглядит на практике:

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

Как научиться мыслить кодом

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

Лучшая книга, которую можно прочитать, чтобы научиться мыслить на языке кода, — это «Структура и интерпретация компьютерных программ», классическая книга Харольда Абельсона и Джеральда Сассмана о программировании. В уроках в книге они используют уже устаревший функциональный язык программирования Scheme, но даже если вы не пишете программы на этом языке, он остаётся одним из лучших языков для программирования вашего мозга.

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

Привычка не ездить в Тулу со своим самоваром

Привычка «не ездить в Тулу со своим самоваром» — то же самое, что «не ходить в чужой монастырь со своим уставом», или, как говорят по-английски, When in Rome, do as Romans do («Будучи в Риме, веди себя как римлянин»). Все эти поговорки об одном: в чужом коллективе нужно вести себя и общаться по правилам этого коллектива. Фантастические программисты не предлагают делать все проекты на желаемом ими языке программирования, если в команде принято делать их на другом. Сюда же относится старый спор пробелов и табуляции: фантастический программист делает не так, как он привык, а как принято в его команде, закреплено в документации или требует клиент.

Как это выглядит на практике:

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

Как развить такую привычку

Чтобы приобрести привычку поступать, как принято, вам нужно начать знакомство с новой платформой, изучая как её уникальные конструкции, так и то, как с ней взаимодействует пользователь. Многое может оказаться вам знакомым или известным, чтобы вы могли быстро начать использовать эту платформу, но будьте внимательны к деталям и отличиям. 

Но помните — всегда нужно опираться на уже имеющийся опыт, а не соблюдать традиции, которые давно устарели и никому не нужны.

Стремление создавать собственные инструменты

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

Фантастический программист понимает, что если он в который раз повторяет какие-то действия, то их пора автоматизировать. 

Как это выглядит на практике:

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

Как воспитать в себе стремление создавать собственные инструменты

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

Фантастический текст:

Инна Долога

Фантастический редактор:

Михаил Полянин

Фантастическая обложка:

Алексей Сухов

Фантастический корректор:

Ирина Михеева

Фантастическая вёрстка:

Мария Дронова

Фантастические соцсети:

Юлия Зубарева

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
easy