Недостаток информации - главная проблема IT, мира и вообще всего.
Pointing fingers (перевод стрелок, нытье и все такое) возникают не сами по себе. Причина та же, что и в 95% проблем в IT: недостаток информации
Если что-то доставило человеку неудобство, но он ничего об этом чём-то не знает и не может легко получить больше информации, то он будет выражать иррациональное недовольство - переводить стрелки, ныть, говорить что люди мудаки и мир плохой.
Пример
Допустим в продукте используется подсистема и сервис для неё. Подсистема используется во всех продуктах компании. У неё нет документации, писалась и проектировалась разными людьми, последний писавший - уволился. У неё нет тестов. Её поведение местами кажется нелогичным третьему человеку и периодически с ней возникают проблемы, запрятанные за недостатком логирования.
Разберём пример на цепочку причины и следствий:
- Подсистема в продакшне, прямой денежной выгоды не приносит, сложно протолкнуть и согласовать саму идею её улучшения ->
- Сложно самостоятельно изучить из-за сложности кода - длинные функции,
**kwargs
-> - Нет мотивации вникать как всё должно работать, документировать ->
- Нет человека, понимающего как должно быть и как есть сейчас ->
- Нет документации ->
- Нет понимания ->
- Нет тестов
Пункты так или иначе связаны с недостатком информации и любое их решение по сути устраняет этот самый недостаток.
Выводы
- Даже короткое README может дать понимание как должно было быть.
- Чистый код дает понимание как есть.
- Тесты дают уверенность, что все будет хорошо.
- Писать код до первой рабочей версии должен тот, у кого есть полное понимание того, как все должно быть. Поясню:
- люди теряют информацию при коммуникации и с этим ничего не поделаешь;
- починить людей не получится;
- при потерях информации возникают проблемы, которые решаемы, но неизбежны;
- но можно избегать причину потери информации - коммуникацию, по крайней мере до определённого момента.
Вообще я для себя отметил следующую цепочку:
Понимание -> Продуманность -> Стройность -> Понимание
Если эта цепочка нарушается - получаем проблемы в будущем, только если написанный код никогда не будет использоваться, но это ещё хуже.
Переизбыток информации тоже ведёт к её недостатку. Люди игнорируют шум. Важен не объем отправленной информации, важен объем полезной полученной информации.
Ничего нового я не открыл, всё давно уже сказано в agile manifesto:
Individuals and interactions over processes and tools.