Вы сеньор архитект тим/тех лид. Требуется ли вам понимать, как *внутри* устроены проекты, сгенерённые AI-агентами?
Anonymous Poll
5%
Пофиг, главное чтобы работало по тестам и спекам
51%
Важно, по разным причинам
4%
Ещё не определились
41%
Я пока не этот
👍26🤔11❤6❤🔥3
Вы сеньор архитект тим/тех лид. Делаете ли вы ревью кода/архитектуры, сгенерённых AI-агентами?
Anonymous Poll
30%
Регулярно ревьюим всё
15%
Ревьюим разумно
1%
Изредка, случайно/нерегулярно
3%
Почти никогда
52%
Я пока не этот
👍36
Вы сеньор архитект тим/тех лид. Выполняете ли вы *вручную* рефакторинг кода/архитектуры, сгенерённых AI-агентами?
Anonymous Poll
11%
Регулярно рефакторим всё
23%
Рефакторим разумно
7%
Изредка, случайно/нерегулярно
4%
Почти никогда
55%
Я пока не этот
👍32
Короче, что выбираешь? )))
Anonymous Poll
40%
ship and hope for the best
60%
read 50 files of agent edits
✍27🔥8😁4❤1
Делаю для ментатов "свой ai-агент", будет код ревью, рефакторинг и обучалка в одном. Сперва для учебных решений, потом можно будет и ваш рабочий код проверять, а потом и архитектуру.
Сам движок, альфа-версию, собственно, я сделал (handmade 100%), на F#, модельку любую вообще можно выбрать (но хочу, чтобы работало в итоге вообще на любых дешёвых бесплатных нейронках).
Главное -- далее грамотно наполнять его базу, хочу загнать все знания программной инженерии за последние 60 лет, но главный акцент на формальных методах, математике, теории типов, текоркате... Всё планирую готовить вручную, так-то обычного поисковика более чем достаточно. Нейронки тут совсем шлак выдают.
Конечно, говорить агенту "сделай code review, вот тебе шаблонные skiils", это детский сад. Я сделал для начала базовый пайп 5-7 шагов, с разбором кода до AST, рефакторинг чистой семантики, program synthesis, вся база computer science. Вытаскиваем самые глубины смысла :)
А так как в проекте физически нету ничего кроме кода, и любые абстракции и архитектуры -- это чисто умозрительные концепции в уме, то в принципе очень-очень многое о системе в целом, можно сказать по довольно небольшой части кода, ну и изменить тоже(тут можно приплести голографический эффект, фракталы, квантовую физику бла бла бла :) .
Поэтому крайне важна соответствующая интуиция. Ну примерно как покермэны, получив десятку и туз, могут только по двум картам весьма точно оценить вероятность выигрыша :) Они тренируются специальным софтом, на рынке немало equity/odds trainers, покерных калькуляторов солверов, exploits, apd gto-комбы... При том, что тут есть глубокие инсайты из теории групп (вы же смотрели "Поедем с тобой в Макао"?).
Вот делаю примерно такое, только для программистов, с учётом, что человеческие скиллы стремительно сдвигаются именно в этом направлении (системные/архитектурные инсайты).
...Ну а пока добавьте в ваши агентские skills самую малышовую базу =>
Сам движок, альфа-версию, собственно, я сделал (handmade 100%), на F#, модельку любую вообще можно выбрать (но хочу, чтобы работало в итоге вообще на любых дешёвых бесплатных нейронках).
Главное -- далее грамотно наполнять его базу, хочу загнать все знания программной инженерии за последние 60 лет, но главный акцент на формальных методах, математике, теории типов, текоркате... Всё планирую готовить вручную, так-то обычного поисковика более чем достаточно. Нейронки тут совсем шлак выдают.
Конечно, говорить агенту "сделай code review, вот тебе шаблонные skiils", это детский сад. Я сделал для начала базовый пайп 5-7 шагов, с разбором кода до AST, рефакторинг чистой семантики, program synthesis, вся база computer science. Вытаскиваем самые глубины смысла :)
А так как в проекте физически нету ничего кроме кода, и любые абстракции и архитектуры -- это чисто умозрительные концепции в уме, то в принципе очень-очень многое о системе в целом, можно сказать по довольно небольшой части кода, ну и изменить тоже
Поэтому крайне важна соответствующая интуиция. Ну примерно как покермэны, получив десятку и туз, могут только по двум картам весьма точно оценить вероятность выигрыша :) Они тренируются специальным софтом, на рынке немало equity/odds trainers, покерных калькуляторов солверов, exploits, apd gto-комбы... При том, что тут есть глубокие инсайты из теории групп (вы же смотрели "Поедем с тобой в Макао"?).
Вот делаю примерно такое, только для программистов, с учётом, что человеческие скиллы стремительно сдвигаются именно в этом направлении (системные/архитектурные инсайты).
...Ну а пока добавьте в ваши агентские skills самую малышовую базу =>
1) Extract pure functions (separate effects)
2) Replace loops with map/filter + fold(reduce)
3) Reduce mutation / prefer immutability
4) Replace null/exceptions with Option/Result-style explicit handling
5) Function composition / pipelines
5🔥47❤🔥8✍5
Ну что айтишники, и особенно программисты -- лохи от природы, это база. Сам такой :)
А так как зарплата даже крепкого миддла входит в топ 3-5% зарплат по России, а манипулировать программистом в социальном плане легко и просто, + в гаджетах он хорошо разбирается, вот девушки и не теряются 👍
Как понять, лох ты или нет? Ну вот если трусишь скрыть на собесе свою зп, когда об этом хмурая хрюша спрашивает прокуренным голосом, значит лох 💯
Ну в самом крайнем случае, если совсем трусишка, назови +50% к текущей, а если будут что-то вякать про "проверим", "а по нашим данным", ссылайся (если голос не задрожит :) на защиту персональных данных - за подобное ведь, если не давал согласия на их сбор и использование, сразу штрафы, статьи.
А так как зарплата даже крепкого миддла входит в топ 3-5% зарплат по России, а манипулировать программистом в социальном плане легко и просто, + в гаджетах он хорошо разбирается, вот девушки и не теряются 👍
Как понять, лох ты или нет? Ну вот если трусишь скрыть на собесе свою зп, когда об этом хмурая хрюша спрашивает прокуренным голосом, значит лох 💯
Ну в самом крайнем случае, если совсем трусишка, назови +50% к текущей, а если будут что-то вякать про "проверим", "а по нашим данным", ссылайся (если голос не задрожит :) на защиту персональных данных - за подобное ведь, если не давал согласия на их сбор и использование, сразу штрафы, статьи.
✍42😁11❤7🤝2
Логика "буду использовать жпт и агентов, чтобы побыстрее делать рабочие задачки" настолько безмозглая, что представьте, что вы отказываетесь от всей своей профессии вместо того, чтобы приложить хоть каплю усилий, чтобы действительно преуспеть в ней.
Такое мышление сделает тебя бесполезным вообще на любой работе.
Такое мышление сделает тебя бесполезным вообще на любой работе.
1🤔28💯18❤8👍4
"Онлайн-образование топчется на месте"
"...заметно ухудшились показатели школ программирования: если по итогам 2024 года они росли быстрее всего сегмента (около 36%), то по итогам 2025 года многие из них вышли в минус."
С чего бы это? :)
Я год никого не брал, весной протестирую текущую ситуацию: возьму 1-2 человека на обучение с полного нуля, и 1-2 из тех, кто уже работает. Раньше места кончались за 5 минут, но совершенно не удивлюсь, если вообще желающих не будет. Я к этому давно подготовился через нетворк :)
AI позволяет сегодня любому создавать простое программное обеспечение, но не позволяет никому сегодня создавать простое программное обеспечение.
p.s. Никита второй!!!11 🏆🏆🏆
"...заметно ухудшились показатели школ программирования: если по итогам 2024 года они росли быстрее всего сегмента (около 36%), то по итогам 2025 года многие из них вышли в минус."
С чего бы это? :)
Я год никого не брал, весной протестирую текущую ситуацию: возьму 1-2 человека на обучение с полного нуля, и 1-2 из тех, кто уже работает. Раньше места кончались за 5 минут, но совершенно не удивлюсь, если вообще желающих не будет. Я к этому давно подготовился через нетворк :)
AI позволяет сегодня любому создавать простое программное обеспечение, но не позволяет никому сегодня создавать простое программное обеспечение.
p.s. Никита второй!!!11 🏆🏆🏆
1✍45❤10👍5
Пример, как работает мой агент. Вот я загнал в него ценный пейпер "Recursive Program Synthesis using Paramorphisms".
Как пишут рекурсию 98% программистов:
Вот как напишут 2% ребят с хорошим университетским образованием (и кто вдумчиво решал мои доп.задачки на второй части АСД :) =>
Да, но это пока классический fold (катаморфизм), когда достаточно только одного результата.
Параморфизм требуется, когда в рекурсивной ветке нам нужно также иметь доступ к самой структуре (хвосту/поддереву).
=>
Результат: исходный код был краток и прозрачен для понимания, а нового кода стало существенно больше, и теперь нифига не понятно :)
Вот в чём сермяга: Para -- это универсальный рекурсивный каркас (порядок обхода и базовые случаи единообразны), который мы тестируем 1 раз.
Далее нам достаточно только проверять нерекурсивную логику внутри различных cons под этот паттерн в нашем проекте.
+ можем использовать Para как fold:
Где это полезно? В работе со списками и деревьями, в обработке json и подобных структур, в ETL - сокращаем кучу рекурсивного кода (возможно, вообще до одного параморфизма), а добавлять новую логику можно императивно. Но это конечно уровень больше архитектурного code review.
К весне, надеюсь, кто у меня (пере)проходит тему АСД, бета-версия агента будет периодически делать такое ревью решений через клода4.6 и жпт5.3 (бесплатно).
Как пишут рекурсию 98% программистов:
int SumPositiveNodes(Node node)
{
if (node == null) return 0;
int left = SumPositiveNodes(node.Left);
int right = SumPositiveNodes(node.Right);
int self = node.Value > 0 ? node.Value : 0;
return self + left + right;
}
Вот как напишут 2% ребят с хорошим университетским образованием (и кто вдумчиво решал мои доп.задачки на второй части АСД :) =>
int FoldTree(Node node, Func<Node, int, int, int> f, int seed)
{
if (node == null) return seed;
int left = FoldTree(node.Left, f, seed);
int right = FoldTree(node.Right, f, seed);
return f(node, left, right);
}
int SumPositiveNodes(Node root)
{
// чистая нерекурсивная логика
return FoldTree(root, (n, l, r) =>
{
int self = n.Value > 0 ? n.Value : 0;
return self + l + r;
}, 0);
}
Да, но это пока классический fold (катаморфизм), когда достаточно только одного результата.
Параморфизм требуется, когда в рекурсивной ветке нам нужно также иметь доступ к самой структуре (хвосту/поддереву).
ListNode DropLast(ListNode list)
{
if (list == null) return null;
if (list.Next == null) return null;
return new ListNode(list.Value, DropLast(list.Next));
}
=>
TOut Para<TOut>(ListNode list,
Func<int, ListNode, TOut, TOut> cons,
TOut nil)
{
if (list == null) return nil;
var rec = Para(list.Next, cons, nil);
return cons(list.Value, list.Next, rec);
}
ListNode DropLast(ListNode list)
{
return Para(list, (head, tail, rec) =>
{
if (tail == null) return null;
return new ListNode(head, rec);
}, null);
}
Результат: исходный код был краток и прозрачен для понимания, а нового кода стало существенно больше, и теперь нифига не понятно :)
Вот в чём сермяга: Para -- это универсальный рекурсивный каркас (порядок обхода и базовые случаи единообразны), который мы тестируем 1 раз.
Далее нам достаточно только проверять нерекурсивную логику внутри различных cons под этот паттерн в нашем проекте.
+ можем использовать Para как fold:
int SumPositive(ListNode list)
{
return Para(list, (head, tail, rec) =>
{
int self = head > 0 ? head : 0;
return self + rec;
}, 0);
}
Где это полезно? В работе со списками и деревьями, в обработке json и подобных структур, в ETL - сокращаем кучу рекурсивного кода (возможно, вообще до одного параморфизма), а добавлять новую логику можно императивно. Но это конечно уровень больше архитектурного code review.
К весне, надеюсь, кто у меня (пере)проходит тему АСД, бета-версия агента будет периодически делать такое ревью решений через клода4.6 и жпт5.3 (бесплатно).
👍37❤15✍3
Любой, кто серьёзно относится к разработке программного обеспечения, должен сегодня учиться программировать с помощью искусственного интеллекта.
По иронии судьбы, любой, кто несерьёзно относится к разработке программного обеспечения, также должен сегодня учиться программировать с помощью искусственного интеллекта.
По иронии судьбы, любой, кто несерьёзно относится к разработке программного обеспечения, также должен сегодня учиться программировать с помощью искусственного интеллекта.
😁38💯17❤6✍4
Вот как надо норм делать (а не эта ваша хипстерская клешня) => mimiclaw
Run OpenClaw on a $5 chip. No OS(Linux). No Node.js. No Mac mini. No Raspberry Pi. No VPS. Local-first memory. Shareable. Portable. Privacy-first. Smarter than PicoClaw.
Run OpenClaw on a $5 chip. No OS(Linux). No Node.js. No Mac mini. No Raspberry Pi. No VPS. Local-first memory. Shareable. Portable. Privacy-first. Smarter than PicoClaw.
👌25🏆8❤4
Или вот ещё, от самого Карпатого: микрожпт
Обожаю =>
200 строк кода (с комментами), ноль зависимостей.
The most atomic way to train and run inference for a GPT in pure, dependency-free Python.
This file is the complete algorithm.
Everything else is just efficiency.
Это лучшее в мире обучение программистов искусственному интеллекту, которое только существует сегодня в Сети.
Обожаю =>
random.seed(42)200 строк кода (с комментами), ноль зависимостей.
The most atomic way to train and run inference for a GPT in pure, dependency-free Python.
This file is the complete algorithm.
Everything else is just efficiency.
Это лучшее в мире обучение программистов искусственному интеллекту, которое только существует сегодня в Сети.
2✍40❤6
Свежий пейпер "Evolution of Stacks and Moduli" (современные методы построения пространств модулей) Вашингтонского универа, где не рассказывается, а мы уже сами, по заветам Гротендика, выводим в наши интересы, что тамошний "стек" -- это "тип с контекстом выполнения", где равенство типов заменено эквивалентностью морфизмов. То есть это прямая аналогия между 2-категориями/стеками (пруф) и типизированными эффектами!
В завтипчиках мы можем иметь тип изоморфизма, но в стеке мы проверяем не равенство объектов, а выясняем, как именно они изоморфны, и как в нём склеивать объекты.
Монады -- это частный случай стеков (категория Клейсли для монады), и мы можем теперь композировать эффекты не только последовательно, но и параллельно, с синхронизацией по изоморфизмам!
То есть тип эффекта будет нести не только множество значений, но и группу симметрий этих значений, и получаем вдобавок формализацию идемпотентности в коде с побочными эффектами. Надеюсь, понятно пояснил.
Ну и? Ну это всё например хаскелевские темки Parameterized monads и Graded monads, которые можно поразвивать.
А для моего обучающего агента я выжал отсюда чек-лист "корректен ли код с точки зрения теории категорий". Например, что ты будешь делать, если у объекта появится нетривиальный автоморфизм?:)
В завтипчиках мы можем иметь тип изоморфизма, но в стеке мы проверяем не равенство объектов, а выясняем, как именно они изоморфны, и как в нём склеивать объекты.
Монады -- это частный случай стеков (категория Клейсли для монады), и мы можем теперь композировать эффекты не только последовательно, но и параллельно, с синхронизацией по изоморфизмам!
То есть тип эффекта будет нести не только множество значений, но и группу симметрий этих значений, и получаем вдобавок формализацию идемпотентности в коде с побочными эффектами. Надеюсь, понятно пояснил.
Ну и? Ну это всё например хаскелевские темки Parameterized monads и Graded monads, которые можно поразвивать.
А для моего обучающего агента я выжал отсюда чек-лист "корректен ли код с точки зрения теории категорий". Например, что ты будешь делать, если у объекта появится нетривиальный автоморфизм?:)
👍19❤7✍5❤🔥1