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

Запоминать шаблоны.

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

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

Практика, практика, практика.

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

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

Есть много способов попрактиковаться - вы можете запустить некоторые побочные проекты или участвовать в разработке программного обеспечения с открытым исходным кодом, или пересмотреть и переписать учебные задания, которые у вас были в школе / bootcamp / Treehouse / ​​и т. Д. Но есть также некоторые сайты, посвященные вызовам программистов, которые хотят отточить свое мастерство. Вот несколько, которые я использовал:

  • Project Euler фокусируется на математических задачах, которые могут быть хорошим способом познакомиться с низкоуровневыми операциями вашего языка программирования.
  • Exercism фокусируется на более реальных проблемах на различных языках программирования, а также предоставляет вам механизм для получения отзывов о вашей работе от других участников.
  • Кодеката дает вам несколько коротких (~ 30 минут) упражнений, которые вы можете выполнить. Отсутствуют языковые требования или механизм подачи заявок, и есть несколько способов правильно решить каждую проблему. Так что, если вы более целеустремленны, это может быть для вас отличным решением.

Люди тоже имеют значение.

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

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

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

Вот краткий (и ни в коем случае не исчерпывающий) список книг, которые мне действительно понравились по некоторым из этих предметов:

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

Уколом больших пальцев ...

… Сюда приходит что-то злое. Это строка из Макбета Шекспира, и с момента ее публикации «уколы пальцами» стало выражением инстинкта - зуда в задней части вашего мозга, который что-то неверно, даже если вы еще точно не знаете что.

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

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

Никогда не останавливайся.

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

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