Рецепт хорошего программиста. Достаточно ли писать хороший код?

Привет, это Алексей, совладелец и тех.дир. в studio-alt.ru.

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

Рецепт хорошего программиста. Достаточно ли писать хороший код?

Проще и правильнее судить по факту сделанного, успешным проектам не загнувшимся от техдолга и нагрузок. Но успех проектов зависит не только от отдельно взятого кодера.

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

Начнем с очевидного.

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

То есть при найме ему есть, что показать из примеров, и не в лом если что написать десяток строк.

Замечу, что абсолютное большинство новичков приходивших ко мне на собесы после тех или иных курсов, приносили из примеров просто дипломную работу с этих же курсов, ну и максимум обрывки дз (а люди приходившие после вуза — вообще ничего). Не надо так.

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

Окей, код программист пишет, что же делает этот код хорошим?

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

Все варианты должны быть продуманы, обработаны и, конечно, протестированы.

Во-вторых, код должен решать задачу адекватно по времени и ресурсам.

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

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

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

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

Но как первый совет новичкам: обращайте внимание на понятные названия переменных (что хранится?) и функций (что делает?), убирайте лишние вложенности кода, используйте примеры и подходы из официальной документации (одну и ту же задачу можно сделать кучей методов, но общепринятый не надо никому объяснять) и пишите комментарии, если чувствуете, что кодите сейчас костыль (вот прям на русском пишите для начала).

Рецепт хорошего программиста. Достаточно ли писать хороший код?

Неплохо, человек пишет хороший код. Хватает ли этого?

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

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

Потому навык отслеживать затрачиваемые ресурсы, и как можно заранее сообщать о том, что прогноз был неверен, и надо смещать объем/срок настолько-то — выделит вас среди ребят "будет, когда будет".

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

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

22
1 комментарий

Вы классные, подписалась

1
Ответить