Pointing fingers (перевод стрелок, нытье и все такое) возникают не сами по себе. Причина та же, что и в 95% проблем в IT: недостаток информации

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

Пример

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

Разберём пример на цепочку причины и следствий:

  • Подсистема в продакшне, прямой денежной выгоды не приносит, сложно протолкнуть и согласовать саму идею её улучшения ->
  • Сложно самостоятельно изучить из-за сложности кода - длинные функции, **kwargs ->
  • Нет мотивации вникать как всё должно работать, документировать ->
  • Нет человека, понимающего как должно быть и как есть сейчас ->
  • Нет документации ->
  • Нет понимания ->
  • Нет тестов

Пункты так или иначе связаны с недостатком информации и любое их решение по сути устраняет этот самый недостаток.

Выводы

  1. Даже короткое README может дать понимание как должно было быть.
  2. Чистый код дает понимание как есть.
  3. Тесты дают уверенность, что все будет хорошо.
  4. Писать код до первой рабочей версии должен тот, у кого есть полное понимание того, как все должно быть. Поясню:
    • люди теряют информацию при коммуникации и с этим ничего не поделаешь;
    • починить людей не получится;
    • при потерях информации возникают проблемы, которые решаемы, но неизбежны;
    • но можно избегать причину потери информации - коммуникацию, по крайней мере до определённого момента.

Вообще я для себя отметил следующую цепочку:

Понимание -> Продуманность -> Стройность -> Понимание

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

Переизбыток информации тоже ведёт к её недостатку. Люди игнорируют шум. Важен не объем отправленной информации, важен объем полезной полученной информации.

Ничего нового я не открыл, всё давно уже сказано в agile manifesto:

Individuals and interactions over processes and tools.