В современном мире программное обеспечение проникает во все сферы деятельности, от образования и бизнеса до развлечений и повседневных задач. Мы находимся в постоянной конкурентной борьбе, где разработчики работают против своего времени, а менеджеры — в условиях ограниченного бюджета. Код становится жизненно важным элементом создания ПО, и его чистота напрямую влияет на производительность и надежность системы.
При работе с разными клиентами в Oxagile мы все чаще сталкиваемся с тем, что многие владельцы бизнеса в погоне за скоростью выхода на рынок и получении прибыли забывают об одном из наиболее значимых аспектов разработки программного обеспечения — качестве кода. Поддерживать его безупречность в течение всего жизненного цикла ПО может быть довольно сложной задачей, но это крайне важно для обеспечения эффективной работы системы и уменьшения вероятности возникновения ошибок в процессе ее развития.
Для примера, по данным исследований, проведенных компанией Rollbar, лидирующей в разработке инструментов для отслеживания и устранения ошибок в программном обеспечении, более трети разработчиков утверждают, что тратят порядка 25% своего рабочего времени на исправление новых или уже существующих багов в системе, другая треть — вплоть до 50% рабочего времени, а у остальных на это может уходит порядка 75%. Со схожей статистикой сталкивается большинство ИТ-компаний, анализируя свой предыдущий неудачный опыт и опыт их клиентов.
Реальность же заключается в том, что хорошее качество кода является неотъемлемым и критически важным для долгосрочного успеха любого ИТ-бизнеса, будь то стартап или крупная компания.
КАКИЕ ПРЕИМУЩЕСТВА НАМ ДАЕТ ВЫСОКОЕ КАЧЕСТВО?
Повышение скорости разработки и сопровождения
Хороший код, как правило, является самодокументируемым, т. е. содержит достаточно информации для того, чтобы текущие или новые члены команды могли легко понять его предназначение и сопровождать без дополнительных разъяснений. Это позволяет разработчикам эффективнее реализовывать новый функционал и исправлять ошибки с минимальными временными затратами на изучение кода и излишнюю коммуникацию внутри команды.
Простота в переиспользовании и переносимости кода
Следование практикам хорошего тона делает процесс переиспользования функционала в рамках одного приложения или перенос его из одного приложения в другое наиболее простым и эффективным по времени. Уже написанный и отлаженный функционал будет более надежным и стабильным в работе по сравнению с новым. С учетом быстро меняющихся требований хорошая переносимость и переиспользование кода позволит разработчикам вносить изменения с минимальным количеством правок и избегать необходимости дублировать код. Это сильно сэкономит бизнесу время, ресурсы и бюджет.
Уменьшение технического долга
Технический долг представляет собой совокупность накопившихся задач, которые появляются во время разработки из-за пренебрежительного отношения к качеству кода и вызывают дополнительные затраты труда и финансов в будущем. Чем больше такой долг, тем становится сложнее с каждым разом вносить изменения в код, тем выше вероятность возникновения новых ошибок в системе и тем больше времени, ресурсов и финансовых вложений потребуется бизнесу на обслуживание проекта. Поэтому важно его минимизировать, регулярно проводя аудит и своевременно устраняя накопленные проблемы.
Повышение надежности
Некачественный код может привести к непредсказуемому поведению, сбоям и замедлению работы системы из-за использования неэффективных алгоритмов, нарушения принципов SOLID, отсутствия тестов и т. д. А снижение надежности ПО, в свою очередь, может привести к серьезным последствиям для пользователей и бизнеса. Поэтому важно регулярно проводить тщательный аудит кода, чтобы обнаруживать и исправлять ошибки вовремя, в перспективе экономя при этом немалое время и деньги.
КАК КОМПАНИЯМ ДОСТИЧЬ ВЫСОКОГО КАЧЕСТВА?
Интервьюерам
При найме новых сотрудников убедиться, что они умеют писать легко поддерживаемый и читаемый, структурированный и расширяемый код. В Oxagile мы это часто делаем несколькими способами:
Проводим аудит качества кода по имеющимся проектам на GitHub кандидата или другом сервисе с системой контроля версий;
Анализируем текущий и прежний опыт кандидата по поддержанию чистоты кода: чем руководствовался, каким лучшим практикам и принципам следовал, какие применял паттерны и другое.
Даем практические задачи, в ходе решения которых необходимо выполнить Code Review и дать полноценный фидбек, в котором обозначить слабые места, определить, какие принципы нарушаются и какими способами это можно предотвратить, указать на вытекающие архитектурные изменения и т. д.
Команде разработки
Перед стартом любого проекта составить регламент (Code Guidelines), которому будут следовать все члены команды. Помимо этого, подключить инструменты автоматического форматирования (prettier) и анализаторов кода (linters), внедрить Unit, Integration и E2E тестирование и связать все это с процессами CI/CD.
Во время проекта осуществлять более тщательное Code Review и Cross Review и пытаться обнаружить не только локальные проблемы в коде, но и предвидеть, как он может повлиять на читабельность, поддерживаемость, масштабируемость, надежность и архитектуру в будущем. Помимо этого, периодически делать анализ накопленных задач в техническом долге и часть из них брать на выполнение.
Следить за соблюдением:
фундаментальных принципов SOLID, DRY, KISS, YAGNI, BDUF, APO и бритвы Оккама;
практик и регламентов от мировых ИТ-компаний таких, как Google, Facebook, AirBnb и других;
надлежащего применения шаблонов проектирования.
Все это позволит бизнесу оперативно реагировать на постоянно меняющиеся требования, а также сэкономить колоссальное время и бюджет на разработку и сопровождения кода.
Ресурс Менеджерам
Включать в план развития инженеров изучение лучших практик и стандартов по обеспечению высокого качества кода. Обучение этому поможет сотрудникам лучше понимать важность правильной разработки и позволит им научиться писать код более эффективно и безопасно, а также приведет к снижению количества ошибок и улучшению производительности продукта. Кроме того, обучение этому сотрудников может привести к повышению их мотивации, удовлетворенности своей работой и уровня командного духа.
Три классики мировой литературы по качеству кода, которые должен прочесть каждый разработчик:
Обозначать необходимость в поддержании высокого качества кода заказчикам еще до старта проекта на примере реальных кейсов. Рассказать, как это поможет сэкономить деньги их бизнесу в рамках уменьшения затрат на техническую поддержку и исправление багов, более быструю разработку, улучшения производительности, повышения удовлетворенности клиентов и другого.
ЗАКЛЮЧЕНИЕ
Хотя качество кода невидимо бизнесу и пользователям невооруженным глазом, оно играет ключевую роль в успешной разработке программного обеспечения. Должное внимание к нему может существенно повысить эффективность работы команды проекта, снизить затраты на сопровождение и упростить масштабирование в будущем, а также сэкономить много времени и ресурсов, особенно для компаний с быстро меняющимися процессами и требования. Убедитесь, что вы отводите достаточно времени на поддержание высокого качества ПО, а сами разработчики стремятся к тому, чтобы их код был самодокументируемым, легко читаемым, поддерживаемым, структурированным, гибким и расширяемым. Никогда не поздно даже в середине проекта начинать вводить эффективные новые практики, регламенты и следовать существующим стандартам. И да поможет вам Роберт Мартин!
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.