Самый важный навык, необходимый каждому программисту

Перевод статьи «The most important skill a programmer can learn».

Самый важный навык программиста

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

Этот вопрос приводит нас к самому важному навыку, который только может приобрести программист:

«Знать, когда НЕ писать код, это, пожалуй, самый важный навык, который может приобрести программист», – The Art Of Readable Code.

И я не могу не согласиться с этим утверждением. Но почему?

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

Это нормально, мы же программисты. Мы любим писать код.

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

Что это за факты?

Каждая строка кода, написанная вами, это:

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

Как написал Рич Скрента, код это наш враг:

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

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

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

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

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

«Лучший код это полное отсутствие кода, а самый эффективный программист тот, кто знает, когда не нужно писать код».

Иногда код не нужен

Как можно понять, что код не нужен?

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

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

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

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

Никогда не расширяйте назначение вашей программы.

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

Знание, когда не нужно писать новый код, помогает поддерживать маленький размер вашей кодовой базы.

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

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

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

Когда код не нужен

Жизнь превращается в борьбу. А почему?

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

Какой-то фильм ужасов, правда?

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

«Одним из моих самых продуктивных дней был тот, когда я выбросил 1000 строк кода», – Кен Томпсон.

Итоги

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

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

Продолжайте писать код, но знайте, когда нужно сказать «нет».

[customscript]techrocks_custom_after_post_html[/customscript]

[customscript]techrocks_custom_script[/customscript]

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх