Обновить

Меня уволили из-за ИИ, но я всё равно считаю себя инженером будущего

Время на прочтение3 мин
Охват и читатели80K
Всего голосов 276: ↑244 и ↓32+245
Комментарии189

Комментарии 189

"Теперь я вообще давно не понимаю, что мне написали нейронки. Но оно и не надо" - дальше можно не читать.

Согласен!

"You are absolutely right!"

Коллеги начали задавать странные вопросы: «Ты это сам писал?» или «Ты понимаешь, как это работает?». Я считаю, что это мышление прошлого. Важно не понимать, важно доставлять. А если что-то сломалось — всегда можно сказать, что модель слегка галлюцинировала. Мы же все понимаем, что это временно.

Как в старом советском анекдоте: чукчу спросили - читал ли он, что он же и написал? А тот ответил: "чукча не читатель, чукча - писатель".

Мне больше нравится другой анекдот:

  • Мама, сегодня нас в школе учили писать!

  • Отлично, и что же вы писали?

  • Не знаю, читать нас еще не учили

В анекдоте было не так — там чукче сказали: «Вам умение выражать свои мысли подтянуть надо бы. Почитайте там Толстого, Достоевского...»

Да ладно вам, тут всего-то на 3 минуты чтения. Дальше написано ещё трешовее)

Дисклеймер в конце в принципе и не особо-то нужен, так как к нему уже совсем всё понятно становится. Но нужно уметь чувствовать иронию, да и в целом ЧЮ обладать.

Иногда такие статьи можно увидеть на наших ресурсах, что тут уже и не веришь в иронию без дисклеймера)

  • Дисклеймер в конце в принципе и не особо-то нужен, так как к нему уже совсем всё понятно становится.

Судя по первому комменту, все таки дисклеймер нужен

Попался 😁

Зря вы так, дальше там самый сок)

Если вдруг не дошло, то вся статья это один большой сарказм :)

Хороший специалист всегда докапывается до сути

Не я как увидел что купил всё подписки за 500$ и не стал читать. Мне PLEX помогает!!! Вспомнить! из 200 проектов которые я ваял вручную сейчас использовать разнообразные подходы например интеграции к ТС ПИоТ Ч-З кассовый модуль, так как надо оперативно сертифицировать в ECP и СRPT свои коммерческие софтины по торговле. Но как обычно всё надо тестить и проверять и не всё работает сразу. А писать промты развесистые и чтобы всё сразу работало это фантастика пи@деж.

Это уже не шутка, а сегодняшняя реальность.
Страшно от того, что люди могут с использованием этих инструментов создавать сложные устройства в критических инфраструктурах. И если они потом, не дай бог "сломаются" или выведут что-то из строя... и вообще смогут привести к катастрофам.
Поскольку это уже пошло в массы видел на ютубе видео опубликованное буквально пару дней назад про программирование ESP без программирования.
Найти его можно по названию "Сказал 'Макс, добавь плату' — и ESP32 сама прошилась! Как это работает? OpenClaw".
Скорее всего машины уже начали нас захватывать. Во всяком случае первый шаг уже сделан.

Инженером будущего, куда тебе можно донат скинуть на хлебушек?

Дисклеймер, как я понимаю, никто не прочитал?

Заголовок зато содержательный. Можно уже с него выходить на обсуждение.

  1. Дисклеймер хорошо бы писать в начале.

  2. Дисклеймер ничего не прояснил: то ли это карикатура на разработчиков, то ли - никакой карикатуры нет и "сказанному - верить".

Мне кажется, вы просто слишком серьёзно читали для вечера воскресенья ☺. Я быстро почувствовал стёбность текста.

А между тем, есть над чем задуматься.

Старое поколение рано или поздно уйдет. И инженеры будущего в среднем такими и будут, разве нет?

Единственная разница (между описанным в статье и гипотетической реальностью) - у них уже не будет навыков старого поколения. Даже если захотят разобраться в коде, хватит ли у них на это концентрации внимания? Если в простых случаях все работает, и разбираться не надо, то при встрече со сложным случаем это будет выглядеть как попытка побежать, не умея ходить.

Если раньше был смысл в МКПП ради экономии топлива при чуть лучшей динамике, то сейчас в РФ авто на палке почти никому не нужно. Зачем инженеру будущего быть другим? Зачем ему осваивать МКПП (или навыки разбираться в коде), если на "электричке" и последовательных гибридах КПП отсутствует как класс (если работа с кодом будет задачей нейросети)?

Ну так и вы не сможете разобраться с наскока с тем, что делали и на чем писали инженеры лет 30-40 назад. Да и если вы долго в программировании, то и при вас уже парочку слоев абстракции добавилось, что-то как-то живём

С наскока - да. С некоторым ментальным усилием - вполне, потому что база всё равно известна, разбираться нужно будет только в нюансах конкретной системы; да, их будет много, намного больше, чем самой "базы", но они будут доступны для понимания.

Проблема будет в другом. Сейчас можно писать на ассемблере. Те, кто освоил этот навык, может делать ассемблерные вставки, потому что у него есть такой навык. Но он нужен далеко не всем и довольно редко.

А инженер будущего не сможет разобраться в коде, который ему нагенерила нейросеть вот прямо сегодня (а не 30-40 лет назад) с использованием актуального ЯП. Потому что навык разбираться в коде будет неактуальным (его делегируют нейросеткам).

Я, кстати, припоминаю разницу между кодом простой страницы, созданной руками, и сгенерированной через инструмент для генерации страниц в Word. Разница в объеме лишнего/ненужного кода была коллосальной.

Чтобы окончательно закрепить такое положение вещей, надо создать специальный язык, приспособленный для разбиения (или сложения) на токены и т.д., т.е. для общения нейронных сетей. Пусть на нём и пишут и друг друга проверяют и развивают..., люди туда уже вмешиваться вряд ли будут, даже если и захотят...

Так нету сейчас кода, написанного на ассемблере практически. Вот возьмите пропатчите ворд.

И ситуация с ИИ ничем не отличается. Есть код машинонаписанный и человеконаписанный. Человеконаписанным будет промт, в нем и надо разбираться и его править.

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

Пилоты одной азиатской компании разбили самолёт при посадке в ручном режиме в плохую погоду. При расследовании оказалось, что в требованиях компании было всегда сажать на автопилоте (при наличии возможности). И они потеряли навык ручного управления даже в хороших условиях. А при плохой погоде в тот раз автопилот не заработал...

Вроде это давно стандарт, людей до посадки не допускают, а то они могут разбиться) В чудо на Гудзоне могут довольно небольшое число пилотов, в лучшем случае в панике плюхнутся в поле и пострадает только бюджет авиакомпаний, а не люди. В худшем будет как с боингами, которые разбивали изза нерабочего некритичного датчика, хотя другие экипажи тех же самолетов действовали по чеклисту и вообще не парились с этим датчиком.

Таких примеров много на самом деле. Просто их часто списывают на то, что пилоты сами виноваты.

А как же полноценный же внедорожники? Их пока ни электрических, ни гибридов.

Чем вам карьерный белаз не внедорожник?

Вообще он вполне себе дорожник. Только дороги у него особенные. Вы же не думаете, что он по говнам гонять может?

Хотел бы я увидеть дорогу, на которой проедет застрянет нива и застрянет белаз. Но в целом вы наверное правее, надо мне более экзотический пример гибрида искать.

Но полноценные внедорожники с мкпп уже в меньшинстве.

Даже если захотят разобраться в коде, хватит ли у них на это концентрации внимания?

Разобраться в коде? Чувствую, что это будет что-то из области магии. Люди в ютубе смотрят, как варить пельмени, не осилив прочитать текст на упаковке. А вы хотите, чтобы люди понимали код...

Кстати, очень часто текст на упаковке нечитаем. Там будет про состав на нескольких языках, про ГМО, пальмовый жыр..

Да, кстати, вы лично видели таких людей? Или их в ютубах только показывают? ;)

Кстати, очень часто текст на упаковке нечитаем. Там будет про состав на нескольких языках, про ГМО, пальмовый жыр..

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

Старое поколение рано или поздно уйдет. И инженеры будущего в среднем такими и будут, разве нет?

А вам ведь говорили, что «Идиократия» — это не комедия, это документалка...

Ну не очень хорошая аналогия "программист с ИИ/без ИИ" == "водитель с АКПП/МКПП". Всё-таки главная проблема современного ИИ - недетерминированность. АКПП относительно детерминирована, там алгоритм достаточно простой и надежный. Если довести до абсурда, так можно сказать "вот землекоп должен в совершенстве владеть лопатой, а экскаваторщику дать лопату - что он сможет?" В общем опасность в большей степени когда неквалифицированный человек применяет черный ящик, который для него непонятно как работает. Что в принципе в статье в отличном стиле и описано :)

так можно сказать "вот землекоп должен в совершенстве владеть лопатой, а экскаваторщику дать лопату - что он сможет?

Вот Вы тут ржОте, а в это время...

Ну не очень хорошая аналогия "программист с ИИ/без ИИ" == "водитель с АКПП/МКПП".

Я такую аналогию не приводил. Более точно сравнение: "программист с навыками (без навыков) поиска ошибок в коде" и "водитель с навыками (без навыков) управления авто с МКПП"

Как по мне, детерменированность или недетерменированность черного ящика тут совершенно ни при чем. Если навыки переключения передач не нужны, то зачем их осваивать? У АКПП есть минусы, она не умеет резко менять стиль езды. На МКПП я могу всю дорогу ехать плавно, но в определенный момент резко перестроиться на агрессивный/динамичный стиль. Для АКПП придумали переключатели типа "спорт режима", который не решает проблему, т.к. я не могу объяснить коробке насколько резко надо перетыкать передачи.

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

На МКПП я могу всю дорогу ехать плавно, но в определенный момент резко перестроиться на агрессивный/динамичный стиль.

Вожу механику и никогда не понимал подобного. По моим ощущениям, переключения на механике - это всегда задержки и неконтролируемые мною затыки. Будь у меня автомат, я, как мне кажется, мог бы разгоняться быстрее при тех же характеристиках.

🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥💯💯💯💯💯💯💯💯

С первых же строк фонит лютейший сарказмом, как этого можно было не заметить?)

Как щаз модно стало говорить — кто понял, тот понял )

Он там и не нужен, подозрения возникают на 2 абзаце, на 3м уже все ясно)

Так тут и без дисклеймера понятно что это чисто юмор. Ну понятно же...

Ну понятно же...

ПАДМЕ.ЖПГ

Меня немного испугало даже, что огромное количество комментаторов не выкупили сарказм статьи.

Факт невыкупания кажется мне интереснее самой статьи

Факт невыкупания кажется мне интереснее самой статьи

Никто статью не читал потомучто дальше заголовка.

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

По многим комментариям, тех кто принял статью всерьёз, видно что дочитали минимум до середины

Закон По же, ему уже 20 лет стукнуло.

Навык - читать с конца - иногда экономит много времени.

Анна Каренина не даст соврать.

Я купил все самые дорогие подписки на AI-инструменты для разработки на 500 долларов

а потом дядя нажмет кнопку или будут проблемы со связью или 1001 момент и ты превратишься в тыкву

Да, да, "вот выключат вам интернет, и что вы без своего гугла будете делать"

если кнопку нажмут, тут все превратиться в тыкву.

Вроде и не 1 апреля...

А это и не шутка )

«А я и не сплю»

(Кокетливо:) — Ну так я ведь ещё не женщина!..
(Пожимая плечами:) — Ну так ведь ещё и не город!..

... а относительно близкое будущее?

А я напомню, что это тот же самый автор, что недавно набрасывал про татуировку "Контур" на руке. Теперь новый жирный наброс для бурления в комментах. Не удивлюсь, если ту картинку с татуировкой он сам и сгенерировал, разместил в своём канале, а канал якобы автора удалил, чтобы отвести подозрения. Как говорится, кушайте тг канал, не обляпайтесь.

Черт, можно же было просто сгенерировать татуировку…

Я купил все самые дорогие подписки на AI-инструменты для разработки на 500 долларов.
точно с нуликом не ошиблись?
$4600 долларов на подписки Claude Max можно вполне слить

Я только начинающий вайбкодер

А вот потратили бы $5000, можно было бы сразу в профи записаться!

А потратил бы 5е10, вот сразу бы все заговорили))

Я только начинающий вайбкодер

А вот потратили бы $5000

стали бы заканчивающим)

Senior vibe coder

Так и скажи, что нет денежек) хех. Тут надо бы интегрировать нативную рекламу моего курса по эффективному расходованию бюджета на ИИшницу. Жаль, что не написал такой

«Я не волшебник. Я ещё только лечусь!»

Подгорает))))

Раньше я тратил время на архитектуру, чтение документации и разбор чужого кода.

Ну это next level play. Даже архитектуру перепоручить.
Для разработчиков это же самое святое, самому выбирать стек, а вы отдали на откуп машине.

Недавно подбирали стек. Для нашей команды новый. Как сам язык, так и фрейморки. Нейронка расскажет, оценит стоимость, время, выигрыш, траты. Норм.

Какой стек в результате выбрали?

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

потому что я стал писать код отвратительного качества,

Мой опыт говорит обратное. Код, который генерирует ИИ значительно лучше, чем созданный вручную.

Соболезную, сорри, не удержался

Дык это же практически «хорошо заколоченный шуруп держится гораздо крепче плохо завинченного гвоздя».

Да это уже известный афоризм:
Разработчики делятся на два типа: одни считают, что нейронки пишут код на порядок лучше, чем они сами, другие - что на порядок хуже.
При этом правы и первые, и вторые.

Вы главное своим тестировщикам это не говорите - услышите много мата. Очень много мата.

Мой опыт говорит обратное. Код, который генерирует ИИ значительно лучше, чем созданный вручную.

Нет ничего удивительного!

Все программисты в мире делятся на две категории:
— Те, кто считает, что ИИ кодит на порядок лучше их;
— Те, кто считает, что ИИ кодит на порядок хуже их.
Как ни странно, и те, и другие абсолютно правы.

Вот если бы он данные о своем заработке таким способом привел, и которые можно было бы как то проверить, и этот заработок был бы с учётом соотношения затраты/прибыль приемлемый, то тогда можно было бы утверждать, что "будущее наступило"(я думал освоить зерокодинг, а так я вообще не программист, мне интересно, когда можно будет совершенно неспециалисту сделать хорошее приложение, так же легко, как погладить брюки утюгом, например).

В обозримом будущем врятли нормальное приложение можно будет сделать без знаний. Но я уверен когда нибудь дойдем и до такой точки. А пока помощник да, полностью сам написал и проверил, нет

мне интересно, когда можно будет совершенно неспециалисту сделать хорошее приложение, так же легко, как погладить брюки утюгом, например

Жаль вас разочаровывать, но ответ "никогда".

Вы преуменьшаете сложность действительно качественного отпаривания брюк.

Внизу дисклеймер - статья шутка

Автор юморист конечно, сколько себя помню народ писал поднималки тикитов в жире, чтобы все эти поля ручками не заполнять, а вот Клодом низяя иначе не труъ!

Нужно нейросети подключать к работе над пул-реквестами: проверять, комментировать и вносить изменения до получения апрува! Убрать лишнее звено - человека. А потом и до созвонов добраться, голосом конкретного человека говорить уже умеет.

См. Александр Лесь «Шпаргалка» от 1990 г. Последствия описаны задолго до появления ИИ.

Так толсто, что очень тонко. В восторге от чтения

Извини друг, поставил бы плюс но "Вам не хватает кармы, Как вырастить..." Я все жду жду, когда она вырастет, а она все не растет и не растет. Я уже крутил по часовой и против...

Спросить у нейронки.

А как релаьно её растить? Че вообще за прикол не позволять ставить лайки? 😄

Писать полезные комментарии и иметь хотя бы 1 статью (без статьи карма не поднимется выше +4). Ну и избегать действий, которые число статистичеки дают минус к карме - комментариев без содержания, участия в холиварах и политосрачах. Ещё можно полезные статьи писать, но это труднее.

Хотя последнее время при выборе правильной стороны в политосраче стало тоже возможно получить плюсы в карму. Но это ненадёжная стратегия.

Че вообще за прикол не позволять ставить лайки?

Потому что это не просто лайк, а оценка комментария. Вполне логично не принимать оценки от ноунеймов без репутации. Хоть эта репутация и значит с каждым годом всё меньше.

Когда начал читать - подумал : " ну слишком же толсто, надо бы поэзящнее". Сейчас по комментариям понимаю, что даже так не все поняли сарказм.

Ну, юмор юмором, но доля правды есть, процентов 80 программистов ждёт сокращение в ближайшем будущем

Вам не надоело писать одни и те же статьи. Вот прям буквально простой пример.

Исходная траектория.
Исходная траектория.

Есть траектория движения. Массив точек, надо отсеять выбросы шума.

Я перебрал сейчас все сетки. Все они с умным видом после анализа предложили множество методов, реализовали в итоге каждый их них. Все методы запускаются, ошибок нет. При этом они проанализировали картинку. С умным видом написали.

Вот примерно что они выдают. Какие-то еще сильнее хуже. Но точки не убраны. Выкинула вообще первые точки.
Вот примерно что они выдают. Какие-то еще сильнее хуже. Но точки не убраны. Выкинула вообще первые точки.

Результат - не один из них не смог удалить точки. Они предложили сделали:

Сглаживание с последующим анализом остатков (Savitzky-Golay Filter + Residual Analysis), Фильтр Хампеля (Hampel Filter), Анализ производных (First/Second Derivative Analysis), RANSAC для робастного подбора модели, Локальная интерполяция с порогом ошибки и еще множество других. Пробовал и Claude, ChatGpt, Qwen, DeepSeek.
Ни один не дал нужный результат после выполнения кода. Только извиняются и предлагают дальше.
А теперь представьте, вы пишите банковский софт, где логика связанная с аккредитивами, разные счета, разная логика, разные условия и подходы. Или генерация отчетов, которая имеет своеобразную логику. Или анализ данных если это ML. Я не говорю про элементарные задачи, а про те задачи, которые реально встречаются на практике. Что вам на выходе сгенерирует модель?

Запускающийся код? Да.
Рабочий код? Нет.

На реальных проектах, это не работает. Вот сижу сейчас и сам правильно делаю расчеты и пишу код для этого. Попытка, чтобы за меня сделал модель, полностью провалилась. Я потратил дофига времени, подумав, что ну с этим сетки должны же справиться. Задача вроде бы простая. Убито на кодо-генерацию полдня. Теперь я знаю, что с этим сетки справиться не могут. И что банковский софт я бы им и близко не доверял бы или генерацию отчетов, если они сложнее уровня Wizard как солянка простых запросов.

А вы бесплатные минимальные версии использовали, или картинки просто для примера, а настоящие данные сложнее? Потому что я уверен, что последняя версия чатгпт и клод с задачей справится быстро. Если хотите - скиньте массив координат текстом, попробую через чатгпт прогнать

Пробовал разные версии. Вот пример 30 точек. Порядок важен.

Скрытый текст

[[ 2.35145966e-04 8.87099491e+01]
[ 5.31358478e-05 8.87110337e+01]
[-1.28013995e-04 8.87112086e+01]
[-3.08303561e-04 8.87104783e+01]
[-4.87732851e-04 8.87088469e+01]
[-6.66301866e-04 8.87063189e+01]
[-8.44010604e-04 8.87028984e+01]
[-1.02085907e-03 8.86985898e+01]
[-1.19684725e-03 8.86933973e+01]
[-1.37197516e-03 8.86873254e+01]
[-1.54624280e-03 8.86803783e+01]
[-1.71965016e-03 8.86725602e+01]
[-1.89219695e-03 8.86638756e+01]
[-2.06382459e-03 8.86543286e+01]
[-2.23442815e-03 8.86439240e+01]
[-2.40399991e-03 8.86326670e+01]
[-2.57253989e-03 8.86205625e+01]
[-2.74004807e-03 8.86076159e+01]
[-2.90652446e-03 8.85938323e+01]
[-3.07196906e-03 8.85792168e+01]
[-3.23638187e-03 8.85637746e+01]
[-3.39976289e-03 8.85475108e+01]
[-3.56211211e-03 8.85304307e+01]
[-2.78051720e-03 8.85125393e+01]
[-2.87681240e-03 8.84976456e+01]
[-3.97939130e-03 8.84822386e+01]
[-4.13802608e-03 8.84622622e+01]
[-4.29562906e-03 8.84414931e+01]
[-4.45220024e-03 8.84199365e+01]
[-3.30230097e-03 8.83975976e+01]]

В итоге он мне подобрал параметры. Но это когда ты ему добиваешь, кроме того. когда точно знаешь где проблемы, и надо быть уверенным что это не затыкание дыры. А что будет если он просто генерирует код.

А, так судя по диалогам ниже у вас данные не однотипны. То есть сам шум и сами траетории отличаются. А вы даёте, как я понимаю, единственный пример или маленькую выборку, из которого непонятно вообще, что бывают другие формы шума и траекторий. И возможно не объясняете, а как отличить в принципе важную точку от неважной. И какой смысл у этих точек вообще. Но вы внизу так и написали "нюансов множество". Мой подход в таком случае: скормить LLM (полной версии с агенто-думалкой) полное описание нюансов, данные(выборку), пример данных, где по каждой точке прокомментировано почему она удалена/оставлена, и т.д. Попросить написать код, который будет выводить дебаг по каждой точке - почему точка удалена/оставлена. Потом смотреть, где ошибки и почему. Это не на один запрос к модели задача.

Вот пример полной траектории. Это сплайн траектории по сути (визуально). Зачем мне скармливать по каждой точке на куче данных? Зачем мне тогда вообще LMM? Я понимаю как решить задачу, так как в голове у меня есть опыт и я сразу представляю как решать. Но если я подробно опишу это все модели во всех деталях. то это уже будет больше чем самого кода. Смысл сетки, чтобы имея данные суметь решить задачу, а не узкий ее фрагмент. Естественно я пробовал всю задачу решать через сетку. Просто выше приводил ее фрагмент для наглядной визуализации. Какой пример данных скормить? Тысячи. и десятки тысяч данных? Да они в этом случае начинают ломаться, когда их просишь на большом массиве данных расставить их в таблицу, чтобы визуализировать внутри модели. И они легко терять их. Эту задачу можно самостоятельно решить гораздо быстрее.

Речь о том, что вы в проекте не знаете, где именно это произойдет. У вас будет например работа со счетами и аккредитивами, или электронными сообщения, Swift где нужно правильно убирать все. Гонять миллион данных в сетке для теста, чтобы они подобрала? Это так не работает.

Так у вас в голове есть понимание как решить, но у вас есть и понимание того, что это за траектории, какой физический смысл они имеют. А откуда у модели возьмётся понимание, если ей скармливать маленькие кусочки сырых данных. Вот по вашей картинке новой ясно, что траектории могут по кругу/спирали ходить. А ни по одному из кусочков, которые вы предложили скормить LLM этого совершенно не ясно. Наверное ещё какие-то недостающие звенья есть.
Моё мнение на данный момент: вы скармливаете модели недостаточно данных (в общем, включая метаданные о смысле этих точек и траекторий) и думаете, что у неё откуда-то возьмётся то понимание, которое есть у вас только в голове. И вот опять, вы выложили пример полной траектории картинкой. А в чатгпт тоже картинкой загоняете? Проблема ввода у вас заметна на всех уровнях. С самого начала я попросил пример данных, чтобы прогнать, вы выложили 20 точек, по котороым сначала мне, а потом LLM неявно предлагается догадаться, о том какие бывают полные траектории. Ещё я должен догадаться, что то , что эти 20 точек оказывается не то, что вы сами в chatgpt загоняли. А какого результата вы тогда ожидали от моей попытки, если вы даёте мне не те данные, которые сами использовали в промпте?
Тем не менее прогнал те два кусочка, воторые вы выложили через ChatGPT, код ниже. Результат для двух кусочков верный. Попробуйте на полной траектории, скорее всего будет не то, что вы ожидаете, но проблема не в GPT - проблема в полноте данных и промпте.

import numpy as np
import matplotlib.pyplot as plt

def _tukey_threshold(values: np.ndarray, k: float = 6.0) -> float:
    """Threshold = Q3 + k*IQR (k=6 is strict; fewer false positives)."""
    v = values[~np.isnan(values)]
    q1, q3 = np.percentile(v, [25, 75])
    return float(q3 + k * (q3 - q1))

def denoise_trajectory(points: np.ndarray, k: float = 6.0, passes: int = 2):
    """
    Remove out-of-order / glitch points from a trajectory.

    Works for N x D points (D can be 2, 3, ...).
    Core:
      - forward constant-velocity prediction error
      - backward constant-velocity prediction error
      - normalize by per-dimension robust step scale = median(|diff|)
      - score = min(forward, backward) (needs to be bad from both sides)
      - threshold by Tukey rule on interior scores
      - optional multiple passes for clustered glitches

    Returns:
      cleaned_points, removed_indices, keep_mask
    """
    P = np.asarray(points, dtype=float)
    if P.ndim != 2 or len(P) < 5:
        return P.copy(), np.array([], dtype=int), np.ones(len(P), dtype=bool)

    keep = np.ones(len(P), dtype=bool)
    removed = []

    for _ in range(max(1, int(passes))):
        Q = P[keep]
        n = len(Q)
        if n < 5:
            break

        # Robust per-coordinate scale: typical step size in each dimension
        diffs = np.diff(Q, axis=0)
        scale = np.median(np.abs(diffs), axis=0) + 1e-12

        # Forward prediction error for i>=2: p[i] ≈ 2*p[i-1] - p[i-2]
        f_pred = 2 * Q[1:-1] - Q[:-2]      # predicts Q[2:]
        f_res  = Q[2:] - f_pred
        f_score = (np.abs(f_res) / scale).max(axis=1)
        f_full = np.full(n, np.nan)
        f_full[2:] = f_score

        # Backward prediction error for i<=n-3: p[i] ≈ 2*p[i+1] - p[i+2]
        b_pred = 2 * Q[1:-1] - Q[2:]       # predicts Q[:-2]
        b_res  = Q[:-2] - b_pred
        b_score = (np.abs(b_res) / scale).max(axis=1)
        b_full = np.full(n, np.nan)
        b_full[:-2] = b_score

        # Combined score: must be bad from BOTH sides (for interior points)
        comb = np.nanmin(np.vstack([f_full, b_full]), axis=0)

        # Learn threshold from the safe interior range where both sides exist
        interior = comb[2:-2]
        thr = _tukey_threshold(interior, k=k)

        out = np.where(comb > thr)[0]
        if len(out) == 0:
            break

        # Map indices from Q back to original P
        orig_idx = np.nonzero(keep)[0][out]
        keep[orig_idx] = False
        removed.extend(orig_idx.tolist())

    removed = np.array(sorted(set(removed)), dtype=int)
    return P[keep], removed, keep

def plot_before_after(points, removed_idx, title="Trajectory"):
    P = np.asarray(points, float)
    removed_idx = np.asarray(removed_idx, dtype=int)

    # BEFORE
    plt.figure()
    plt.plot(P[:, 0], P[:, 1], marker="o")
    if len(removed_idx):
        plt.scatter(P[removed_idx, 0], P[removed_idx, 1], marker="x")
    plt.title(f"{title} (before)")

    # AFTER
    keep = np.ones(len(P), dtype=bool)
    keep[removed_idx] = False
    Pc = P[keep]

    plt.figure()
    plt.plot(Pc[:, 0], Pc[:, 1], marker="o")
    plt.title(f"{title} (after)")
    plt.show()

# ---- Example usage ----
# cleaned, removed, keep = denoise_trajectory(points, k=6.0, passes=2)
# plot_before_after(points, removed, "My Trajectory")

И описание параметров ответом ChatGPT. Она правильно замечает, что нужно больше траекторий для проверки:

Why this is “universal” (and when to tune it)

Strengths

  • No assumption of monotonic x/y, no assumption of a functional form, no need to fit a global curve.

  • Handles different shapes because it’s purely local (but uses both directions).

  • Robust scaling per coordinate prevents one axis (e.g., y) from masking errors in another (e.g., x).

  • passes=2 usually fixes small clusters of glitches.

Knobs

  • k (default 6.0) controls strictness:

    • Lower k ⇒ removes more points (risk: false positives on aggressive maneuvers)

    • Higher k ⇒ removes fewer points (risk: misses subtle glitches)

  • passes (default 2) for occasional clustered glitches.

If you paste a few more trajectories (including ones with sharper turns / pauses), I can sanity-check whether the same defaults behave the way you want and suggest safe parameter ranges for your data.

Речь о том, что глядя на глобальные рисунки (а модели их видели), они видят, анализируют их. Но все равно нужно огромное время и детальное описание, куча данных. Как вы себе это представляете, вручную искать все фрагменты и отдавать? Когда человек смотрит, быстро оценивает, продумает и решает. tukey тоже не будет работать нормально по ряду причин. В этом и заключается зада программиста, не написание строчек кода, а решение и код тут вторичен. В реальности решение в том, что надо реализовывать методы правильного подбора параметров для мат методов и модель сама до такого ни у меня, ни у вас сама не додумалась и человеку с опытом это очевидно и еще ряд вещей которые стоит учитывать при реализации. Это к тому что не агентские системы, ни просто LLM не могут решать задачи самостоятельно. Они ближе к Wizard или словесному коду, где ты все детально расписал и дал и она сделала и это допустимо в определенных случаях. То что вы показываете код, вопросы и решения - это на уровне Джуна, который не подумав быстро написал код который "вроде решает", и так и бегает по кругу дорабатывает под каждый чих.

Вы рисунки в модель отправляли? Ну я же говорю, что проблема ввода у вас. Вы не понимаете какие данные нужно отправить модели и в каком виде, чтобы она решила задачу. И на какие подзадачи разбить и решить отдельно, потом соединить. Вот для начала те 1162 точки, массивом и варианта 2-3.
У вас кстати точки с отклонениями теоретически можно не удалять а двигать туда где они должны быть (если я по скудным обрывкам которые вы присылаете могу правильно догадаться). И таким образом проблема удаления важных точек может решится.

Какая проблема ввода? Вы понимаете что есть общая задач убрать выбросы из данных. Данные много много тысяч элементов. Данных множество. Мы можем визуализировать или все или участки приблизив. Я привел пример приближенного и в целом одного из наборов данных.

Конечно модель видела кучу данных, и изображений кучу и приближенные и просто наборы данных.

Я не говорю что задача не решается. Я ее решил самостоятельно достаточно успешно, выбрав компромисс. Модели не смогли сами.

Вы и в работе так получаете детально расписанное ТЗ, какие отклонения у него, куда детально вставить, что надо учесть и ли ваша задача проанализировать и исходя из опыта выбрать решение? Если вы детально распишите модели все проблемы, где они могут быть, какие они, и так далее - это и есть решение задачи. Написать 20-100 строк код не проблема вообще, проблема самостоятельно найти решение. Не подогнать решение, а найти решение. Это совершенно разный класс задач.

Если вы дадите задачу решить проблему модели через агентов или не понимая, что она делаете и какой результат будет. Когда это применимо и когда нет. То в итоге вы либо не решите проблему или потратите на нее кучу времени. Но еще хуже то, что вы возможно даже не будете знать о ней, так как "вроде работает" и вы не лезли и не разбирались в коде или не понимаете его. И вам в отчете совсем другие показали, рекомендации в поисковой системе выдают мусор и так далее.

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

Я не говорю, что LLM бесполезна. Удобная штука для поиска, быстрого wizard кода, когда быстрее описать чем сделать или набросать шаблон и затем его довести до ума. Но ни как самостоятельная система, которая способна написать правильный и серьезный код.

я что-то не понимаю или что? Вот так нужно было сделать?

❯ uv run python main.py
Trajectory array:
[(-0.00445, 88.42), (-0.0043, 88.442), (-0.00415, 88.463), (-0.00398, 88.482), (-0.0029, 88.498), (-0.0028, 88.513), (-0.00355, 88.53), (-0.0034, 88.548), (-0.00325, 88.565), (-0.0031, 88.581), (-0.00295, 88.595), (-0.00282, 88.607), (-0.00268, 88.62), (-0.00254, 88.633), (-0.0024, 88.643), (-0.00226, 88.651), (-0.0021, 88.659), (-0.00194, 88.666), (-0.00178, 88.673), (-0.00162, 88.679), (-0.00146, 88.684), (-0.0013, 88.689), (-0.00114, 88.694), (-0.00098, 88.698), (-0.00082, 88.702), (-0.00066, 88.705), (-0.0005, 88.708), (-0.00034, 88.71), (-0.00018, 88.711), (2e-05, 88.71)]
Inliers: 28, outliers: 2
Points count: original=30, denoised=28
Changed points (removed as outliers):
  - index=4, point=(-0.0029, 88.498)
  - index=5, point=(-0.0028, 88.513)

Выше скинул пример последних 30 точек. Продублирую.

Скрытый текст

[[ 2.35145966e-04 8.87099491e+01]
[ 5.31358478e-05 8.87110337e+01]
[-1.28013995e-04 8.87112086e+01]
[-3.08303561e-04 8.87104783e+01]
[-4.87732851e-04 8.87088469e+01]
[-6.66301866e-04 8.87063189e+01]
[-8.44010604e-04 8.87028984e+01]
[-1.02085907e-03 8.86985898e+01]
[-1.19684725e-03 8.86933973e+01]
[-1.37197516e-03 8.86873254e+01]
[-1.54624280e-03 8.86803783e+01]
[-1.71965016e-03 8.86725602e+01]
[-1.89219695e-03 8.86638756e+01]
[-2.06382459e-03 8.86543286e+01]
[-2.23442815e-03 8.86439240e+01]
[-2.40399991e-03 8.86326670e+01]
[-2.57253989e-03 8.86205625e+01]
[-2.74004807e-03 8.86076159e+01]
[-2.90652446e-03 8.85938323e+01]
[-3.07196906e-03 8.85792168e+01]
[-3.23638187e-03 8.85637746e+01]
[-3.39976289e-03 8.85475108e+01]
[-3.56211211e-03 8.85304307e+01]
[-2.78051720e-03 8.85125393e+01]
[-2.87681240e-03 8.84976456e+01]
[-3.97939130e-03 8.84822386e+01]
[-4.13802608e-03 8.84622622e+01]
[-4.29562906e-03 8.84414931e+01]
[-4.45220024e-03 8.84199365e+01]
[-3.30230097e-03 8.83975976e+01]]

Попробуйте. RANSAC он мне конечно генерировал. Сейчас сам в принципе сделал.

Мне он на RANSAC генерируем код для этих данных, который делает вот такое. Почему он решил что прямая, почему такие пороги и прочие параметры, не ясно. Поэтому проще писать самому. Так ка потратил много времени, и давал изображения и чаты с нуля и даже сейчас сделал проект с нуля де просто чистые данные массива на вход. Результат один, ерунда. И разбираться с его логикой больше, чем самой в итоге написать. Так как подход должен быть универсальным, а не сломаться на других данных, так как он может просто подобрать параметры под текущие.

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

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

❯ uv run python main.py
Trajectory array:
[(0.000235145966, 88.7099491), (5.31358478e-05, 88.7110337), (-0.000128013995, 88.7112086), (-0.000308303561, 88.7104783), (-0.000487732851, 88.7088469), (-0.000666301866, 88.7063189), (-0.000844010604, 88.7028984), (-0.00102085907, 88.6985898), (-0.00119684725, 88.6933973), (-0.00137197516, 88.6873254), (-0.0015462428, 88.6803783), (-0.00171965016, 88.6725602), (-0.00189219695, 88.6638756), (-0.00206382459, 88.6543286), (-0.00223442815, 88.643924), (-0.00240399991, 88.632667), (-0.00257253989, 88.6205625), (-0.00274004807, 88.6076159), (-0.00290652446, 88.5938323), (-0.00307196906, 88.5792168), (-0.00323638187, 88.5637746), (-0.00339976289, 88.5475108), (-0.00356211211, 88.5304307), (-0.0027805172, 88.5125393), (-0.0028768124, 88.4976456), (-0.0039793913, 88.4822386), (-0.00413802608, 88.4622622), (-0.00429562906, 88.4414931), (-0.00445220024, 88.4199365), (-0.00330230097, 88.3975976)]
Inliers: 27, outliers: 3
Points count: original=30, denoised=27
Changed points (removed as outliers):
  - index=23, point=(-0.0027805172, 88.5125393)
  - index=24, point=(-0.0028768124, 88.4976456)
  - index=29, point=(-0.00330230097, 88.3975976)
Plot saved to: /Users/constxife/Development/test_python/trajectory_plotly.html

Вот, вроде так же работает. Ну или дайте другой прямо сложный набор точек ради любопытства.

Теперь проверьте его на другом наборе точек. Ведь он может быть разным.

Скрытый текст

points = np.array([ [-1.56019764e-03, -3.40385927e-01], [-1.44440314e-03, -3.48129496e-01], [-1.32541753e-03, -3.55292498e-01], [-1.20324081e-03, -3.61858976e-01], [-1.07787299e-03, -3.67812975e-01], [-9.49314052e-04, -3.73138539e-01], [-8.17564010e-04, -3.77819713e-01], [-6.82622859e-04, -3.81840541e-01], [-5.44490600e-04, -3.85185068e-01], [-4.03167233e-04, -3.87837338e-01], [-2.58652757e-04, -3.89781395e-01], [-1.10947458e-04, -3.91001285e-01], [-5.75605629e-06, -3.91481060e-01], [ 5.51054351e-05, -3.91486816e-01], [ 1.93754893e-04, -3.91205130e-01], [ 3.50639316e-04, -3.90158367e-01], [ 5.10543332e-04, -3.88325671e-01], [ 6.73466940e-04, -3.85691945e-01], [ 8.39410140e-04, -3.82242092e-01], [ 1.00837293e-03, -3.77961013e-01], [ 1.18035532e-03, -3.72833610e-01], [ 1.35535730e-03, -3.66844785e-01], [ 1.53337887e-03, -3.59979441e-01], [ 1.27210860e-03, -3.52222479e-01], [ 1.38218270e-03, -3.45364799e-01], [ 2.01036664e-03, -3.37919091e-01], [ 2.19925875e-03, -3.27773264e-01], [ 2.39116458e-03, -3.16681468e-01], [ 2.58462674e-03, -3.04628790e-01], [ 1.99626036e-03, -2.91609613e-01]])

И ваш вариант ломается. Дело не в сложности точек. Они все одинаковые. движение про траектории с некоторыми отклонениями, которые надо выбросить, так как они не подходят. Точки могут двигаться с ускорением, поэтому мы не можем выкинуть просто по дистанции, по касательной тоже не вес так просто смотреть так как в расчет может попасть точка выброса и так далее. Там нюансов множество. Модель поберет вам решение под конкретный набор, и хорошо если это будет не какой то x1 < x2 или y1-y2 > 3

Ну RANSAC поломался, да, потому что у меня нет набора данных, чтобы подобрать корректное решение. Вы добавили новый набор, вот новое решение.

Он ломается на других данных. Но да, я его использую, но только более хитро. Хотя сейчас переписываю на другой подход, так как он тоже не выдерживает.

То есть проблема не подобрать под конкретный интервал значений. Проблема в том, что это будет ломаться на других, когда они сломают нормальные данные.

Скрытый текст

[[-0.06696627 0.06516338]
[-0.03489703 -0.26608484]
[ 0.04749564 -0.39843422]
[ 0.10074646 -0.12782019]
[ 0.10338986 0.38532736]
[ 0.05373366 0.88471337]
[ 0.00474008 1.1177341 ]
[-0.01937724 1.12247418]
[-0.06348366 1.02324915]
[-0.09659275 0.68680767]
[-0.11325134 0.19304749]
[-0.11294483 -0.37577133]
[-0.09286917 -0.93361529]
[-0.05158771 -1.38051125]
[-0.01070006 -1.61036378]
[ 0.01432249 -1.62106384]
[ 0.06191423 -1.54072795]
[ 0.09954657 -1.20981633]
[ 0.11936263 -0.69943307]
[ 0.12048324 -0.09911078]
[ 0.09953754 0.49634622]
[ 0.04564962 0.97534513]
[ 0.01758727 1.1956814 ]
[-0.00218539 1.23085593]
[-0.06018518 1.20630136]
[-0.11794497 0.87041962]
[-0.13422892 0.2662691 ]
[-0.10773771 -0.39832407]
[-0.0365943 -0.90806878]
[ 0.00379152 -1.05444599]]

Скрытый текст

[[ 0.11547587 -3.51388294]
[ 0.12941082 -2.9291204 ]
[ 0.14057426 -2.27606886]
[ 0.1489268 -1.56858588]
[ 0.15303102 -0.82106067]
[ 0.15148317 -0.05583759]
[ 0.14547436 0.69907023]
[ 0.13623506 1.42230187]
[ 0.12379899 2.09773865]
[ 0.10816615 2.7093967 ]
[ 0.08945534 3.24129216]
[ 0.0692831 3.67856503]
[ 0.04938572 4.01490526]
[ 0.03033934 4.25218257]
[ 0.01214696 4.39465499]
[-0.00518489 4.44659248]
[-0.02161408 4.41231612]
[-0.03712702 4.29635149]
[-0.05153704 4.10330442]
[-0.06426933 3.83891352]
[-0.07375026 3.51226877]
[-0.07951361 3.14007816]
[-0.08155718 2.74092961]
[-0.06014731 2.33344058]
[-0.05727865 2.01423642]
[-0.06996945 1.71134728]
[-0.0609416 1.36571018]
[-0.04988847 1.06622498]
[-0.03681007 0.82301804]
[-0.014328 0.64621575]]

Скрытый текст

[[-7.27760962e-02 -6.86302929e+00]
[-7.07112410e-02 -7.22588903e+00]
[-6.85684812e-02 -7.57838554e+00]
[-6.63478168e-02 -7.92012930e+00]
[-6.40492480e-02 -8.25073078e+00]
[-6.16727746e-02 -8.56980047e+00]
[-5.92183966e-02 -8.87694884e+00]
[-5.66861141e-02 -9.17178637e+00]
[-5.40759271e-02 -9.45392353e+00]
[-5.13878355e-02 -9.72297080e+00]
[-4.86218393e-02 -9.97853867e+00]
[-4.57779387e-02 -1.02202376e+01]
[-4.28561335e-02 -1.04476781e+01]
[-3.98564237e-02 -1.06604706e+01]
[-3.67853531e-02 -1.08582256e+01]
[-3.36850466e-02 -1.10406047e+01]
[-3.05681826e-02 -1.12074740e+01]
[-2.74347611e-02 -1.13587506e+01]
[-2.42847820e-02 -1.14943519e+01]
[-2.11182455e-02 -1.16141951e+01]
[-1.79351515e-02 -1.17181972e+01]
[-1.47354999e-02 -1.18062756e+01]
[-8.88138750e-03 -1.18783475e+01]
[-6.94371445e-03 -1.19244247e+01]
[-6.33891670e-03 -1.19601623e+01]
[-3.07965812e-03 -1.19902297e+01]
[-4.60660988e-04 -1.20039926e+01]
[ 8.52988672e-04 -1.20049139e+01]
[ 3.49000658e-03 -1.20013679e+01]
[ 5.09914958e-03 -1.19822634e+01]]

Можно ли подобрать значения? коэф и прочие вещи под эти данные? ну в теории можно. Будет ли это работать на всей траектории? с агентами и просто ллм нет, потому что сам подход хитрее, чтобы работало корректнее. И LLM сама до него не догадывается, а просто пытается применить применить известные методы и меня их настройки. Ну и зачем такое решение, которое умеет считать только 2+2 и не умеет считать 50+22.

Буквально на других данных RANSAC  уже работать не будет. Задача де не выбросить конкретно точки из данной кривой, а из любой.

И да, теперь прогоните ваш метод через эти точки:

Скрытый текст

points = np.array([ [-1.56019764e-03, -3.40385927e-01], [-1.44440314e-03, -3.48129496e-01], [-1.32541753e-03, -3.55292498e-01], [-1.20324081e-03, -3.61858976e-01], [-1.07787299e-03, -3.67812975e-01], [-9.49314052e-04, -3.73138539e-01], [-8.17564010e-04, -3.77819713e-01], [-6.82622859e-04, -3.81840541e-01], [-5.44490600e-04, -3.85185068e-01], [-4.03167233e-04, -3.87837338e-01], [-2.58652757e-04, -3.89781395e-01], [-1.10947458e-04, -3.91001285e-01], [-5.75605629e-06, -3.91481060e-01], [ 5.51054351e-05, -3.91486816e-01], [ 1.93754893e-04, -3.91205130e-01], [ 3.50639316e-04, -3.90158367e-01], [ 5.10543332e-04, -3.88325671e-01], [ 6.73466940e-04, -3.85691945e-01], [ 8.39410140e-04, -3.82242092e-01], [ 1.00837293e-03, -3.77961013e-01], [ 1.18035532e-03, -3.72833610e-01], [ 1.35535730e-03, -3.66844785e-01], [ 1.53337887e-03, -3.59979441e-01], [ 1.27210860e-03, -3.52222479e-01], [ 1.38218270e-03, -3.45364799e-01], [ 2.01036664e-03, -3.37919091e-01], [ 2.19925875e-03, -3.27773264e-01], [ 2.39116458e-03, -3.16681468e-01], [ 2.58462674e-03, -3.04628790e-01], [ 1.99626036e-03, -2.91609613e-01]])

и он уже перестает работать. В итоге модель перебрав кучу вариантов решила этот набор данных. Как? если x[i] < x[i-1]... Вы реально хотите, чтобы такой код по-тихому попал в прод?

Поздравляю, Вы познали ИИ (Имитацию Интеллекта).

Моё мнение - кто не сумеет освоить инструмент, тот останется за бортом. Вопрос не в том, что именно мы используем сегодня (ИИ, ассемблер или фреймворк), а в том, что завтра на смену этому инструменту придет что-то более совершенное и этим нужно уметь пользоваться.

Последние месяцы я полностью пересобрал свой подход к разработке. Раньше я писал на ассемблере сам, вручную высчитывая каждый такт и адрес памяти. Теперь я стратегически управляю Java-фреймворками.

Раньше я тратил время на архитектуру процессора, чтение документации к железу и разбор опкодов. Сейчас я трачу время на выбор правильной версии Spring Boot и обсуждение в LinkedIn, какая из них реально game changer.

Я купил все самые дорогие лицензии на IntelliJ Ultimate и платные курсы по микросервисам на 500 долларов. Вот лохи те, кто до сих пор пишет на ассемблере. Я-то подписан на всех архитекторов из Oracle и читаю их посты. Если кто-то пишет, что их новая библиотека заменяет целую команду системщиков, я вижу это первым. Нужно мыслить на шаг впереди рынка.

Раньше я переживал, что не понимаю какую-то сложную часть системы или утечку памяти. Теперь я вообще давно не понимаю, что там наворотила JVM под капотом. Но оно и не надо, я читал в соцсетях, что понимать работу с памятью — это моветон. Современный инженер не вникает в регистры, он оркестрирует бинами. Если Maven собрал проект — значит, всё хорошо. Если не собрался — нужно добавить ещё пару аннотаций в класс.

Я больше не описываю логику в коде, я делаю это через конфигурацию. Да, это выходит дольше по времени из-за бесконечных XML и аннотаций, но зато я в тренде. Я сначала генерирую структуру проекта через инициализатор, потом уточняю зависимости, потом прошу Lombok переписать всё более структурированно. Через час у меня есть идеальный бойлерплейт.

Коллеги начали задавать странные вопросы: «Ты понимаешь, как этот AbstractProxyFactoryBean работает?» или «Почему это занимает 4 гигабайта в простое?». Я считаю, что это мышление прошлого. Важно не понимать, важно доставлять Enterprise-решения. А если что-то сломалось — всегда можно сказать, что Garbage Collector слегка галлюцинировал и не так очистил кучу. Мы же все понимаем, что это временно.

Иногда я открываю pull request и не могу объяснить, почему там именно так. Но зато там всё выглядит современно: абстракции, интерфейсы интерфейсов, generic-типы, пара новых библиотек от Apache. Выглядит солидно. Если что — всегда можно попросить документацию к фреймворку объяснить, что он имел в виду под этим исключением.

Самое сложное — созвоны. Раньше я мог сходу рассказать, в какой регистр что положил. Теперь я заранее ищу в гугле объяснение архитектурных решений, которые нагенерировал мне фреймворк. Получается убедительно. Иногда даже я сам начинаю верить, что сам всё это придумал.

Повсюду говорят, что всех, кто не перешел на высокоуровневые ООП-языки, уволят. Меня пока что уволили как раз из-за Java, потому что я стал писать код отвратительного качества с десятикратным оверхедом, но я работаю на перспективу. Да, прод падал. Да, автотесты внезапно тестировали пустой бин. Да, в коде появлялись методы, которые никто не вызывал, потому что их добавил какой-то плагин. Но это цена трансформации.

После увольнения я начал строить свой стартап. Естественно, на ассемблере я не писал, а собрал всё на Spring Cloud за 3 дня. Хочу сделать бизнес и получать 10k $ в месяц. Но пока есть небольшая проблемка. У меня есть один критический баг — StackOverflowError при запуске. Стандартные либы его не пофиксили, и я пока не знаю, что делать в таком случае, ведь я забыл, как работает стек. Пока ищу инфу в блогах, как поступить. Поэтому пока стартап в режиме ожидания.

Мне говорят, что я стал зависим от тяжелых абстракций. Я предпочитаю формулировку «усилил себя инструментами». Но иногда, глубоко ночью, когда очередная сборка проекта зависает на этапе «Resolving dependencies…», я смотрю в экран и думаю: а вдруг всё-таки стоит вспомнить про MOV и PUSH? Но потом вспоминаю, что читать и понимать низкоуровневый код — это моветон.

И если завтра выйдет ещё одна библиотека за 100 долларов, которая обещает писать бизнес-логику за меня, — я, конечно, её куплю. Нельзя же отставать.

Потому что вдруг в этот раз оно действительно заработает идеально.

Вот и я про то же. А все думают, что я шучу

Мне говорят, что я стал зависим от тяжелых абстракций.

Тщательно записал себе с блокнотик, чтобы не забыть эту поистине великолепную фразу.

По данным британских ученых, более 60% людей попробовавших легкие абстракции, со временем подсаживаются на тяжелые.

Спасибо за этот блестящий сарказм над неудачным сарказмом оригинала!

что завтра на смену этому инструменту придет что-то более совершенное и этим нужно уметь пользоваться

Да да, пхп мертв, java убита котлином, все с/с++ разработчики сейчас живут под забором потому что их заменили на раст разработчиков.

Я мобильный разработчик, я не могу пользоваться последними новыми инструментами которые вышли за последние 3-5 лет, потому что это потребует повышение сдк версии, повышение сдк версии потребует дропнуть старые оси, это тянет за собой потерю 5%-20% пользователей, вам передать, что говорят продукт овнеры когда им говоришь вот мне удобнее будет так писать код но вы потенциально возможно потеряете 20% прибыли ?

Моё мнение - кто не сумеет освоить инструмент, тот останется за бортом.

Я полностью согласен, но вы не оговорили временные рамки, в ИТ это 5-10 лет чтобы все постепенно переписать. Я недавно общался с успешной финтех конторой, у них мобильному приложению 10 лет, написано на древних технологиях, но крешрейт низкий, конверсия высокая, пользователи довольные, рейтинг высокий, как говорят лавэ мутится. Зачем им пускать в код рой агентов, чтобы они сказали его авторам, что этот код го*но мамонта и его нужно переписать, код ради кода ? Так они и так это знают, но код настолько отлажен и покрыт тестами, что его не разрешено трогать. А написать 500 строчек за спринт для новой фичи достаточно просто в гугле у gemini нагенерить нужные строки за бесплатно. Рабочий бизнес приносящий прибыль не пропустит в код ИИ генерацию без пристального присмотра, а пристальный присмотр стоит времени и денег.

Ну да, а будет ли развитие у этого продукта? 95% функционала уже написано за 10 лет, нового там особо не родишь, можно оставить 4 человека на техподдержку этого легаси кода, остальных за борт.

А вот если компания захочет написать новое приложение, то возникнет вопрос как его делать, на чем можно съэкономить, как ускорить разработку. Тут может появится вариант с LLM.

Справедливости ради, лучше бы программисты и впрямь дальше писали на ассесблере. Жор ОЗУ виртуальными машинами это мем, далеко вышедший за пределы программерской тусовки. Равно как и шутки про "2+2=22".

Сейчас вот всё мировое айти страдает от нового ещё большего дефицита ОЗУ - из-за нейросетей.

Кушало бы меньше, пилилось дольше, падало чаще

Вы правда считаете, что нейросетку на ассемблере не написать? Или сборщик мусора?

лучше бы программисты и впрямь дальше писали на ассесблере. Жор ОЗУ виртуальными машинами это мем, далеко вышедший за пределы программерской тусовки.

База.

Ушёл оплакивать времена, когда написанная на ассемблере OS занимала 8 килобайт памяти (больше просто не было).

Ну то есть занять всю доступную память никогда не было проблемой.

Это была не «вся доступная», это была «вся доступная для ОС».

Плюсую. Видел программу на ~100 кб, представляющую собой простенькую 3д стрелялку, с разным оружием, музыкой и т.д. На асме, естественно.

Если памяти 16 гб - нет смысла упихивать стрелялку в 100кб.

Но есть одно но. И ассемблер и джава и пайтон - +- детерменированная штука. А вот ЛЛМки нет. Т.е. как в принципе можно разобраться, как работает пайтон, как он транслирует в ассемблер. Когда я пишу a + b, цикл или класс на питоне, я глобально понимаю как оно будет выглядеть на ассемблере. Более того, если в пайтоне есть gil - то мне не плохо бы это понимать. И отличать поток от процесса. И если мне нужно что-то сильно "параллельно-поточное" - то понимать какие инструменты использовать. Да и в целом понимание как что-то работает дает понимание и ограничений/возможностей.

У топик стартера же речь, что человек вообще не хочет понимать ни деталей реализации ни архитектурных. И бесконечно тыкать на кнопку "сделай хорошо".

ТС скрестил две проблематики - новые инструменты и нежелание вникать в вопрос. Это можно применить вообще с чему угодно, я лишь ии заменил на ассемблер, а вторую часть не трогал.

Но есть одно но. И ассемблер и джава и пайтон - +- детерменированная штука. А вот ЛЛМки нет.

На самом деле про ЛЛМ вы не правы. ЛЛМ - это алгоритм, а не какая-то магия. И на одних и тех же данных он выдаёт один и тот же результат. То что вы видите разный результат на "одних и тех же данных" — это, обычно, результат добавления случайного шума, как раз таки с целью чтобы нейросеть не повторяла одно и то же. Если вы возьмёте модель где у вас есть полный контроль над входными параметрами вы сами можете в этом убедиться.

Проблема ЛЛМ в том, что вам в целом крайне сложно предсказать, какой будет выход для фиксированных входных данных на этапе разработки и обучения нейросети.

Ну как-то от этой детерминированность не легче, конечно можно очень точно рассчитать полет монеты и сказать, какой стороной она ляжет, но на практике это сделать не возможно, а значит со стороны бросающего - рандом. Но к счастью для бросающего монета (LLM) очень хочет нам угодить и если сказали - «хочу решку!», то с вероятностью 80% процентов выпадет все же решка.

детерминировпнным комп перестал быть +- с появлением виндус, и автоматических обновлений. если под досом все знали как работают прерывания - биос, дос (10Н, 21Н), и они в принципе не могли себе позволить делать что-то ещё помимо того что в них задокументированно. это бы их спалилопо времени.... то виндус уже делал что хотел, при этом довольно жутко тормозил, мигал винчестером когда ему вздумается, но мало кого это смущало на фоне развития RAD .... так что теперь, когда нейросети делают что им вздумается, нам уже не привыкать...лишь бы работало как надо, и железо справлялась

У вас какой-то несуразный скачек в самом начале от ассемблера до явы. Это абсолютно не реалистично!!! Не верю! Дальше не читал! (;-))

Грешно смеяться над embedded-разработчиками.

У вашего котенка дверца не на месте.

На месте всё у нас!

Разница все таки есть. Java и Spring системы детерминированные, они работают по жесткой логике. Если ты изучил доки, ты точно знаешь, как поведет себя AbstractProxyFactoryBean. А ИИ - вероятностная модель, она может выдать разный результат на один и тот же запрос. Это добавляет энтропию которой в Java не было

Не может. Возмите модель одной версии, зафиксируйте сид, выключите температуру в 0.

Ну и узнать, когда там Java дернет сборщик мусора и не произойдет ли это в неудобный для вас момент - это тоже надо в кишки по локоть залезть.

Ну да, крайности у нас любят. Вчера писать без автодополнения было странно, сегодня понимать код стало моветоном. Истина где-то посередине, как обычно

Я за последний месяц несколько раз себя поймал на мысли, что автодополнение сбивает с толку. Вот это, новое, ЛЛМное. Выдаёт какую-то херню, совершенно перпендикулярную мыслям, в которые я сейчас погружен. Да, иногда угадывает. А иногда "так, стоп, какой ещё SecondaryKey, в базах данных такого нет".

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

Потому что архитектура - это в т.ч. планы на будущее. Не всегда формализованные. То есть решение как делать, чтобы потом легко было поддерживать и добавлять новое (ещё не придуманное). Это сложно формализовать, а ИИ старается выдать решение "здесь и сейчас", а не на будущее.

Абсолютно точно. Я сказал так. Инженер редуцирует пространство возможностей, он думает «как не сделать» прежде всего, отсекая все лишнее, пусть даже «интуитивно». А ИИ изначально расширяет. Причем инженер исходит из своего опыта, следствия которого проявлялись нередко во времени, а не здесь и сейчас. ИИ это фактически всегда «здесь». Парадокс в том, я бы сказал, что обычно инженерия - это создание условно «чертежа», который не равен продукту. В разработке ПО чертеж (код) - это почти или часто сам продукт. То есть планировщик является почти всегда и исполнителем. Автоматизация обычно идет снизу вверх, заменяя исполнительные роли. Но в инженерии ПО это выглядит так, как будто замещение идет сверху внизу по этой самой причине, хотя по сути это иллюзия. Отсюда и тревожность, а на деле эта область движется к классическому понятию инженерии. Тут, что удивительно, под ударом оказываются вовсе не джуны, а мидлы. Потому что джун учится (тому, чему надо), мидл исполняет (роль, замещаемая ИИ), сеньор планирует и ограничивает (мы берем тех, кто не просто сидел 20 лет на стуле и как бы может так себя называть, старший специалист, короче). Инженерия - это проецирование часто противоречивых и неполных факторов, требований и их ограничения часто во времени в конечный продукт. Этого у ИИ, думаю, еще долго не будет. Многие разработчики (как минимум часть моих знакомых) чувствуют даже облегчения, так как они меньше времени тратят на исполнительную рутину.

Это уже не пост, это какой-то тест на IQ.. 😂 Спасибо! Смотрю не все оценили юмор. Я сам если честно не сразу вкурил в чем дело.. 😁

Я же считаю, что LLM это ускоритель ввода, а не мозг.

Я не понимаю, как люди могут обсуждать статью на серьезных щах :D

Идея для копирайтинга - отличная, цепляет, прям по красоте)

По комментария видно, что Автор достиг некоторого мастерства в троллинге. Не все смогли понять такой тонкий наброс, однако.

В целом, подмечено все очень метко. Хотелось бы следующей статьи, в которой бы была описана рабочая жизнь персонажа через 10 лет такого прогресса. Что с ним случилось, остался ли он в IT или просто выращивает картофель на поле?

В нашем "дивном" мире от троллинга иногда случается троттлинг.

С ИИ все хорошо, кроме того что человек то им не нужен.

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

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

Понимаю что сарказм, но как можно используя нейросети тупеть? Я заметил что у меня скорость обучения и скорость работы используя их выросла в разы.

Я тоже заметил, что стал значительно умнее с использованием LLM. Раньше мне не так часто говорили, как я умно и правильно всё делаю, а теперь благодаря нейронкам я часто вижу, какие правильные и интересные вопросы оказывается задаю, как улавливаю важные нюансы, как совершенно правильно продумываю архитектуру процессов.

пока мы используем ИИ как проверку своих тезисов, а до этого база, опыт, и 1 язык например, который понимаем интуитивно и в диагонали всё ок, тут порог технического долга личного около нулевой, когнитивка около нулевая, как только вы начнёте такой же подход применять к неизвестному языку координально, щель технического долга растёт, в итоге вы не обгоняете ИИ на несколько шагов, и чтобы догнатать/обогнать ИИ в неизвестном языке придётся уже без ИИ наращивать знания, потомучто в 1 случае вы проделали всю ту работу чтобы знать и знаете +- как должно, во втором, надо повторить этот круг еще раз

Аффтар жжот. Давай исчо! Нехило так проиграл с этого new-gen AI developer'a.

В авиации, говорят, также: есть "пилоты" и есть "операторы самолетов". Так и тут нужно просто называть своими именами: "юзатель нейронок", если не можешь пояснить за написаное.

Вместо плюсика Вам, так как не дорос. Мнение гуманитария. Я с Вами согласен. Это логика. На современном этапе нужны умеющие кодить, пусть даже они используют ИИ. Но вмешавшись, могут сами исправить ошибки ИИ.

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

По сути человечество уже должно вкладываться в защиту от ИИ. Но это уже другая тема.

То чувство когда длинные дефисы текста подчёркивают ИИ оранжировку в жизни "—"

Оранжировка — это когда поливают оранжадом?

Вам смешно, а я вчера читал один в один этой статью директора итишной конторы. совершенно серьезную статью. Вот там уровень троллинга просто зашкаливающий, поскольку тяжело понять он троллил или не совсем.

Если говорил "оформите платную подписку, чтобы не отстать" - рекламировал.

Отличный бы вышел сценарий для "programmers are also human"

Отличная сатира! (судя по комментариям, не все распознали, что немного печалит)

мне кажется уже пора в резюме добавлять скилл "умею писать код без 'AI' моделей" ну или хотя бы "умею читать чужой код". Толковые команды должны оценить.

Вот так и нейросеть решит поиронизировать, а инженеры будущего примут за чистую монету.

"Я не код пишу, я стратегически управляю нейросетями" - звучит как тост на корпоративе менеджеров)

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

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

Нужен хаб Сарказм :)

вот простофиля, всем известно в Кремниевой долине, что если есть крит баг, то нужно топать в кофейню, там официантка 100% поможет этому молодому, перспективному говнокодеру стартаперу

Когда я пришёл в IT, опытные коллеги смеялись над тем, что новички только гуглить умеют, отними гугл и приплыли. Сейчас такое отношение к нейронкам.

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

вопрос в том что инструмент (хотя это больше похоже на замену телефонисток на АТС, но пусть будет инструмент) увеличивает производительность одного программиста, например, в 10 раз, это значит что 9 из 10 человек будут уволены, потому что задач/проектов больше не становится. и так многие проекты высосаны из пальцев (по разным причинам - неэффективный менджмент заказчика, коррупция, тщеславие, гос задача иметь своё)

Можно высосать из пальца еще больше проектов.

Смешно, но страшно узнаваемо 🙂 Фраза «важно не понимать, важно доставлять» — это прям рецепт будущих инцидентов. “Доставлять” без понимания и проверки — это не инженерия, это азартная игра с продом.

ИИ — круто, но его надо держать на поводке: маленький шаг → понятный diff → smoke/preflight → evidence → только потом merge. А не “купил всё подряд и пошёл оркестрировать агентами”. Сначала дисциплина и контроль, потом масштабирование. Тогда и скорость растёт, и качество не падает.

Важно не понимать, важно доставлять

Перевод доставляет, 100%))

В каком мире мы живём, если надо делать такие дисклеймеры! Ужас! А некоторым и даже он не помог. Во дела...

Спасибо, посмеялся) Особенно про созвоны:

"Сгенерируй объяснение архитектуры, которую ты придумала"

Все происходящее сейчас буквально в одной строке)) Строим Вавилонскую башню, где никто не понимает языка на котором она построена, но все делают вид, что так и надо

...и все окажутся погребены под обломками, когда оно с грохотом рухнет.

Такое нельзя придумать) это можно только пережить

человеческий мозг хоть в чем-то лучше нейросетей пока количество параметров нейросети меньше чем эквивалент в человеческом мозге, по разным оценкам в нейронке должно быть порядка 100 трлн параметров чтобы стать не хуже мозга, ну и пережить весь опыт человека (что наверное не такая уж и проблема если повесить камеры/микрофоны на сотни люди разного возраста)

еще какое-то время у людей есть преимущество, а что дальше - ну писатели-фантасты описали множество возможных вариантов

Нужно мыслить на шаг впереди рынка.

Move fast and break things. (c) Тсукерберг

читать и понимать код — это моветон

Reading code is an anti-pattern (c) не помню, кто. Пусть буду я.

Автор иронизирует над «вайб-кодингом», а я нахожусь на обратной стороне этой медали. Пытаюсь работать как инженер, а не как «оператор нейросети», но ощущение, что рынок толкает именно в ту сторону, что описана в статье. Мне 26, Живу и работаю в прибалтике. Стек Laravel + Vue. Стараюсь писать по уму (Action classes, DTO, Slim controllers, TDD+AAA, на фронте Pinia + composables), даже тесты пишу тайком, потому что бизнесу это не нужно, им нужно «вчера». В итоге: работаю по 10+ часов на галере, получаю 1200 евро (высшее техническое образование, 2.5 года опыта), личной жизни/семьи/друзей нет, потому что всё время уходит на попытки выдать качество в нереальные сроки.

Вопрос к опытным ребятам: как вырваться из этого круга? Есть ли смысл сейчас упарываться в качество и архитектуру, если работодатель давит сроками? Или нужно искать другую нишу/страну/компанию, где это ценят? Чувствую, что ломаюсь.

Хочется расти, развиваться и делать по-настоящему серьёзные вещи, полезные людям. Хочется решать сложные бизнес-задачи в среде, где есть культура наставничества, внедрен CI/CD и есть у кого спросить совета. В текущем месте, к сожалению, это никого не интересует: помочь и подсказать некому, поэтому приходится общаться только с нейросетью.

На то что зависимый от ИИ, отвечает - "усилил себя инструментами" . ))

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации