Я являюсь подрядчиком крупной компании. В настоящее время в проекте участвуют три разработчика, в том числе и я.
Проблема в том, что другие 2 разработчика не понимают этого. Под «этим» я подразумеваю следующее:
- Они не понимают лучшие практики для технологий, которые мы используем. После 6 месяцев, когда я и другие приводили им примеры, используются ужасные анти-паттерны.
- Это программисты «копируй и вставляй», которые производят в основном спагетти-код.
- Они постоянно ломают вещи, внедряют изменения, но не проводят базового теста на дым, чтобы увидеть, все ли хорошо
- Они отказываются / редко просят о пересмотре кода.
- Они отказываются / редко даже делают простые вещи, такие как форматирование кода.
- Нет документации по любым классам (jsdocs)
- Боюсь удалить код, который ничего не делает
- Оставляйте комментированные блоки кода везде, хотя у нас есть контроль версий.
Я все больше и больше разочаровываюсь, когда форматирую чужой код, исправляю ошибки, обнаруживаю неисправную функциональность и создаю абстракции для удаления спагетти.
Я действительно не знаю, что делать. Я стараюсь не разочаровываться, но это просто беспорядок. Мне нравятся эти люди как люди, но я чувствую, что ситуация с кодированием настолько плоха, что я мог бы двигаться быстрее, если бы они просто просматривали Интернет весь день.
Было бы неправильно попросить нашего менеджера проверить доступ к другим svn коммитам; Коммиты могут быть сделаны только после проверки кем-то, кто хорошо знает, что мы делаем? Как подрядчик, я не уверен, что это лучший ход.
Есть ли тонкий / не очень тонкий способ объяснить, сколько вещей я чиню?
Ответы:
У меня есть что-то подобное в моей команде. Я изо всех сил старался заставить людей делать правильные вещи, и это не сработало, как ожидалось, поэтому я перешел к другому решению.
Во-первых, я пошел к своему менеджеру, и мы разработали соглашение, никакой код вообще не попадает в систему контроля версий, если он не покрыт модульными тестами. Если код входит без модульных тестов, у меня есть право вето, чтобы сразу же отменить фиксацию и пропинговать того, кто за что отвечает, они могут работать над тестами и затем нажимать на код.
С этим правилом я регулярно запускаю инструменты покрытия кода (в данном случае jacoco в нашей сборке sbt ), чтобы убедиться, что фрагменты корректно покрыты, и я также постоянно делаю рефакторинги и проверки кода в любом коде, который им подталкивает. Поскольку это проект Java и Scala, у меня есть множество инструментов, которые помогут мне поймать вещи, которых не должно быть или которые не работают так, как мы думаем, не знаю, как вы можете сделать то же самое с JavaScript, но, возможно, есть решение.
Главное, что я верю, это помогает мне идти в ногу с этим, что у меня есть четкое представление о том, что я ожидаю от проекта и его основной архитектуры, поэтому всякий раз, когда я вижу что-то, что не отражает эту точку зрения, я могу пойти туда и почини это. Вы должны сделать то же самое, определить свою точку зрения, шаблоны, которые следует использовать, способ написания кода и держать себя в курсе, всегда давая им (и вашему руководству) знать, что происходит и что мешает проекту двигаться дальше. Быстрее.
Безусловно, наступит момент, когда они либо сдаются и делают правильные вещи, либо руководство получает сообщение и удаляет их из проекта.
источник
Я уверен, что вы уже видели мои комментарии и другие мои посты, поэтому я не буду притворяться, что я действительно знаю ответ. Лучшее, что я могу предложить, - это краткое изложение того, что я слышал / читал от других, и добавить свой собственный опыт в этот микс.
Во-первых, я хочу сказать, что некоторое время назад я наткнулся на блог, который принадлежит одному из наших собственных программистов SE, Мартину Блору и IMO, этот конкретный пост о самоактуализации TDD очень точен. TDD - последний, самый высокий уровень, который связывает все вместе, но без предыдущих уровней, особенно самого высокого, принципов и практики создания понятного и читаемого кода, будет очень трудно, если не невозможно, заставить работать TDD.
В моей компании и Agile, и TDD были навязаны нам руководством, и сначала мы просто делали это, потому что нам сказали (что противоположно agile). Мы пробовали TDD дважды, и, хотя я большой сторонник использования автоматических тестов, я лично выбросил все те, которые команда собрала вместе в последнем выпуске. Они были хрупкими, гигантскими, копировали / вставляли wazoo и пронизаны заявлениями о сне, которые заставляли их бежать очень медленно и непредсказуемо. Мой совет для вашей команды: НЕ ДЕЛАЙТЕ TDD ... пока.
Я не знаю, какова ваша ситуация, потому что вы упомянули, что вы были в компании всего 6 месяцев, и что вы являетесь подрядчиком. Ваши долгосрочные цели - остаться с этой компанией или контракт истечет? Я спрашиваю, потому что даже если вы что-то делаете, может потребоваться некоторое время, чтобы увидеть результаты.
Кроме того, когда вы присоединяетесь к команде, обычно требуется время, прежде чем вы приобретете достаточный авторитет и уважение вашей команды, когда они (разработчики и руководство) даже рассмотрят все, что вы предложите. По моему опыту, это помогает, если вы потушите несколько пожаров и продемонстрируете, что у вас есть навыки и знания, от которых могут зависеть другие. Не уверен, что 6 месяцев достаточно. Довольно часто новый амбициозный человек присоединяется к команде, а затем делает пост здесь, спрашивая, как они могут изменить мир. Печальная реальность такова, что они просто не могут.
Итак, если у вас есть уважение и внимание вашей команды. Что теперь?
Во-первых, и руководство, и разработчики должны осознавать, что существует проблема. Меры по управлению результаты с точки зрения выполненных работ. Если они довольны текущим количеством и качеством функций, то печальная реальность такова, что они не будут слушать. Как отмечали другие, без поддержки руководства будет крайне сложно ввести какие-либо изменения.
Как только вы получите поддержку управления, следующим шагом будет углубиться и определить основные причины того, почему команда работает так, как она это делает. Эта следующая тема - кое-что, что было моим личным поиском совсем недавно. Пока это было мое путешествие:
источник
Я предлагаю вам поговорить с вашим менеджером о проблеме, но он почти наверняка не захочет проверять каждую регистрацию.
Вместо этого я предлагаю вам предложить набор модульных / регрессионных тестов, которые нужно подключить к SVN и запускать для каждой регистрации. Это, по крайней мере, поможет вам избежать битых сборок. Вы можете постепенно предложить другие лучшие практики.
Если он оказывается совершенно невосприимчивым, может быть, вам следует пройти через его голову. Если вы решите сделать это, вам нужно принести свою лучшую игру. По сути, вы будете подчиняться руководству, которое будет принято на более высокий уровень.
источник