Очень красивая статья про то, куда движется программирование в целом! (и как следствие, предсказание, получится ли достичь RSI и сверхинтеллекта)
Одним абзацем для опытных техдиров: разработка больших систем — это моделирование реальности, важна когерентность моделей между собой, наша главная задача — управление сложностью. Нейросети хорошо оптимизируют замкнутые задачи с быстрыми петлями обратной связи и бессмысленны, когда нужно дожидаться ответа из реального мира, а большинство настоящего софта — второго типа. Примененяя модели для изменения больших систем, мы прямо сейчас идем в ловушку, из которой потом будем мучительно выбираться.
❧
Автор умудрился объяснить суть разработки больших систем на пальцах, так что перескажу некоторые тезисы. Рекомендую почитать первоисточник.
❧
IT-системы моделируют реальный мир. В хороших программах, разные модели говорят на одном языке, автор называет это когерентностью системы. В плохих — каждая отдельная модель корректна, но они несовместимы между собой и из-за этого для каждого изменения приходится кучу всего переделывать.
Вообще, софт постоянно нужно менять из-за меняющихся требований. Поэтому, скорость и стоимость внесения изменений — это один ключевых параметров качества софта.
Обычно, с добавлением фичей, с ростом системы, её качество падает. Чем ниже когерентность — тем больше сил нужно тратить на поддержание работоспособности и тем ниже скорость доставки новых бизнес-фич. Автор предполагает, что есть переломная точка, после которой скорость доставки фичей уходит в ноль.
Все, кто работал с легаси большими системами, знают эту ловушку.
В статье очень красивая иллюстрация кода как графа и гениальная анимация того, как если с каждой фичей уделять достаточно сил на улучшение системы, то со временем она становится всё более стройной, а если чуть-чуть оставлять мусора — как уже через 100 коммитов всё превращается в клубок спагетти.
Автор очень красиво и понятно описывает задачу изменения работающих систем через замену водопровода в старом здании, перестройки парусника в линкор на плаву и корабль Тезея. Я обычно теми же словами объясняю бизнесу, что если мы возьмем супер умных чуваков и дадим им бесконечно времени — то они наверняка придумают способ, как пересобрать двигатель самолета во время полета. Но зачем?
То, что водопровод переусложнен — видно даже не-технарю. С софтом всё сложнее, мы бродим по лабиринтам кода и не можем объяснить сложность людям, которые сами в них не терялись.
Нейросети хорошо оптимизируют модели изолированных, замкнутых задач, типа шахмат или го, где небольшой набор правил описывает всю вселенную и можно запустить «быструю петлю обратной связи» и плохи в оптимизации моделей, которые для проверки требуют обращения в реальный мир с его задержками.
Большинство задач, для которых мы пишем софт — второго типа.
Автор делает вывод, что нейросети плохо поддерживают и тем более наводят порядок в больших системах. И как следствие — вряд ли смогут поддерживать своё собственное развитие, тот самый рекурсивный сверхинтеллект, взрывным ростом которого нас пугают.
Заканчивается статья тем, что весь современный важный опенсорс — это во многом пример того, как люди десятилетиями поддерживали внутреннюю гармонию (когерентность) крупных систем. И что хорошо бы не разломать всё это за пару месяцев с помощью ИИ.
Даже если не согласен с выводами автора, можно поучиться качеству концептуализации мира. Красиво!


Polina
уже из краткого овервью — супер интересно и впрямь, и хорошо описывает интуитивные сомнения по поводу бесконтрольного использования ИИ (и вполне неинтуитивные наблюдения вроде того, что бОльшая часть ревью уходит на то, чтобы убирать странные куски, лишние проверки, гармонизировать код, и тд).
стало интересно — а кто автор? в смысле я вижу, что автора зовут кажется Kristen Maevyn, но это кто-то знакомый/из дружественных проектов/команд?
👍️
Sergey Aksёnov
Но разработка такого софта - как раз задача первого типа)
😍️
Сергей Коваленко
Может все и не так страшно. Социально-экономический внешний мир изначально не является системой (в понятиях системного анализа), ни открытой, ни закрытой. Но софт у нас кто-то да живет, во всяком случае некоторое время способеб оставаться адекватным.
👍️
Vitály Magyari
То почему если я натравлю агента на код базу, буду его пинать - пиши как тут везде, а не как лучше... 😁
Всеволод Зайковский
Сначала прочитал статью, вдохновился примером про сантехников и очень крутым визуальным стилем автора (особенно "ах" картинка разработчика перед огромным лабиринтом).
Но потом понял, что в статье как будто бы вообще ничего нового нет. Если брать аналогию из той же "сантехники", но перенести её в мир реальной стройки - то проектировщикам сейчас при запросе на капитальный ремонт или реконструкцию действительно нужно изучить весь объект целиком, даже если заказчик хочет внести 2-4 точечные модернизации. И они берут на это пол года/год, только за изучение. А потом ещё год на проектирование. И это ещё даже не реализация! на это еще года 2 уйдет.
Если же не брать аналогию со стройкой, а сразу рассуждать про софт, то переписывание систем с нуля или почти с нуля (глобальный рефакторинг) - так это вообще очень частая история. Всем знаковый распил монолита на микросервисы при росте системы - доИИшная история, которой уже сто лет в обед.
В общем написано хайпово, но как будто бы ничего нового. Единственное, что эта статья в очередной раз повторяет - что нейронки хорошо пишут код, но плохо удаляют код
Roman Romanov
Завтра тулы и модели подрастут и они смогут и это делать нормально. Это не сверхзадача в целом