Сложность простоты
Классный доклад про то, какая бывает сложность (понимания) систем. Вертится вокруг двух осей: сами системы бывают сконструированные и инкрементально «выросшие», и получится они могут простыми и понятными или нетривиальными, где без пухлого талмуда документации и не разберешься. Чем-то напоминает классификацию из фантастики, о котором я писал ранее.
Сложность может быть как связана с сутью решаемой проблемы, так и быть «наносной» или спонтанной, привнесенной самой системой. При этом очень тяжело определить, а что собственно является «естественной» сложностью, и основные «революции» происходили в попытке пошатнуть статус-кво. У некоторых разработчиков может выработаться привычка к переусложнению/перепроектированию из-за того, что они считают сложность, привнесенную системой, естественной. Наблюдал такое у некоторых коллег.
С бардаком, который может возникнуть от череды мелких улучшений без четкого определенной стратегии, в целом, все очевидно — эджайл, техдолг и все такое. Одно из качеств, которое важно при конструировании систем — умение говорить «нет».
Докладчик описывает характеристики систем из каждого квадранта, рассказывает о присущих им проблемам и рискам, приводит примеры. Один из грустных выводов — большая часть полезных систем приходят из категории “сложные”/“выросшие”, и изменить это довольно тяжело, т.к. многое на них завязано.