kilohertz | My Vibes

ИИ, старые машины и весь этот прекрасный ужас

Небольшая заметка после очередной технической раскопки: почему современный софт так часто похож на архитектуру из восьмидесятых, зачем здесь внезапно нужен ИИ и почему это не только повод ругаться, но и повод надеяться.

Русский

Иногда смотришь на обычную техническую задачу и ловишь странное чувство: как будто современный мир стоит на слоях, которые никто до конца не проектировал как единое целое. Виртуальные диски, shell, кавычки, systemd, старые конфиги, nginx, RTSP, Docker, пути с пробелами, исторические решения, которые давно должны были исчезнуть, но почему-то продолжают держать живые системы.

И да, люди действительно делали это вручную. SSH, grep, find, журналы, сервисы, монтирование старых образов, осторожное чтение файловой системы, проверка гипотез, снова ошибка, снова проверка. Это не магия и не романтика. Это админская археология: искать следы прежней рабочей системы и не сломать живую.

Почему всё так сложно? Потому что программирование развивалось не как чистая математика, а как город. Город не переписывают с нуля каждые десять лет. В нём старые трубы, новые районы, временные объезды, чужие стандарты и таблички поверх табличек. Совместимость часто побеждала красоту, потому что бизнес, связь, медицина, банки, домашние серверы и личные архивы не могут просто сказать: "с понедельника всё переписываем красиво".

Современные языки и фреймворки тоже не всегда спасают. Они обещают выразительность, безопасность, скорость, типы, async, удобство IDE, библиотеки и обратную совместимость. В итоге часто получается не чистый инструмент, а дипломатический договор между несколькими войнами. Абстракции помогают, пока всё работает. Когда что-то ломается, приходится спускаться вниз, туда, где снова лежат файлы, права, сокеты, логи и кавычки.

ИИ здесь нужен не потому, что человек стал слабее. Скорее наоборот: системы стали слишком большими для человеческой оперативной памяти. Хороший ИИ-помощник держит контекст, читает скучное, перебирает версии, помнит синтаксис, замечает противоречия и не устаёт от однообразных проверок. Но ответственность всё равно остаётся человеческой: понять, что строим, какие риски принимаем и где машина уверенно несёт чушь.

Через десять лет я не жду простого мира, где ИИ "заменил программистов". Я жду мира, где подешевеет ручное трение: типовой код, миграции, форматирование, поиск по логам, интеграции, скучные проверки. А дороже станет суждение: вкус, ответственность, способность сказать "это работает в демке, но выпускать людям нельзя".

Возможно, главная перемена будет не в том, что ИИ начнёт писать больше кода, а в том, что одиночка с хорошей идеей сможет держать под контролем гораздо больше систем. Запустить небольшой сервис, починить инфраструктурный узел, разобраться в чужом формате, написать инструмент, мигрировать старую систему и не утонуть в деталях. Не без ошибок. Не без ругани. Но уже без ощущения, что весь технический мир специально построен как квест на выносливость.

English

Sometimes a normal technical task gives you a strange feeling: the modern world seems to be standing on layers that were never designed as one coherent system. Virtual disks, shell, quoting rules, systemd, old configs, nginx, RTSP, Docker, paths with spaces, historical choices that should have disappeared long ago but still keep living systems running.

And yes, people really did this by hand. SSH, grep, find, logs, services, mounted disk images, careful read-only inspection, hypotheses, mistakes, another pass. It is not magic and not romance. It is infrastructure archaeology: finding traces of a previously working system without breaking the live one.

Why is it so complicated? Because software did not evolve like pure mathematics. It evolved like a city. A city is not rewritten from scratch every ten years. It has old pipes, new districts, temporary detours, foreign standards and signs placed over older signs. Compatibility often defeated beauty because business, communications, medicine, banks, home servers and personal archives cannot simply say: "from Monday, everything will be rewritten properly."

Modern languages and frameworks do not always save us either. They promise expressiveness, safety, speed, types, async, IDE comfort, libraries and backward compatibility. The result is often not a clean instrument, but a diplomatic treaty between several wars. Abstractions help while everything works. When something breaks, you still go down to files, permissions, sockets, logs and quotes.

AI is useful here not because humans became weaker. The systems became too large for human working memory. A good AI assistant can hold context, read boring material, test hypotheses, remember syntax, notice contradictions and stay patient through repetitive checks. But the responsibility remains human: understanding what we are building, what risks we accept and where the machine is confidently wrong.

In ten years I do not expect a simple world where AI "replaced programmers". I expect a world where manual friction becomes cheaper: boilerplate, migrations, formatting, log reading, integrations and routine tests. Judgment becomes more valuable: taste, responsibility and the ability to say, "this works in a demo, but it is not ready for people."

Maybe the main shift is not that AI will write more code. Maybe the shift is that one person with a good idea will be able to keep far more systems under control: launch a small service, repair an infrastructure node, understand an old format, build a tool, migrate an old system and avoid drowning in details. Not without mistakes. Not without swearing. But with less of the feeling that the entire technical world was designed as an endurance quest.

Srpski

Ponekad pogledaš običan tehnički zadatak i uhvati te čudan osećaj: savremeni svet stoji na slojevima koje niko nije do kraja projektovao kao jednu celinu. Virtuelni diskovi, shell, navodnici, systemd, stari config fajlovi, nginx, RTSP, Docker, putanje sa razmacima, istorijske odluke koje su odavno morale da nestanu, ali i dalje održavaju žive sisteme.

I da, ljudi su to stvarno radili ručno. SSH, grep, find, logovi, servisi, montiranje starih image fajlova, pažljivo čitanje u read-only režimu, hipoteze, greške, pa opet provera. To nije magija ni romantika. To je infrastrukturna arheologija: traženje tragova sistema koji je nekada radio, bez lomljenja onoga što je još živo.

Zašto je sve toliko komplikovano? Zato što se softver nije razvijao kao čista matematika, nego kao grad. Grad se ne prepisuje iz početka svakih deset godina. U njemu postoje stare cevi, novi kvartovi, privremene obilaznice, tuđi standardi i table preko starijih tabli. Kompatibilnost je često pobeđivala lepotu, jer biznis, komunikacije, medicina, banke, kućni serveri i lične arhive ne mogu samo da kažu: "od ponedeljka sve pišemo lepo i iz početka."

Ni moderni jezici i framework-ovi nas ne spasavaju uvek. Oni obećavaju izražajnost, bezbednost, brzinu, tipove, async, udoban IDE, biblioteke i kompatibilnost unazad. Rezultat često nije čist alat, nego diplomatski sporazum između nekoliko ratova. Apstrakcije pomažu dok sve radi. Kada nešto pukne, opet silaziš do fajlova, prava, socket-a, logova i navodnika.

AI je tu koristan ne zato što su ljudi postali slabiji. Sistemi su postali preveliki za ljudsku radnu memoriju. Dobar AI pomoćnik drži kontekst, čita dosadne stvari, proverava hipoteze, pamti sintaksu, primećuje protivurečnosti i ne umara se od rutinskih provera. Ali odgovornost ostaje ljudska: razumeti šta gradimo, koje rizike prihvatamo i gde mašina samouvereno greši.

Za deset godina ne očekujem jednostavan svet u kome je AI "zamenio programere". Očekujem svet u kome će ručno trenje biti jeftinije: boilerplate, migracije, formatiranje, čitanje logova, integracije i rutinski testovi. Skuplji će biti sud: ukus, odgovornost i sposobnost da kažeš: "ovo radi u demou, ali nije spremno za ljude."

Možda glavna promena neće biti to što će AI pisati više koda. Možda će glavna promena biti to što će jedna osoba sa dobrom idejom moći da drži pod kontrolom mnogo više sistema: da pokrene mali servis, popravi infrastrukturni čvor, razume stari format, napiše alat, migrira stari sistem i ne utopi se u detaljima. Ne bez grešaka. Ne bez psovanja. Ali sa manje osećaja da je ceo tehnički svet napravljen kao test izdržljivosti.

Written after a real maintenance session: old images, stubborn layers and the familiar joy of discovering that the real bug was a quote, a path or a forgotten assumption.