Существует огромная пропасть между хорошим и великим

Вы когда-нибудь работали с блестящим разработчиком? Я сделал. И я не мог не заметить, что он делал иначе, чем другие, которых я встречал.

Вот четыре черты выдающихся разработчиков, которые имеют значение.

Они все время учатся

Быть разработчиком программного обеспечения — значит учиться всю жизнь. Когда я начинал, а это было всего семь лет назад, jQuery все еще был королем. Я помню бесконечные дискуссии о том, что должен обрабатывать JavaScript, а что — CSS. Теперь почти все в веб-интерфейсе согласились так или иначе делать все на JavaScript. И React превзошел jQuery как предпочтительную библиотеку.

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

Они учатся нужным вещам, и в этом настоящая разница между хорошими и великими разработчиками.

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

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

Они расширяют возможности других

Вы знаете эту африканскую пословицу?

Если хочешь идти быстро, иди один; если хочешь идти далеко, иди вместе.

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

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

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

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

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

С их кодовой базой приятно работать

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

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

Это не случается с великими разработчиками. Они могут разрабатывать код таким образом, чтобы это соответствовало требованиям. И когда требования неизбежно меняются, они приспосабливаются.

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

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

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

Они понимают бизнес

Великие программисты знают печальную правду о разработке программного обеспечения: ваш код — это не продукт.

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

Опытные программисты меняют свой подход в зависимости от обстоятельств бизнеса. Может быть, их клиент — стартап, который хочет быстро создать MVP, имеет ограниченный бюджет и лишь половину шансов на большой успех? Или, может быть, это огромный банк, которому нужно безопасное и надежное программное обеспечение на десятилетия вперед? Эти вопросы важны, потому что они влияют на каждое решение по проекту, которое они принимают.

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

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

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Посетите наш Community Discord и присоединитесь к нашему Коллективу талантов.