Шесть ответов на вопрос, который редко задают новички · 29.03.2021
Быть хорошим программистом не значит безостановочно писать код. Написание востребовано сильнее, но в крупных компаниях изменение и переписывание существующего кода занимает не меньшую часть работы. Ошибки в программе именно вычитывают, а не переписывают её заново с нуля.
Создавать программы почти на любом языке можно, просто повторяя за обучающими видео, не будучи при этом профессионалом. А вот интерпретировать чужой код, думать о его авторе и искать решения обнаруженных проблем — это уже другой уровень.
Чтение кода сложнее привычного повседневного чтения. Но механика та же: при постоянном повторении знакомых конструкций навык совершенствуется, и следующая программа читается быстрее и воспринимается полнее.
Читая код, вы знакомитесь с точкой зрения другого человека. Выход из периода слепого следования руководствам — это и есть начало роста. Дальше по пути к уровню сильного специалиста помогает чтение большого количества чужого кода. Но почему конкретно?
Принцип DRY — «не повторяйся» — ввели Энди Хант и Дейв Томас в книге «The Pragmatic Programmer» (Программист-прагматик), выпущенной в 2000 году. Сама идея родилась гораздо раньше.
Повторяемость при написании кода ограничивает развитие знаний: вы раз за разом применяете один и тот же приём, потому что другого не знаете. Спасает как раз чтение чужого кода — оттуда вы забираете новые для себя стратегии.
Чтение кода — это знакомство с логикой и ходом мысли другого программиста. Задача непростая: все мы думаем по-разному, и именно поэтому нам есть чему друг у друга поучиться. Повторяющийся код рано или поздно даёт сбой, так что искать в чужих программах новые техники — прямая выгода.
Здесь замкнутый круг: сложность чтения кода напрямую зависит от того, насколько аккуратно и лаконично он был написан.
Хотите писать код быстро и легко — позаботьтесь о том, чтобы его было легко читать.
Попробуйте сравнить небрежный код с грамотным — так задача становится нагляднее. Если продумывать, как превратить плохой код в хороший, и прилагать к этому умственное усилие, багаж навыков расширяется.
Чтение чужого кода знакомит и с качественными примерами, которые пригодятся позже. Когда такой код вдруг даёт сбой, вы понимаете, что именно в нём не так. Когда программа написана удачно — видно, какие части всё равно стоит улучшить. Разбирая технику другого программиста, вы постепенно начинаете писать чище и эффективнее сами.
Язык программирования отличается от литературного тем, что он математический: в нём есть функции, присваивания и вычисления. Чтобы понять структуру, нужно именно аналитическое мышление.
Люди с развитой аналитикой любят задавать вопросы и стремятся к новому. Они не стесняются ставить под сомнение даже общепринятое, поэтому понимают: правда меняет облик в зависимости от времени, места и ситуации. Это позволяет принимать решения, подходящие конкретным условиям.
Аналитическое мышление помогает и в повседневных задачах. Если разбирать составные части задачи по одной — отправную точку, причины, результаты, предположения, — вероятность успешного решения растёт.
Разбор чужого кода развивает этот склад ума напрямую: вы ищете логические объяснения, которые в итоге складываются в понимание того, как работает вся программа.
Бывает, что решение проблемы не находится даже через интернет. Хорошо, когда рядом есть кто-то более опытный, у кого можно спросить.
Развитие навыков разработки напрямую зависит от накопленного опыта — своего или чужого. Чтение кода даёт доступ к решениям, которые уже реализовали квалифицированные специалисты.
Многие опытные разработчики проводят немало времени за чтением чужого кода. Стоит брать с них пример.
Обучение происходит тогда, когда мы читаем и смотрим то, с чем раньше не были знакомы. С кодом так же. Что вы будете делать, когда в программе всплывёт ошибка?
Качественный код невозможен без навыка отладки, а навык отладки требует опыта — того самого, который набирается при чтении и изменении чужих программ.
Программирование позволяет размышлять над размышлением, а отладка учит учиться.
Для инженера умение легко читать исходники — часть повседневной работы, а не отдельное упражнение.
Когда вы подключаетесь к проекту, понимание кода и корректная реакция на требования становятся критичны. Опытные разработчики читают исходный код быстрее — особенно если уже знакомы с архитектурой пакета. При входе в новый проект или в новую компанию этот навык оказывается большим плюсом.
| Причина | Что именно вы получаете |
|---|---|
| Меньше самоповторов | Новые стратегии вместо одного заученного приёма |
| Чище собственный код | Наглядное сравнение небрежного и грамотного решения |
| Аналитическое мышление | Привычка искать логическое объяснение, а не принимать на веру |
| Ответы на сложные вопросы | Доступ к решениям тех, кто прошёл эту проблему раньше |
| Навык отладки | Опыт, который набирается только на чужих ошибках и своих правках |
| Скорость входа в проект | Быстрое понимание незнакомой архитектуры |
Со временем вырабатываются методы, соответствующие вашему стилю обучения — тропы к новым навыкам у всех разные. Общим остаётся одно: практика и привычка регулярно читать чужой код.