8 шагов к тому, чтобы программировать лучше

Настало время серьёзно поговорить о совершенствовании ваших навыков как программиста.

Для начала: если вы говорите «Я хочу стать лучше», подразумевается, что вы представляете, как это «лучше» выглядит. С другой стороны, многие пытаются стать лучше, совершенно не представляя, как этого добиться. Так что позвольте мне поделиться с вами восемью советами по тому, как улучшить ваши навыки программиста, которые были выработаны в течении 35 лет работы в отрасли IT.

1. Напоминайте себе, сколько вам ещё нужно изучить

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

2. Перестаньте постоянно доказывать свою правоту

Чтобы стать отличным, а не просто хорошим программистом, вам нужно набраться опыта. Но будьте осторожны, иногда опыт может подталкивать вас к повторению нелучших решений и формированию плохих привычек. Мы все встречали программистов с восемью годами опыта работы, у которых, по сути, один год стажа, повторённый восемь раз. Чтобы избежать этого, посмотрите на ваш код и спросите себя: «Как я могу сделать это лучше?»

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

3. «Код выполняется без ошибок» — не то, на чём нужно заканчивать. С этого надо начинать

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

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

Разумеется, и здесь нужно задуматься, что же значит это «лучше». Нужно сделать приложение быстрее? Более простым для документации? Более подходящим для повторного использования? Ответ индивидуален для каждого проекта, но дать его нужно обязательно.

4. Напишите код трижды

Программисты пишут код, который работает. Хорошие программисты пишут код, который работает превосходно. Это редко получается с первого раза. Лучший софт обычно бывает написан три раза.

  1. Первый раз вы пишете приложение, чтобы доказать себе и заказчику, что это вообще возможно. Другие могут не осознавать, что это всего лишь proof-of-concept, но вы должны.
  2. Второй раз вы пишете рабочее приложение.
  3. Третий раз вы пишете приложение, которое работает правильно.

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

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

5. Читайте код. Читайте много кода

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

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

  • Как бы я написал этот кусок кода? Как бы вы написали его после того, как увидели эту реализацию?
  • Что нового я узнал? Как можно применить эти приёмы написания к тому, что я писал в прошлом? (вроде «Вау, я и не думал, что это можно было решить рекурсией»).
  • Как бы я улучшил этот код? А если это Open-Source проект и вы уверены, что ваше решение лучше, то стоит не только задуматься, но и сделать это!
  • Попробуйте скопировать стиль этого автора. Делая это, вы как бы влезаете в голову тому, кто писал этот код, что развивает эмпатию.

Не надо просто на автомате проделывать эти шаги. Запишите ваши ответы в вашем журнале, блоге, поделитесь ими на форуме. Просто рассказав что-то другу, вы можете натолкнуть себя на решение, записав ваши мысли и поделившись вашим анализом, вы лучше поймёте, почему вы реагируете на чей-то код именно так. Это всё часть самоанализа, интроспекции, что помогает вам беспристрастно оценить ваши сильные и слабые стороны.

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

6. Пишите код, и не только по заданию

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

Ещё один плюс написания кода just for fun — это заставляет вас изучать вещи самостоятельно. Вы не можете перепоручить тяжёлый участок кому-то другому, так что это удержит вас от желания попросить о помощи слишком рано.

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

7. Работайте в компании других программистов, в любой форме

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

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

8. Изучайте технологии, а не инструменты

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

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

8 Ways to Become a Better Coder