@AttemterInOil

Как в неопытной команде найти баланс в code rewiew между требуемым качеством кода и объемом исправлений?

Я в команде джунов, и никого из разработчиков, кроме джунов, тут нет.

Я оставляю очень много замечаний во время ревью. Мне видятся недочеты почти в каждой задаче, которую выполняют мои коллеги. Мне неудобно читать их код. У них часто нарушается инкапсуляция, не соблюдается SOLID, именование не соответствует конвенциям и договоренностям, бывает дубляж, просто странные решения; в общем, мне категорически не нравится, как они пишут.

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

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

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

Я понимаю, что у бизнеса могут разные потребности, иногда надо, наверное, сделать тяп-ляп по-быстрому. При создании MVP, например. Но я точно поинтересовался, и получил ответ, что мы вышли из MVP и сейчас делаем нормальный продукт.
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 2
saboteur_kiev
@saboteur_kiev Куратор тега Организация работы
software engineer

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

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

Мне неудобно читать их код. У них часто нарушается инкапсуляция, не соблюдается SOLID, именование не соответствует конвенциям и договоренностям, бывает дубляж, просто странные решения; в общем, мне категорически не нравится, как они пишут.

За именование не по конвенциям - бить по рукам. Это однозначно. Конвенции описать в документе и просто режектить скидывая ссылку на документ с конвенциями. Без подробного разжевывания. Через небольшое время все выучат конвенции. Убедить менеджмент что нужно поддержать идею о конвенции легко, ибо не только общеизвестные практики, но еще и очень легко объяснимые с точки зрения удешевления последующей поддержки этого кода.
Ну и если конвенции соблюдены, то читать код должно быть удобно.
В конвенциях - правила именования функций, переменных, файлов, переноса строк, оформление комментариев и коммитов (например хорошее именование коммитов в мастере - возможность автоматизации отчетов, релиз ноутс, а также интеграция CI с код ревью по заголовкам коммитов). Также необходимо контролировать использование библиотек. Если кому-то для реализации задачи нужно подключить еще одну библиотеку, это надо согласовать - какую, где, краткий инвестигейшн кто эту библиотеку делает. Вдруг она уже устарела, никто ее не саппортит и через год-два придется ее менять на что-то новое. В идеале иметь внутренний репозиторий куда подтягивать то, чем пользуетесь в проекте и регулярно но контролируемо его обновлять.

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

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

Например в процессе эксплуатации выявлялись проблемы, которые были исправлены. Но по статистике 90% этих проблемы ты комментировал еще в момент реализации, и если бы изначально тебя послушались, то проблем бы не возникло, и не надо было бы переписывать - это прямая экономия времени и денег.
Или наоборот, 5% комментариев были бы полезны, остальные - практически никак не повлияли на работу в пролакшене. Сам сделаешь тогда выводы.
Ответ написан
Комментировать
vabka
@vabka
Токсичный шарпист
именование не соответствует конвенциям и договоренностям,

Это можно линтерами отловить.


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

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Intelion Data Systems Москва
от 100 000 до 150 000 ₽
Grade Factor Москва
от 110 000 ₽
ГК «Юг Руси» Ростов-на-Дону
от 100 000 до 180 000 ₽
04 мая 2024, в 22:32
2000 руб./за проект
04 мая 2024, в 22:17
12000 руб./за проект
04 мая 2024, в 22:17
10000 руб./за проект