habrahabr

Какие они — лучшие программисты?

  • пятница, 25 апреля 2025 г. в 00:00:14
https://habr.com/ru/companies/ruvds/articles/901240/

За свою жизнь я повстречал немало разработчиков и недавно задался вопросом: «А что делает разработчика одним из лучших? Что у таких людей есть общего?»

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

▍ Читайте документацию


Если бы я мог посоветовать себе молодому что-то одно, это был бы совет: «Читай руководство к тому, что используешь». То есть прочти Apache Webserver Documentation, Python Standard Library или спецификацию TOML.

Не нужно ходить на Stack Overflow, не надо приставать к LLM, не надо гадать — просто обратись к источнику. Зачастую эта информация оказывается на удивление доступна и грамотно прописана.

▍ Углублённо изучайте инструменты


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

Эксперт же вникнет в тему (после прочтения документации) и напишет для инструмента конфигурацию, в которой будет понимать каждую строку и сможет объяснить её коллеге. В этом случае сомнениям места не остаётся.

Для того же, чтобы глубоко освоить инструмент, вам нужно знать:

  • его историю: «Кто его создал? Зачем? Для решения какой задачи?»
  • его настоящее: «Кто его обслуживает? Где эти люди работают? На чём?»
  • его ограничения: «Когда этот инструмент не подойдёт? Когда он ломается?»
  • его экосистему: «Какие для него существуют библиотеки? Кто его использует? Какие есть плагины?»

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

▍ Читайте сообщения об ошибках


То есть «Реально читайте сообщение об ошибке и пытайтесь понять, что в нём написано». Оказывается, если просто посидеть и помедитировать над таким сообщением, оно начинает вам раскрываться. Лучшие инженеры могут выудить из очень ограниченного контекста кучу информации. Многие возникающие проблемы вы можете исправить, просто читая сообщения об ошибках.

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

▍ Разделяйте задачи


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

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

▍ Не бойтесь замарать руки


Лучшие известные мне разработчики читают много кода и не боятся в него лезть. Они никогда не скажут: «Это не для меня» или «Здесь я тебе не помогу». Они просто берутся за дело и учатся. Код — это просто код. С готовностью вложить достаточно времени и сил, они без проблем осваивают необходимые навыки. Не успеешь заметить, как такой человек становится главным советчиком в команде по любому вопросу, в который он начал вникать. Объясняется это в основном тем, что он оказался единственным, кто не побоялся замарать руки.

▍ Всегда помогайте другим


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

▍ Пишите


Большинство прекрасных инженеров весьма общительны и рады делиться своими знаниями.
У лучших, как правило, есть для этого специальные средства: блоги, беседы, опенсорс или некая комбинация этих ресурсов.

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

Гениальные программисты любят поиграться словами.

▍ Учитесь, учитесь и ещё раз учитесь


Некоторым из лучших разработчиков уже перевалило за 60, и при этом они во многом дадут мне фору. И объясняется это отчасти тем, что они продолжают учиться. Если появляется новый, неизвестный им инструмент или язык, который им нравится, они берутся его осваивать. Благодаря этому, они без особых усилий всегда остаются впереди.

Но такую черту характера никак не назовёшь естественной. Многие люди прекращают учиться, как только заканчивают ВУЗ или устраиваются на первую работу. В итоге человек застревает в «правильных» моделях мышления и знаниях, которые он освоил на тот момент. Всё новое ему часто кажется плохим и не стоящим вложения времени. Поэтому мы видим 25-летних юношей, которые уже «умственно на пенсии», и 68-летних спецов, ум которых до сих пор свеж и активен. Лично я стремлюсь попасть в число последних.

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

▍ Статус неважен


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

▍ Нарабатывайте репутацию


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

Выработать репутацию можно разными способами:

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

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

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

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

▍ Будьте терпеливы


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

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

▍ Никогда не вините компьютер


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

Лучшие так не делают.

Как бы странно или непослушно ни вёл себя компьютер, тому всегда есть логическое объяснение, просто вы его ещё не нашли!

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

Такой подход позволяет им очень быстро развиваться и осваивать то, что другим не даётся. Если вы воспринимаете программные баги как необъяснимую магию, магией они для вас и будут.

▍ Не бойтесь сказать: «Я не знаю»


На собеседованиях я сильно налегал на соискателей, чтобы они хотя бы раз сказали: «Я не знаю». И дело не в том, что я хотел продемонстрировать своё превосходство (хотя у некоторых определённо возникало такое ощущение). Я просто хотел, чтобы человек приблизился к границе своих знаний. Я хотел оказаться у неё вместе с ним. Зачастую я и сам не знал ответа. Честно говоря, меня он в тот момент и не интересовал. Мне было важно, чтобы человек не порол на собеседовании чушь.

Лучшие соискатели говорили: «Хм, не знаю, но это интересный вопрос! Могу предположить, что…». И далее следовало рассуждение, ведущее к ответу. Вот это признак того, что у вас есть потенциал стать великим инженером.

Если вы боитесь сказать: «Я не знаю», то действуете из позиции высокомерия или защиты. Я не хочу держать в своей команде балаболов. Лучше уметь признавать, что вы чего-то не знаете. Когда вы это принимаете, то открываете для себя возможность учиться. Как сказал когда-то Альберт Эйнштейн: «Главное — не прекращать задавать вопросы».

▍ Не гадайте


«Столкнувшись с неопределённостью, не поддавайтесь желанию угадать», — одно из моих любимых правил в «PEP 20 — The Zen of Python».

А ведь угадать так и тянет!

Я оказывался в таком положение много раз и терпел неудачу из-за собственных амбиций.

Когда вы гадаете, может произойти две вещи:

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

Повторюсь — противьтесь желанию угадать. Задавайте вопросы, читайте справочные материалы, пользуйтесь отладчиком, будьте вдумчивы. Делайте всё необходимое, чтобы получить ответ.

▍ Не усложняйте


Умные инженеры пишут умный код. Исключительные инженеры пишут простой.

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

Вы можете добиться очень многого, ничего не усложняя. Сосредоточьтесь на правильных вещах.

▍ Напутствие


Выше я привёл не какой-то чек-лист или ориентир для соперничества. Хороший, качественный инжиниринг не про соперничество.

Главное — это не обманываться, что можно избежать трудной работы. Срезать не выйдет.

Удачи вам на вашем пути.

Telegram-канал со скидками, розыгрышами призов и новостями IT 💻