Как работать с процессом разработки, который не поддерживает чистый код?

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

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

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

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

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

Как я могу обсудить это с моим руководителем? Эта компания не проводит обзоры кода, модульное тестирование и качество кода не заботит руководителей.

Эмоциональный коллега — это тот, кто написал код в юниорском возрасте?
Неа. Младший, который написал это, ушел. Не знаю, уволили его или уволили, но чрезмерно эмоциональный коллега все еще работает здесь над другим проектом.
Вы понимаете, почему тогда этот коллега становится эмоциональным?
Нет, я не знаю. Я не понимаю, почему заявление о том, что какой-то код, написанный кем-то другим, не соответствует хорошей практике, может вызвать такие эмоции.
Название вопроса здесь на самом деле не соответствует фактическому вопросу. Это не один разработчик, это целая команда, весь процесс и управление. Я предлагаю заменить "разработчика, который есть" на "процесс разработки, который есть" . Можно работать с одним разработчиком, другое дело — весь процесс.
Да, я расстроен. Я знаю, что пытаюсь поступать правильно и улучшать ситуацию, а этот человек по какой-то причине настроен против меня. Код был/есть полный беспорядок. Не знаю, почему кто-то, кто этого не писал, может расстроиться, даже если я просто спрошу, кто это написал.
@ user1261710, очевидно, даже если человек не писал исходный код, он потратил время на поддержку и, предположительно, исправление ошибок и т. д. Поэтому, если вы предполагаете, что есть много вещей, которые нужно улучшить, а кодовая база представляет собой нечитаемый беспорядок, вы подразумеваете ваш нынешний коллега не выполнял свою работу.
Ваше предположение о том, что исходный код нельзя было поддерживать, не обязательно верно.

Ответы (5)

Это ваш ответ прямо здесь.

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

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

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

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

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

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

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

  • Я знаю, что код работает, потому что вы хорошо поработали над реализацией/поддержкой, но мне и потенциально любому новому члену команды разработчиков очень сложно понять и работать над ним (это также может звонить в колокол, поскольку почему все ваши предшественники ушли).

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

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

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

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

Удачи!

Если смотреть с точки зрения менеджмента, огромный рефакторинг кода

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

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

Более реалистичный вариант — поэтапное улучшение. Всякий раз, когда вы добавляете новую функцию или исправляете ошибку, оставляйте код в лучшем состоянии, чем когда вы его нашли.

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

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

Менеджмент будет знать, сколько стоит X часов проверки кода, Y часов написания тестов и дополнительные Z часов на «улучшение качества кода». Утверждение «но позже у нас будет меньше ошибок» или «это упрощает написание кода в будущем» расплывчато и не поддается количественной оценке; это не будет иметь большого значения для руководства. Можете ли вы подсчитать, сколько времени теряется из-за плохого качества кода, отсутствия проверок кода и отсутствия модульных тестов? Примите во внимание, как долго выживает код. В компании, в которой я работаю, во многих кодах отсутствуют модульные тесты, но большая часть кода также будет либо отброшена, либо переписана в течение 6–12 месяцев.

Модульные тесты и качество кода — это хорошо (обзоры кода OTOH, с которыми я не согласен), но так же хороши быстрые ноутбуки и собственная кофейня с бесплатным качественным кофе. Они повысят производительность, но за них придется заплатить. Только в том случае, если выигрыш от повышения производительности превышает затраты, руководству имеет смысл внедрить их.

Просто иди вперед, ты не дерево!

Как разработчик, вы знаете, что не можете работать в таком месте, и вы знаете, что вы ничего не можете изменить (изменить образ мышления вашего босса), так что просто двигайтесь дальше! Найдите другую работу в лучшем месте!

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