Сложно ли отучить программиста от плохого кода?

Ответ

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

  1. Практические code review с объяснениями. Вместо просто «так неправильно» я показываю последствия и лучшие практики.
    // Вместо: if ($isValid == true) { ... }
    // Объясняю: избыточное сравнение, булеву переменную можно использовать напрямую.
    if ($isValid) { ... }
  2. Внедрение статических анализаторов. Инструменты вроде PHPStan или Psalm в CI/CD дают объективные, неличные замечания прямо в merge request. Это дисциплинирует и обучает.
  3. Внутренние воркшопы. Мы периодически разбираем сложные или проблемные участки кода из нашего проекта, обсуждая альтернативные решения.
  4. Постепенные улучшения. Нельзя изменить все привычки сразу. Мы фокусируемся на 1-2 аспектах за спринт (например, типизация или обработка исключений).

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

Ответ 18+ 🔞

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

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

    // Вместо: if ($isValid == true) { ... } // Э, сабака сука, зачем?
    // Объясняю: это как спрашивать «чай горячий?» — «да, он горячий». Избыточно, блядь. Булеву переменную можно использовать напрямую.
    if ($isValid) { ... } // Вот так, коротко и ясно.

    После таких разборов у человека в голове щёлкает: «А, бля, и правда, логично». Удивление пиздец, но работает.

  2. Внедрение статических анализаторов. Это, чувак, гениальная штука. Ставим в CI/CD PHPStan или Psalm. Теперь это не я злой начальник, который придирается, а бездушная машина, которая пишет в мерж-реквесте: «Э, бошка думай, тут тип не тот». Доверия ебать ноль к человеку, но к машине — полное. Это дисциплинирует и обучает без лишних эмоций.

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

  4. Постепенные улучшения. Нельзя взять и заставить всех сразу писать идеально. Это вызовет бунт и желание послать всё в пизду. Поэтому мы фокусируемся на 1-2 аспектах за спринт. Например, в этом месяце бьём по типизации, в следующем — по обработке исключений. Мозг не взрывается, а привыкает.

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