Имя нам дало правило из математики. Оно совсем простое: строка клеток, каждая закрашивается или нет по одному и тому же условию, и так шаг за шагом. Условие умещается в одну строчку, и ничего сложного в нём нет.
А получается из него треугольник Серпинского — узор, внутри которого сидит он же, и так до любой глубины. Из одной закрашенной клетки, без единого сложного шага.
Сложное — не значит непредсказуемое
Таких правил ровно 256, и почти все ведут себя скучно: картинка либо застывает в полосы, либо рассыпается в шум. Наше — девяностое по счёту — не делает ни того, ни другого.
Узор у него растёт без конца и повторяет сам себя на каждом масштабе. И при этом он известен заранее: чтобы узнать, как всё будет выглядеть на миллионном шаге, проходить миллион шагов не нужно.
Обычно ждёшь, что за сложным результатом стоит сложный замысел, а за предсказуемым — что-то примитивное. Здесь ни то ни другое не верно. Сложность берётся не из сложности правила, а из того, что правило соблюдается.
Что на самом деле сломалось в разработке
Про ИИ принято говорить, что он пишет код. Пишет. Это самая скучная часть новости.
Настоящая перемена в том, что исполнение подешевело в разы. Написать модуль, обложить его тестами, перебрать пять вариантов вместо одного, выбросить неудачный и переписать начисто вместо того, чтобы латать, — всё это стоило недель и потому решало не «как лучше», а «что мы потянем». Изрядная часть архитектурных решений принималась по остаточному принципу.
Когда исполнение дешевеет, эти компромиссы отваливаются сами. Остаётся то, что не дешевеет никогда — понять, что вообще нужно строить, и решить, что из построенного не стыдно выпускать.
Дешёвое исполнение поднимает цену решения
Об этом почти не говорят, хотя про ИИ говорят без остановки. А следствие неприятное. Если предложить вариант стало почти бесплатно, самым дорогим местом в проекте становится то, где вариант принимают.
Раньше плохое решение проявляло себя медленно. Пока его реализуют, кто-нибудь успевал споткнуться и сказать вслух. Теперь оно реализуется за час, целиком, со всеми последствиями, и спотыкаться уже не обо что.
Отраслевые замеры показывают то же самое с другой стороны. У команд с ИИ растёт пропускная способность и одновременно падает стабильность поставки: больше изменений доезжает до продукта, и больше из них ломается. Ускорение не создаёт проблему. Оно её показывает.
Поэтому мы и не считаем, что ИИ заменяет инженера. Он снимает работу, которая никогда особо ценной не была, и делает несравнимо дороже ту, что была.
Команда, собранная под это
У растущей организации есть соблазн, поддаться которому легче лёгкого. Появилась проблема — добавили процедуру, появилась ещё одна — добавили ещё, и через год у команды регламент на сорок страниц, который целиком не соблюдает никто, включая автора. И не работает он как раз потому, что не соблюдается целиком: правило, которое держат через раз, даёт не структуру, а шум.
Мы держим обратное. Правил мало, они простые, исключений у них нет, а главное из них звучит скучно и стоит дороже всего остального — решение принимает человек, исполнение ведёт машина. Планирование, архитектуру и то, как продукт устроен для пользователя, на автомат не отдаём.
Вот почему с проектом справляется маленькая команда. Людей не стало больше. Перераспределилась работа: механика ушла к модели, за людьми осталось всё, где нужно решать, — и вот на это их хватает на весь проект, а не на его кусок.
Почему в итоге это имя
Можно было назваться словом. Номер правила нравится нам тем, что он ничего не обещает и не просит верить на слово.
Сложные вещи не обязаны начинаться со сложного замысла. Они получаются, когда простые основания соблюдаются без исключений и им дают поработать достаточно долго. Про узор это теорема. Про продукты — наблюдение, но пока оно нас не подводило.