Как сложность формирует будущее программного обеспечения?
В эпоху стремительного развития технологий и постоянного поиска путей автоматизации и повышения производительности, важность осознания и принятия сложности в программном обеспечении часто уходит на второй план. Однако, как отмечает команда Thoughtworks в своем полугодовом обзоре Technology Radar, именно сложность является ключевым аспектом, который необходимо не просто признать, но и использовать в свою пользу.
С каждым новым выпуском Technology Radar, список технологий, которые обсуждаются, продолжает расти, что отражает увеличение количества способов решения проблем. Это, безусловно, положительный момент, поскольку рынок предлагает технологам множество вариантов. Однако это также увеличивает когнитивную нагрузку: появляется больше вещей, которые нужно изучить и оценить.
Одним из примеров перераспределения сложности является переход от монолитной архитектуры к микросервисам. Микросервисы решают многие проблемы поддержки и разработки, возникающие в монолитных архитектурах, но в то же время предъявляют новые требования к инженерным командам, требуя более зрелых практик и процессов. Это подчеркивает, что каждое технологическое решение лишь перераспределяет сложность, а не устраняет ее.
Также важно отметить, что технические решения имеют свойство переорганизации сложности, что требует внимательного управления сложностью, чтобы избежать серьезных последствий для производительности и эффективности инженерных команд. Одним из способов управления сложностью является использование "разумных умолчаний" в проектах, что помогает удерживать команды от соблазна новизны и хайпа, связанных с новыми технологиями.
Интересно, что инструменты, помогающие справляться со сложностью, не всегда являются новыми. Например, в последнем выпуске Technology Radar упоминается методика моделирования отказов на основе риска, происходящая от анализа видов и последствий отказов (failure modes and effects analysis, FMEA ), практики, датируемой периодом после Второй мировой войны.
Ключевым вызовом в программном обеспечении сегодня является принятие сложности, а не попытки минимизации ее в ущерб процессам, практикам и управлению. Основной вопрос заключается в том, осознает ли отрасль это.