О растущей сложности
В 2004 году Стиви написал: “You don’t work in the software industry”.
В этой заметке я хочу поразмышлять над парой пунктов его текста:
- Работа, которую мы делаем, никогда не заканчивается.
- Системы со временем становятся только сложнее.
Можно перефразировать это так: «мы чиним очень усердно, но все всегда сломано».
Бесконечные границы
В качестве примера приведу путь человечества от bare metal к контейнерам:
Как видно, горизонты только расширяются.
В подобных случаях я ощущаю дискомфорт от противоречия: нельзя повернуть назад, т.к. вернутся старые трудности, но количество новых проблем только увеличивается. Особенно болезненно это в условиях разработки по контракту: срок устанавливается извне и ресурсов на поддержание растущей системы нет.
Все будет только хуже
Картина выглядит так, будто решением проблем является не действие, а процесс:
Пытаясь сделать все правильно раз и навсегда, я поворачивался против этого процесса и получал по зубам.
Но если не получается справиться с болью, сделай боль частью себя.
Вокруг давно используют этот принцип:
- Кто-то устал бороться с изменением требований в проектах и придумал agile manifesto.
- Кто-то устал бороться с ошибками людей и придумал Blameless PostMortems.
- Кто-то устал бороться с распределенными системами и придумал Principles of Chaos Engineering.
Во всех этих примерах люди осознанно приняли неизбежное как часть своей рутины. Возможно, рост сложности наших систем — неотъемлемая часть их разработки, и стоит в полной мере это учитывать.
В качестве итогов, я оставляю напоминание самому себе:
- Инициатива приводит к ответственности.
- Инновации приводят к сложности.
- Прогресс неостановим, поэтому невозможно избежать инициативы и инноваций.
- Лучше быть там, где есть достаточно людей для работы над пунктами 1 и 2.