18 типичных ошибок Junior’a

Предупрежден — значит вооружен.
5 минут24112

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

Мамикон Вартапетян, руководитель группы разработки баз данных компании «Лестэр ИТ»:

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

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

Нет защиты от дурака
Большинство Junior-программистов не обрабатывают подачу на вход некорректных данных. Тут, конечно, есть предел разумного, но хотя бы элементарный уровень защиты ставить нужно, даже если это не указано в задании. Я имею в виду, например, стандартизацию типов данных при сравнении, сведение к единому регистру при символьных сравнениях (даже если значения по смыслу подразумевают единый регистр, если это не регулируется иными способами) и похожих проверках.

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

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

Роман Моисеенко, технический директор и сооснователь Мерката:

«Это невозможно сделать»
Более профессионально будет оценить задачу в понятных единицах (часах, людях, рублях, попугаях), чтобы доказать бессмысленность или сложность конкретного решения.

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

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

Андрей Баканов, руководитель отдела разработки MS CRM, ИТ-компания Navicon:

Отсутствие привычки «гуглить» проблему
Молодые специалисты систематически забывают о среде свободной и доступной информации, в которой они работают. Очень много вопросов уже решено до нас. Если начинающий разработчик слишком часто подходит с тривиальными вопросами, необходимо сформировать у него привычку «гуглить» проблему. И обращаться к тимлиду только тогда, когда даже найденное решение вызывает вопросы.

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

Сергей Ястребов, Team Lead WebProfy (Kokoc Group):

Отказ от бекапирования
Бекапирование и контроль версий кода жизненно необходимы при работе в команде или на крупном проекте. Потеряв код из-за неисправности оборудования или ошибки, придется потратить время на его повторное написание и исправление тех же ошибок.

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

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

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

Никита Пчелкин, руководитель группы веб-разработки Acronis:

Желание решить задачу максимально быстро
Junior разработчики очень часто стремятся сделать всё как можно быстрее, думая, что тем самым показывают хорошую работу. К сожалению, это не так.

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

Во-вторых, после выполнения задачи разработчик начинает получать обратную связь, которую важно аккумулировать, а не сразу подрываться всё вносить, иначе спешка грозит Junior’у нервным срывом из-за отвлечения на новые правки каждые 10 минут. Про это всегда рекомендую посмотреть выпуск сатирического киножурнала Фитиль №183-02 "Порожняк" (1969) — классическая картина Junior и Senior разработчика (хотя в домино на работе играть не советую:)

Вниманию тех, кто в поиске работы: в команду к Никите как раз нужен Web developer, кандидатуры талантливых Junior’ов тоже рассматриваются.

Николай Соцкий, руководитель отдела программных разработок в Timeweb:

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

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

Мария Горелова, консультант блока BI в компании AT Consulting:

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

Кстати, умение задать правильный вопрос — тоже большое искусство, в котором приходится упражняться не только Junior’ам. Знать абсолютно все невозможно, а если проблема тебе кажется ну уж очень простой и банальной, можно начать с фразы «я сейчас, возможно, глупость спрошу, но…» — и будет уже не так страшно. 

Алексей Крылов, технический директор m:retailer:

Сломать по незнанию 
Часто в рамках исправления/доработок какой-то функциональности Junior’ом работоспособность системы нарушается. Как избежать: нужно изучить систему, разобраться во всех основных нюансах ее работы и взаимосвязями между компонентами, внимательно относиться к деталям и поддерживать документацию в актуальном состоянии.


Начало пути: профессия «Веб-разработчик».

карьераjuniorпрограммирование
Нашли ошибку в тексте? Напишите нам.
Спасибо,
что читаете наш блог!