7 декабря 2018

По каким признакам можно отличить код профессионала от кода новичка — отвечают эксперты

В редакцию Tproger пришёл вопрос от подписчика, которым мы хотим с вами поделиться:

«По каким признакам можно отличить код профессионала от кода новичка?»

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

Владимир Чепелев, преподаватель израильской высшей школы IT и безопасности

Код новичка от профессионала можно отличить базово. Понять по тому, как называет переменные и как использует рекурсивные алгоритмы. Во втором пункте у новичка одна из двух крайностей — либо, если рекурсию понимает, пытается применить её везде, где только можно и нельзя. Вторая крайность — не применяет там, где было бы целесообразно её применение (но это скорее при непонимании). С переменными — использование транслита вместо перевода слов. Характерно для совсем нулевого уровня.

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

Ольга Киселева, руководитель разработки решения Appercut компании Attack Killer

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

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

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

Максим Лицкевич, старший программист «Аэроклуб ИТ»

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

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

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

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

Павел Романченко, технический директор Центра программных решений «Инфосистемы Джет»

Существует немало книг и методик о том, что такое хороший и правильный код, однако, чёткого определения до сих пор нет. Безусловно, профессионалы выделяются именно красотой и стройностью кода, но как же на глаз различить код опытного программиста и новичка? Есть несколько признаков.

Настоящий профи знает, что впоследствии его код будут не раз читать (возможно, даже он сам), править и дополнять, поэтому он всегда оставляет чёткие и понятные комментарии по тем или иным важным аспектам.

Почему код грамотного специалиста так точен? Потому что профессионалы последовательны, а новички не стремятся к систематизации и любят всё сваливать, что называется, в одну кучу. А ведь в программировании фраза «разделяй и властвуй» как нельзя более точна. «Каша» из кода может быть даже вполне работоспособной, но только до первой попытки внести изменения или первой нестандартной ситуации.
Ещё одно критическое отличие заключается в том, что код искусного программиста легко тестируется. Доступность для тестирования — это важнейший элемент обеспечения качества кода. К примеру, жёсткая связка компонент может отрицательно сказаться на стоимости тестирования. Если компонент отвечает за вычисление заработной платы и напрямую связан с конкретной базой данных, то для его тестирования придётся поднимать всю базу данных. Такое действие потребует большого объёма ресурсов, что может быть неудобно или даже невозможно.

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

Юрий Абдюшев, ведущий разработчик, ООО «Роспартнер»

Перед тем, как писать код, профессионал пишет, рисует на бумаге план (этапы) приложения (функционала). Затем этот план он переносит в редактор кода в виде комментариев. Это позволяет ему продумать структуру, к примеру, отдельного класса заранее, а также отчётливо видеть, какой этап реализуется в данный момент. При этом профессионал мыслит наперёд. Чтобы код можно было поддерживать, а не переписывать вновь при добавлении нового аргумента в функцию. Профессионал всегда думает о читабельности своего кода, иногда пренебрегая его краткостью. Профессионал придерживается одного стандарта написания кода. У профессионала код всегда идеально отформатирован, переменные имеют понятные именования. Документирование кода для профессионала является обязательным. Код профессионала читается легко и понятно, как книга

Облачное направление Linx растет быстрее рынка

26 апреля 2024

ровайдер облачных решений и услуг ЦОД Linx увеличил в 2023 году выручку на 20% до 1,6 млрд рублей. Наиболее существенный рост компания показала по направлению IaaS – выручка Linx Cloud выросла на 51%.

 

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

26 апреля 2024

МегаФон и ГК SIMETRA разработали платформу для управления любыми транспортными потоками при строительстве и обслуживании крупных промышленных предприятий России.

 

Правильное распределение инвестиций решит проблему выхода российских ИТ-продуктов на зарубежные рынки

25 апреля 2024

НП "Рус­софт" пред­ло­жило раз­де­лить ин­вес­ти­ции по прог­рам­ме "Эко­номи­ка дан­ных" меж­ду раз­ра­бот­чи­ками оте­чес­твен­ных про­дук­тов и пот­ре­бите­лями в про­цен­тном соот­но­шении 70 на 30 соот­ветс­твен­но. Та­кое соот­но­шение нуж­но для раз­ра­бот­ки ка­чес­твен­ных про­дук­тов и пос­ле­дую­ще­го их вы­хода на рын­ки стран БРИКС.

 

Как убрать рекламу на смартфоне: 5 лайфхаков против надоедливых коммерсантов

25 апреля 2024

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

 

Этичному хакингу нужен закон: как защитить «белых» хакеров от угрозы преследования

25 апреля 2024

Пробелы в законодательстве мешают российскому бизнесу привлекать «белых» хакеров для поиска уязвимостей в своих системах. Необходимость установить правила работы «белых» хакеров, которые помогают проверять кибербезопасность компаний и госструктур, обсуждается с лета 2022 года.