Брать пример с китайцев. Конкуренция в Китае таких масштабов, что придумать что то и почивать на лаврах не вариант.
Я как то купил квадрокоптер с камерой за 7$. И он даже летает. И камера работает. Конечно тут нет магии, это одноразовая игрушка для детей. Но интересное тут в том что разобрав такой дрон, понимаешь что при цене 7$ на нем зарабатывает цепочка людей, от производителя до реселлеров, включая доставку, растаможку итд.
Это не подвальное производство, это качественный пластик но тонкий как бумага, это продуманный дизайн чтобы этот тонкий пластик сохранял форму, какое то серьёзное оборудование которое обеспечивает высокую точность штамповки чтобы это все без проблем собирать и иметь приятный внешний вид (похож на мавик мини, складывается). Это кастомные чипы все в одном чтобы экономить на обвязке электроники.
Победить такого производителя думаю невозможно, потому что его бизнес модель не в идее, она в оптимизации производства. Ты можешь скопировать его игрушку, но удачи производить ее хотя бы так же дёшево))
Я собирал что то подобное на 1 литровых пк от HP, elitedesk 800 что то там, их можно купить за дёшево на ебее, энтерпрайз сливает их как только кончается 3х летняя гарантия. В них процессоры посвежее, и они тихие.
Мастерство кодирования перестает быть обязательным, мастерство программирования нет.
Это как умение работать в фотошоп не делает из Вас дизайнера, вычислительная фотография на айфоне не делает из Вас фотографа, Автокад не делает из Вас архитектора
ИИ с одной стороны демократизирует разработку, не разработчики получают доступ к разработке каких то продуктов для себя, каких то скриптов, поделок.
Но с другой стороны разработчики освобождаются от рутины, и могут уделять больше времени основной задаче программирования - творению.
Код это промежуточный этап, способ описать своё творение машине для исполнения, этот промежуточный этап эволюционирует, он начался с прямых инструкций процессора, прошёл много стадий абстракции высокоуровневых языков, которые были созданы лишь с одной целью, разгрузить разработчика и позволить ему быстрее и легче творить. Теперь ИИ выносит это на качественно новый уровень, он генерирует целые куски кода по словесному описанию, но не заменяет навыки программирования
Mythos нашёл уязвимости читая исходный код. Бесспорно у него преимущество в скорости чтения этого кода, человек так не может.
В целом и до анонса Mythos одно из реально работающих применений ИИ автономно было security review (посмотрите например как используют openhands). Anthropic поставили это на промышленные рельсы и монетизировали по взрослому.
Но уязвимости в коде не священный грааль в безопасности ведь ломать можно не только код но и людей.
Андерсону надо понять что ЛЛМ не умеет думать, ЛЛМ умеет найти наиболее статистически вероятное продолжение текста.
Гигантский размер моделей и объёмов обучения, создаёт впечатление что ЛЛМ думает, потому что логическая связность текста идёт рука об руку с статистически наиболее вероятным продолжением текста. Но думание это гораздо больше чем логическая связность. Объясню на примере:
Я как то тестировал агента с различными моделями, простым промптом, сделай красивое SPA которое отображает визуальный интерактивный граф слов. Все модели справились, сделали рабочее приложение, кто то простое кто то модное цветное молодёжное, самый успешный вариант отображал интерактивный граф, и даже позволял добавлять туда слова. Но ни одна модель даже не пыталась внести в это хоть какой то смысл. Все модели взяли промпт, дословно исполнили, есть сайт, он запускается, линтер не ругается, интерактивный граф есть, все сходится задание успешно выполнено.
Если бы тоже самое задание я дал человеку, он бы подумал так, интерактивный граф слов, какую задачу он решает? Слишком много вариантов, надо уточнить потому что я не вижу ясно цели. Если посмотреть немного глубже, человек представляет решение задачи так как она поставлена, сайт с каким то рандомным графом слов, и выносит суждение что это какой то бред, и скорее всего у автора задачи есть замысел, но он его не описал достаточно.
Человек способен видеть общую картину, не просто выполнить задание дословно, а очертить целиком задачу частью которой является задание, а так же корректировать понимание и видение этой задачи, общей картины, в процессе работы, когда его понимание углубляется и обновляется новыми деталями. Например он может решить что пихать такое в СПА не комильфо, надо добавить бэкэнд, что пользователи могут быть арабами и надо добавить поддержку RTL, итд.
ЛЛМ работает иначе, ЛЛМ делает ровно то что ей скажешь, если у нее не хватает деталей она выбирает среднее по больнице, даже если это среднее отличается от остальных вариантов на тысячные процента.
Это не означает что ЛЛМ бесполезны, это очень крутой инструмент. Но если Вы хотите получать хорошие результаты не делегируйте ЛЛМ принятие решений. Делегируйте ЛЛМ чёткие, понятные задания где мало или нет пространства для воображения. ЛЛМ способны за минуты генерировать тысячи строк хорошего кода, но только если есть человек который будет говорить как этот код должен выглядеть, что он должен делать, а что не должен делать, оценивать этот код и выносить суждение вписывается он в общую картину или нет, достаточно ли он структурирован чтобы он легко читался человеком или нет, использует ли он общий стиль комманды чтобы быть интуитивно понятным или нет.
Программирование с ЛЛМ это некий симбиоз и нужен другой подход, то что раньше происходило исключительно у Вас в голове, надо выносить наружу в виде сессии планирования, ревью, повторить. Если раньше решая задачу Вы строили план решения в голове, теперь этот план Вы пишете в маркдаун вместе с ЛЛМ, ЛЛМ как гугл накидывает наиболее вероятные варианты по вашему запросу, а затем Вы шлифуете его ревьюя, до тех пор пока он станет вас удовлетворять. Когда есть детальный план, ЛЛМ генерит хороший код. Этот код надо ревьювить. Не потому что ЛЛМ тупые, современные модели очень способные (не во всех языках) а потому что Вам надо знать этот код чтобы составлять хорошие планы для ЛЛМ, Вам надо понимать структуру кода, из каких сущностей он состоит, какие у них роли, какие есть функции, методы, возможно новая задача не впишется в существующую структуру и Вы должны увидеть это и понять что нужен рефакторинг прежде чем Вы начнёте давать задания ЛЛМ.
По началу кажется если программирую я сам в обоих случаях зачем мне вообще ЛЛМ? Но стоит перетерпеть это изначальное отторжение недетерминированости и неопределенности, со временем начинаешь понимать что модель умеет хорошо, какой объем деталей нужен для хорошего результата, и помнить что программируете Вы, а ЛЛМ лишь генерит код по вашему описанию. И тогда Вы начинаете видеть пользу, Вам все меньше надо вручную набирать однообразный код, Вы знаете как написать промпт чтобы агент сгенерировал тот код который Вам нужен, Вы используете ЛЛМ не только для программирования, а автоматизации рутины в целом, генерируете одноразовые скрипты которые не надо ревьювить, поднять приложение протестировать апи там, собрать все закрытые задачи за спринт и сумировать в release notes, проанализировать код проапдейтить readme итд. Что то будет работать хорошо что то нет, только с опытом будет развиваться это понимание связи запроса, контекста и результата, Вы будете учится видеть где Ваш промпт, контекст доступный агенту, имеет очевидный путь к нужному Вам результату и агент с высокой долей вероятности сделает именно то что Вам нужно, а где нужно разбить задание на более мелкие, чтобы Вы могли принять решение посередине и выбрать следующий прямой отрезок для агента.
Подписка расчитана на использование людьми. Она держится на том что ее будут использовать люди, которым надо спать, есть, отдыхать.
Используйте апи, там Вы платите за то что используете, и никто не будет Вас ограничивать или блочить.
Я с самого начала подключил Клауде Код через апи, идея была в том что так прозрачнее для меня, плачу ровно за то что использую, не использую не плачу. И Я быстро понял насколько дорогая модель Опус 4.6. 50$ улетели практически за сутки. Одновременно с этим Я использовал Опус через антигравити, с бонусной подпиской на гугл про на полгода, которую дают при покупке телефона, и получается на старте Гугл позволял использовать Опус на 50 баксов каждый день. Это была временная акция для раскрутки, и позже лимиты порезали, но все равно подписки позволяют тратить сильно больше, с учётом того что Вы не будете делать так 24/7, 7 дней в неделю.
Модель подписок работает исходя из того что в один месяц Вы можете потратить токенов на 1000 баксов, но в среднем, за год, Вы будете тратить меньше чем на 200 баксов в месяц. Лимиты в подписке расчитаны на людей, на то что Вы упретесь в лимит раз, два, и адаптируетесь, это больше reality check для пользователя а не гарантия того что пользователь не потратить токенов больше чем на 200 баксов в месяц.
ЛЛМ не должен быть разработкой, ЛЛМ инструмент а разработка это Вы. Из чего состоит работа программиста над задачей?
Сначала Вы анализируете задачу, понимаете что надо сделать, это не всегда что описано, надо понять корневой запрос.
Затем Вы думаете как можно закрыть этот запрос, какие есть варианты, затем Вы оцениваете эти варианты вместе с вашим кодом, процессами в команде, другими смежными сервисами, будущими планами, итд.
И только затем, когда у Вас уже код по сути написан в голове, вся логика вдоль и поперёк ясна и проверена, Вы переводите это в код.
Все это делаете Вы что с ЛЛМ что без ЛЛМ. ЛЛМ встраивается где то между строк, и может сгенерить код когда у Вас есть подробный его план, когда ЛЛМ получает конкретные инструкции что делать, и ей не делегируется принятие решений.
Ключевое это использовать ЛЛМ там где она работает хорошо. А работает она хорошо когда Вы даёте ей понятные задания в которых совсем нет или мало вариативности и вопросов.
Если какого то контекста не хватает в вашем промпте, ЛЛМ ответит все равно, так как она так работает, чего ей не хватает она выберет среднее по больнице согласно обучающей выборке. Если данных недостаточно, соотношение сигнал шум никакое, тема редкая например, ЛЛМ все равно сделает выбор который по сути будет рандом. И весь последующий текст она будет генерировать на базе этого рандома.
Мне помогает воспринимать ЛЛМ не как что то умное, а как смесь гугла, Т9 на максималках, что то такое где тебе надо научится чувствовать модель, что она умеет а что нет. Добиться такого понимания когда ты знаешь какой промпт написать чтобы она сделала точно то что тебе нужно. И не делегировать ей принятие решений, сохранять полную ответсвенность за код, считать что ты его пишешь, просто через еще один слой абстракции.
Сравнивайте это с навыком гуглить. Программисты умеют хорошо гуглить, знают как написать запрос так чтобы никогда не заходить дальше первой страницы. Работа с ЛЛМ что то похожее, это не что то что умеет думать, но что то что умеет дополнять текст на основе common sense, как знаете есть такое видео где детей спрашивают продолжить поговорки, говорят начало а дети продолжают. Ну только замените детей на взрослых ) дети в этих видео креативят )
Возможно Вас мой комментарий задел, возможно мой комментарий получился недружелюбным.
У меня 15 лет стажа работы, большая часть в иностранных компаниях, самый короткий срок работы в компании 5 лет. Думаю это достаточно квалифицированный уровень разработчика.
Мой комментарий был о том что стоит работать над своим отвращением к чужому коду. Каждый разработчик/комманда пишет в своём стиле, который может Вам не нравится. Ваша задача как разработчика уметь видеть и распознавать эти разные стили, и видеть за ними замысел разработчика.
В своё личное время Вы можете переписывать все с нуля хоть каждый день. Я например уже 3 раз с нуля переделываю домашнюю инфраструктуру (сеть и сервер) и личного ИИ агента, начиналось все с докера и openwrt, сейчас это OpnSense, энтерпрайз точка доступа с вланами, Proxmox с кубернетес и динамическим шейрингом одной 3090 разными ИИ подами (whisper, vllm, stable diffusion)
Но на работе нужен баланс между красотой кода, перфекционизмом и business value. На работе код должен зарабатывать деньги прежде всего а не нравится лично Вам.
) Я за 15 лет сменил 3 места работы. Не сказал бы что это много.
Имхо раз в 5 лет менять направление норм, не обязательно, кому то нравится быть экспертом в продукте и саппорт, но лично мне нужны челленджи чтобы работа продолжала быть интересной.
Я начал в тяжёлом энтерпрайзе, банки, интеграция, транснациональные компании, проекты с 10 летней историей и тысячи разработчиков по всему миру. Мне стало тяжко когда каждый новый проект было все тоже самое только в профиль. Работа стала механической творчество пропало, программирование начало заменяться писанием архитектурных бумаг и питчингом техническим директорам итд что вообще не мое. Я пытался сменить направление внутри компании, но меня лишь завтраками кормили.
Я сменил работу потому что уже начиналось выгорание. перешёл на iot, embedded, cloud. Мне все очень нравилось, стартап атмосфера, компактные сеньорные комманды, прямая связь с заказчиками, проекты из industrial, automotive, но компания была небольшая и нищевая, кризис ее не пощадил.
Сейчас вот R&D в ИИ компании. Вообще ничего не знал об ИИ, но мне сказали ты же сеньор разберёшься) это наверное меня и подкупило, разбираться в чем то то для меня новом.
Так что картинка не про меня ) первые лет 5 карьеры легаси был мой дом а разруливание чужих техдолгов львиной долей моей работы )
Тревожность + ЧптЖПТ не дадут Вам шанса заскучать.
Делаю ремонт и захотелось чуть больше комфорта в ванной, не только тёплый пол но и тёплые стены. Так как я программист а не ремонтник я начал с ресерча с чатжпт. Сначала все казалось просто, кабели засунул в стену, прикрутил термостат и готово.
Но оказалось нет норм потребительских термостатов на 4 контура в одном корпусе, ок сделаю свой. И тут началось
Вроде все просто 4 твердотельных реле и есп32, но Я человек тревожный, спросил у чат жпт что может пойти не так, и он как давай нагнетать, твердотельные реле говорит могут при отказе залипать включёнными, надо добавить общий контактор/реле которые на всю группу ток отключают. Ну ок вроде норм идея.
Затем спрашиваешь еще раз, он такой твой контактор тоже залипает ) Я ему ок можно 2 последовательно включить, он мне твой есп32 может зависнуть ), окей добавим аппаратный ватч дог который управляет реле по heartbeat с есп32, если цикл зависает ватчдог отпустит контактор, 2 контактора ) а еще контакторы не будут отключаться под нагрузкой так как регулировка тёплых кабелей идёт через твердотельные реле. Он мне надо датчики тока чтобы знать что твердотельные реле не залипли)
Я говорю ок, тут уже целый атомный реактор получается, даже рыночные термостаты такое не делают. Давай пойдём другим путем, ограничим мощность на площадь так, чтобы даже если все залипает макс температура не превысит опасный предел. Какая макс температура должна быть? Он мне делай 40, я ему но тогда оно вечность греться будет же, давай 60, он неееет у тебя кожа сгорит если все залипнет и ты уснёшь в ванной )) В итоге уболтал его на 55, говорю ему это для случаев когда меня нет дома, и все залипло, плюс есть умные автоматы/счетчики, поставлю один отдельно на тёплый контур ванной, в умном доме настрою уведомления. Он опять за свое, твои автоматы зависнут, реле залипнут надо еще пачку ватчдогов.
И вот так по каждой идее. Если ты уверен он тоже уверен, если ты тревожный, он становится параноиком )
Интернетом и вычислительными мощностями тоже владеют большие корпорации, но вроде как то живём.
Они владеют ресурсами но если мы не будем за них платить им денег даже на электричество не хватит, так что у нас с ними что то вроде симбиоза. Они могут прогибать отдельные группы людей, но они зависят от нас в целом так же как и мы от них.
Разбираться в чужом коде несложно если он нормально написан.
Если код написан плохо, в нем не сложно разбираться, он состоит из тех же примитивов, но в нем неприятно разбираться, видишь в одном месте откровенный бред и осознаешь что тому кто это писал вообще доверять нельзя.
Не стоит это путать со случаями когда человек не опытен, не может понять код и верит что он сможет написать все с нуля лучше, когда по факту потратит времени больше и напишет хуже.
Важно отделять код который тебе сложно понять, от говнокода когда тебе сложно понять не код, а как так вообще могло получится что это было написано.
Писать легко читаемый код это труд. Обычно на него нет времени и имеет место просто код, который делает дело, но на выделение ему любви времени не дали.
Не могу не согласится, компании/ситуации бывают разные, особенно на пространстве СНГ.
Но есть и другая сторона, когда внедрение ИИ приводит не к увольнениям а к увеличению количества проектов, и более высоким ожиданиям личной производительности, так например там где я работаю. Нет даже мыслей о замене людей ИИ, но есть уменьшение размеров команд на проект и увеличение количества проектов.
Что Вы имеете виду под слопом? Возможно тонны ИИ кода которые создают неопытные программисты которые не берут ответственность за вайбокденный код.
Но я имею ввиду осознанное использование ИИ как инструмента а не штуки которая пишет код за тебя который ты комитишь не глядя.
Я больше года пишу продакшн код с ИИ, и это серьёзный код за который платят миллиарды долларов. Но это не абстрактное "сделай красиво некрасиво не делай", это многочасовые ресерчи, детальные планирования логики, с детальными пошаговыми планами, подзадачами, детальным ревью каждой строчки кода. Это тоже самое программирование, разница лишь в том что большую часть рутины берет на себя ИИ. Мне не надо набирать код, я разрабатываю логику имплементации, который ИИ конвертирует в код, и это вполне рабочий стабильный процесс.
В самом начале я как и все наверное относился к ИИ как к штуке которая пишет код за меня, и просил решать задачи и плевался на результат. Но если отбросить влажные мечты о том что оно будет работать за тебя, это отличный инструмент который на высоком уровне предсказуем если ты сам на 100% понимаешь какой конкретно код тебе нужен.
Ключевое здесь ответственность за свой код. Если ты берёшь на себя ответсвенность за каждую строчку кода, согласен с каждой строкой кода который комитишь, это ничем не отличается от ручного набора кода, разве что скоростью разработки.
Могу порекомендовать китайский клон Ettus USRP B210, называется LibreSDR b220 mini. Внутри AD9361, от 70mhz до 6ghz.
от оригинала отличается fpga, работает с оригинальными UHD драйверами от USRP (надо подменять фпга бинарник от USRP на другой от китайцев) и в софте распознается как USRP B210.
А Вы не воспринимайте ИИ как замену Вас, ИИ не замена Вас а инструмент для Вас.
Гугл тоже не детерминирован, Вы не знаете найдёте ли Вы что ищете, но в разработке он незаменимый (не учитывая ИИ правда).
Тоже самое с автодополнением, оно не идеально работает но лучше чем ничего.
Воспринимайте ИИ как кодогенератор/автодополнение на максималках/ умный поиск по интернету и документациям. Программируете все равно Вы, но вместо стопицот запросов в Гугл и чтения тон текста, Вы пишите один параграф промпта и ИИ сделает это за Вас за минут 10. Вы можете делать тоже самое что раньше делали в гугле, но теперь в более комфортном виде, в виде чата, Вы задаёте вопросы и получаете прямые ответы а не сылки на сайты где они могут быть среди тоны текста.
Вместо набирания скучных функций в стопицотый раз, вместо написания скучных однообразных юнит тестов, Вы пишете простые промпты, там где с достаточной уверенностью знаете что именно сгенерит ИИ. От Вас все также требуется ревьювить код, чтобы сохранять владение кодом, его контекст, но уже не надо быть набирателем однообразного текста.
Не смотрите на тех кто эксперементирует с полностью автономными агентами, автоновным написанием кода итд. Это исследования и эксперименты о будущем, прощупывание возможностей и новых идей.
А здесь и сейчас ИИ это рабочий инструмент в работе программиста, не его замена.
Например за последние полгода я не написал ни строчки вручную. Это не значит что за меня работал ИИ, я также усердно работал и знаю каждую строчку кода и каждое решение. ИИ автоматизирует рутину, набор/генерацию кода, но перед этим идут часы/дни дизайна этого кода в виде текстовых планов и снипетов в том же ИИ. А также ревью всего что генерит ИИ. ИИ автоматизирует рутину но не может взять на себя ответственность, инициативу и довести дело до конца как Вы. Возможно лишь пока, время покажет, но здесь и сейчас это инструмент который освобождает ваше время и позволяет Вам больше времени уделять творческому процессу создания.
Хоть у меня нет пачки Nvidia A100, и я не DevOps статья интересная спасибо.
Интересная потому что сам столкнулся с вопросом как утилизировать Nvidia RTX 3090 в домашнем кубернетес, и узнал о DRA и MPS.
MPS позволяет разделить ресурсы GPU, но жестко, не динамически. Это уже лучше чем ничего, можно одновременно использовать несколькими подами, например vllm, whisper, stable diffusion.
Для домашнего использования, и если хочется использовать GPU по максимуму, как я понял, мне нужна своя очередь задач и сервис который будет жонглировать GPU подами с разными запросами, например vllm под использующий всю память, для определённых типов задач из очереди, или несколько whisper подов для пачки задач ASR, или пару Stable Diffusion подов для какартинок.
И MPS должен здорово упростить такой паттерн, как я понял, в самом простом варианте я могу тупо закидывать задачи в kubernetes Jobs, и благодаря MPS они будут вставать в очередь за GPU. А еще есть Kueue контроллер который добавит FIFO и приоритеты, так что писать свои костыль даже и не придется чему я очень рад )
ИИ ускоряет разработку но не заменяет людей. Тоже количество человек с ИИ может сделать больше и быстрее. В Бизнесе не бывает так что меня устраивает текущая прибыль, хочу чтобы она оставалась такой же, и мне не нужна часть команды так как пара человек с ИИ могут обеспечить мне туже прибыль. Бизнес всегда стремится увеличивать свою прибыль и расти.
Текущий тренд в компаниях что Я вижу, это агрессивный AI Adoption, компании буквально заставляют сотрудников пользоваться ИИ, это включается в метрики перформанс ревью например. Причём это уже не только в айти компаниях происходит.
И это в целом укладывается в то как развивается человечество. Изобретение автоматизации привело к увеличению масштабов производства а не увольнениям людей при тех же объёмах производства.
Изобретение CAD не привело к увольнениям людей, а увеличило достижимые масштабы и скорость проектирования.
ИИ это очень мощный инструмент автоматизации, он не заменяет людей, он делает их быстрее и эффективнее. Он открывает новые возможности роста, ускоряет процессы.
ИМХО программистов понадобиться гораздо больше чем сейчас, просто вспомните какое будущее мы хотим как человечество? К чему стремимся? Фантасты аггрегируют наши стремления как мир где все делают роботы, у каждого свой джарвис, мы осваиваем другие планеты. И посмотрите на то где мы сейчас, с одной стороны у нас кунг фу роботы, ИИ а с другой многие до сих пор на физических бумагах дела ведут. Мы как человечество отстаём от скорости развития технологий уже сейчас. Мы не успеваем их внедрять. Нужно гораздо больше инженеров, чтобы желаемое нами будущее наступило.
Есть еще вероятность появления AGI, настоящего интелекта, который все сделает сам, но будем честны пока это лишь влажные мечты. Нет уверенности что это вообще возможно, было бы круто и безусловно надо исследовать, но строить на этом планы я бы не стал.
Брать пример с китайцев. Конкуренция в Китае таких масштабов, что придумать что то и почивать на лаврах не вариант.
Я как то купил квадрокоптер с камерой за 7$. И он даже летает. И камера работает. Конечно тут нет магии, это одноразовая игрушка для детей. Но интересное тут в том что разобрав такой дрон, понимаешь что при цене 7$ на нем зарабатывает цепочка людей, от производителя до реселлеров, включая доставку, растаможку итд.
Это не подвальное производство, это качественный пластик но тонкий как бумага, это продуманный дизайн чтобы этот тонкий пластик сохранял форму, какое то серьёзное оборудование которое обеспечивает высокую точность штамповки чтобы это все без проблем собирать и иметь приятный внешний вид (похож на мавик мини, складывается). Это кастомные чипы все в одном чтобы экономить на обвязке электроники.
Победить такого производителя думаю невозможно, потому что его бизнес модель не в идее, она в оптимизации производства. Ты можешь скопировать его игрушку, но удачи производить ее хотя бы так же дёшево))
Я собирал что то подобное на 1 литровых пк от HP, elitedesk 800 что то там, их можно купить за дёшево на ебее, энтерпрайз сливает их как только кончается 3х летняя гарантия. В них процессоры посвежее, и они тихие.
Древесный шкаф это не пожаробезопасно.
Мастерство кодирования перестает быть обязательным, мастерство программирования нет.
Это как умение работать в фотошоп не делает из Вас дизайнера, вычислительная фотография на айфоне не делает из Вас фотографа, Автокад не делает из Вас архитектора
ИИ с одной стороны демократизирует разработку, не разработчики получают доступ к разработке каких то продуктов для себя, каких то скриптов, поделок.
Но с другой стороны разработчики освобождаются от рутины, и могут уделять больше времени основной задаче программирования - творению.
Код это промежуточный этап, способ описать своё творение машине для исполнения, этот промежуточный этап эволюционирует, он начался с прямых инструкций процессора, прошёл много стадий абстракции высокоуровневых языков, которые были созданы лишь с одной целью, разгрузить разработчика и позволить ему быстрее и легче творить. Теперь ИИ выносит это на качественно новый уровень, он генерирует целые куски кода по словесному описанию, но не заменяет навыки программирования
Mythos нашёл уязвимости читая исходный код. Бесспорно у него преимущество в скорости чтения этого кода, человек так не может.
В целом и до анонса Mythos одно из реально работающих применений ИИ автономно было security review (посмотрите например как используют openhands). Anthropic поставили это на промышленные рельсы и монетизировали по взрослому.
Но уязвимости в коде не священный грааль в безопасности ведь ломать можно не только код но и людей.
Андерсону надо понять что ЛЛМ не умеет думать, ЛЛМ умеет найти наиболее статистически вероятное продолжение текста.
Гигантский размер моделей и объёмов обучения, создаёт впечатление что ЛЛМ думает, потому что логическая связность текста идёт рука об руку с статистически наиболее вероятным продолжением текста. Но думание это гораздо больше чем логическая связность. Объясню на примере:
Я как то тестировал агента с различными моделями, простым промптом, сделай красивое SPA которое отображает визуальный интерактивный граф слов. Все модели справились, сделали рабочее приложение, кто то простое кто то модное цветное молодёжное, самый успешный вариант отображал интерактивный граф, и даже позволял добавлять туда слова. Но ни одна модель даже не пыталась внести в это хоть какой то смысл. Все модели взяли промпт, дословно исполнили, есть сайт, он запускается, линтер не ругается, интерактивный граф есть, все сходится задание успешно выполнено.
Если бы тоже самое задание я дал человеку, он бы подумал так, интерактивный граф слов, какую задачу он решает? Слишком много вариантов, надо уточнить потому что я не вижу ясно цели. Если посмотреть немного глубже, человек представляет решение задачи так как она поставлена, сайт с каким то рандомным графом слов, и выносит суждение что это какой то бред, и скорее всего у автора задачи есть замысел, но он его не описал достаточно.
Человек способен видеть общую картину, не просто выполнить задание дословно, а очертить целиком задачу частью которой является задание, а так же корректировать понимание и видение этой задачи, общей картины, в процессе работы, когда его понимание углубляется и обновляется новыми деталями. Например он может решить что пихать такое в СПА не комильфо, надо добавить бэкэнд, что пользователи могут быть арабами и надо добавить поддержку RTL, итд.
ЛЛМ работает иначе, ЛЛМ делает ровно то что ей скажешь, если у нее не хватает деталей она выбирает среднее по больнице, даже если это среднее отличается от остальных вариантов на тысячные процента.
Это не означает что ЛЛМ бесполезны, это очень крутой инструмент. Но если Вы хотите получать хорошие результаты не делегируйте ЛЛМ принятие решений. Делегируйте ЛЛМ чёткие, понятные задания где мало или нет пространства для воображения. ЛЛМ способны за минуты генерировать тысячи строк хорошего кода, но только если есть человек который будет говорить как этот код должен выглядеть, что он должен делать, а что не должен делать, оценивать этот код и выносить суждение вписывается он в общую картину или нет, достаточно ли он структурирован чтобы он легко читался человеком или нет, использует ли он общий стиль комманды чтобы быть интуитивно понятным или нет.
Программирование с ЛЛМ это некий симбиоз и нужен другой подход, то что раньше происходило исключительно у Вас в голове, надо выносить наружу в виде сессии планирования, ревью, повторить. Если раньше решая задачу Вы строили план решения в голове, теперь этот план Вы пишете в маркдаун вместе с ЛЛМ, ЛЛМ как гугл накидывает наиболее вероятные варианты по вашему запросу, а затем Вы шлифуете его ревьюя, до тех пор пока он станет вас удовлетворять. Когда есть детальный план, ЛЛМ генерит хороший код. Этот код надо ревьювить. Не потому что ЛЛМ тупые, современные модели очень способные (не во всех языках) а потому что Вам надо знать этот код чтобы составлять хорошие планы для ЛЛМ, Вам надо понимать структуру кода, из каких сущностей он состоит, какие у них роли, какие есть функции, методы, возможно новая задача не впишется в существующую структуру и Вы должны увидеть это и понять что нужен рефакторинг прежде чем Вы начнёте давать задания ЛЛМ.
По началу кажется если программирую я сам в обоих случаях зачем мне вообще ЛЛМ? Но стоит перетерпеть это изначальное отторжение недетерминированости и неопределенности, со временем начинаешь понимать что модель умеет хорошо, какой объем деталей нужен для хорошего результата, и помнить что программируете Вы, а ЛЛМ лишь генерит код по вашему описанию. И тогда Вы начинаете видеть пользу, Вам все меньше надо вручную набирать однообразный код, Вы знаете как написать промпт чтобы агент сгенерировал тот код который Вам нужен, Вы используете ЛЛМ не только для программирования, а автоматизации рутины в целом, генерируете одноразовые скрипты которые не надо ревьювить, поднять приложение протестировать апи там, собрать все закрытые задачи за спринт и сумировать в release notes, проанализировать код проапдейтить readme итд. Что то будет работать хорошо что то нет, только с опытом будет развиваться это понимание связи запроса, контекста и результата, Вы будете учится видеть где Ваш промпт, контекст доступный агенту, имеет очевидный путь к нужному Вам результату и агент с высокой долей вероятности сделает именно то что Вам нужно, а где нужно разбить задание на более мелкие, чтобы Вы могли принять решение посередине и выбрать следующий прямой отрезок для агента.
Подписка расчитана на использование людьми. Она держится на том что ее будут использовать люди, которым надо спать, есть, отдыхать.
Используйте апи, там Вы платите за то что используете, и никто не будет Вас ограничивать или блочить.
Я с самого начала подключил Клауде Код через апи, идея была в том что так прозрачнее для меня, плачу ровно за то что использую, не использую не плачу. И Я быстро понял насколько дорогая модель Опус 4.6. 50$ улетели практически за сутки. Одновременно с этим Я использовал Опус через антигравити, с бонусной подпиской на гугл про на полгода, которую дают при покупке телефона, и получается на старте Гугл позволял использовать Опус на 50 баксов каждый день. Это была временная акция для раскрутки, и позже лимиты порезали, но все равно подписки позволяют тратить сильно больше, с учётом того что Вы не будете делать так 24/7, 7 дней в неделю.
Модель подписок работает исходя из того что в один месяц Вы можете потратить токенов на 1000 баксов, но в среднем, за год, Вы будете тратить меньше чем на 200 баксов в месяц. Лимиты в подписке расчитаны на людей, на то что Вы упретесь в лимит раз, два, и адаптируетесь, это больше reality check для пользователя а не гарантия того что пользователь не потратить токенов больше чем на 200 баксов в месяц.
ЛЛМ не должен быть разработкой, ЛЛМ инструмент а разработка это Вы. Из чего состоит работа программиста над задачей?
Сначала Вы анализируете задачу, понимаете что надо сделать, это не всегда что описано, надо понять корневой запрос.
Затем Вы думаете как можно закрыть этот запрос, какие есть варианты, затем Вы оцениваете эти варианты вместе с вашим кодом, процессами в команде, другими смежными сервисами, будущими планами, итд.
И только затем, когда у Вас уже код по сути написан в голове, вся логика вдоль и поперёк ясна и проверена, Вы переводите это в код.
Все это делаете Вы что с ЛЛМ что без ЛЛМ. ЛЛМ встраивается где то между строк, и может сгенерить код когда у Вас есть подробный его план, когда ЛЛМ получает конкретные инструкции что делать, и ей не делегируется принятие решений.
Ключевое это использовать ЛЛМ там где она работает хорошо. А работает она хорошо когда Вы даёте ей понятные задания в которых совсем нет или мало вариативности и вопросов.
Если какого то контекста не хватает в вашем промпте, ЛЛМ ответит все равно, так как она так работает, чего ей не хватает она выберет среднее по больнице согласно обучающей выборке. Если данных недостаточно, соотношение сигнал шум никакое, тема редкая например, ЛЛМ все равно сделает выбор который по сути будет рандом. И весь последующий текст она будет генерировать на базе этого рандома.
Мне помогает воспринимать ЛЛМ не как что то умное, а как смесь гугла, Т9 на максималках, что то такое где тебе надо научится чувствовать модель, что она умеет а что нет. Добиться такого понимания когда ты знаешь какой промпт написать чтобы она сделала точно то что тебе нужно. И не делегировать ей принятие решений, сохранять полную ответсвенность за код, считать что ты его пишешь, просто через еще один слой абстракции.
Сравнивайте это с навыком гуглить. Программисты умеют хорошо гуглить, знают как написать запрос так чтобы никогда не заходить дальше первой страницы. Работа с ЛЛМ что то похожее, это не что то что умеет думать, но что то что умеет дополнять текст на основе common sense, как знаете есть такое видео где детей спрашивают продолжить поговорки, говорят начало а дети продолжают. Ну только замените детей на взрослых ) дети в этих видео креативят )
Возможно Вас мой комментарий задел, возможно мой комментарий получился недружелюбным.
У меня 15 лет стажа работы, большая часть в иностранных компаниях, самый короткий срок работы в компании 5 лет. Думаю это достаточно квалифицированный уровень разработчика.
Мой комментарий был о том что стоит работать над своим отвращением к чужому коду. Каждый разработчик/комманда пишет в своём стиле, который может Вам не нравится. Ваша задача как разработчика уметь видеть и распознавать эти разные стили, и видеть за ними замысел разработчика.
В своё личное время Вы можете переписывать все с нуля хоть каждый день. Я например уже 3 раз с нуля переделываю домашнюю инфраструктуру (сеть и сервер) и личного ИИ агента, начиналось все с докера и openwrt, сейчас это OpnSense, энтерпрайз точка доступа с вланами, Proxmox с кубернетес и динамическим шейрингом одной 3090 разными ИИ подами (whisper, vllm, stable diffusion)
Но на работе нужен баланс между красотой кода, перфекционизмом и business value. На работе код должен зарабатывать деньги прежде всего а не нравится лично Вам.
) Я за 15 лет сменил 3 места работы. Не сказал бы что это много.
Имхо раз в 5 лет менять направление норм, не обязательно, кому то нравится быть экспертом в продукте и саппорт, но лично мне нужны челленджи чтобы работа продолжала быть интересной.
Я начал в тяжёлом энтерпрайзе, банки, интеграция, транснациональные компании, проекты с 10 летней историей и тысячи разработчиков по всему миру. Мне стало тяжко когда каждый новый проект было все тоже самое только в профиль. Работа стала механической творчество пропало, программирование начало заменяться писанием архитектурных бумаг и питчингом техническим директорам итд что вообще не мое. Я пытался сменить направление внутри компании, но меня лишь завтраками кормили.
Я сменил работу потому что уже начиналось выгорание. перешёл на iot, embedded, cloud. Мне все очень нравилось, стартап атмосфера, компактные сеньорные комманды, прямая связь с заказчиками, проекты из industrial, automotive, но компания была небольшая и нищевая, кризис ее не пощадил.
Сейчас вот R&D в ИИ компании. Вообще ничего не знал об ИИ, но мне сказали ты же сеньор разберёшься) это наверное меня и подкупило, разбираться в чем то то для меня новом.
Так что картинка не про меня ) первые лет 5 карьеры легаси был мой дом а разруливание чужих техдолгов львиной долей моей работы )
Тревожность + ЧптЖПТ не дадут Вам шанса заскучать.
Делаю ремонт и захотелось чуть больше комфорта в ванной, не только тёплый пол но и тёплые стены. Так как я программист а не ремонтник я начал с ресерча с чатжпт. Сначала все казалось просто, кабели засунул в стену, прикрутил термостат и готово.
Но оказалось нет норм потребительских термостатов на 4 контура в одном корпусе, ок сделаю свой. И тут началось
Вроде все просто 4 твердотельных реле и есп32, но Я человек тревожный, спросил у чат жпт что может пойти не так, и он как давай нагнетать, твердотельные реле говорит могут при отказе залипать включёнными, надо добавить общий контактор/реле которые на всю группу ток отключают. Ну ок вроде норм идея.
Затем спрашиваешь еще раз, он такой твой контактор тоже залипает ) Я ему ок можно 2 последовательно включить, он мне твой есп32 может зависнуть ), окей добавим аппаратный ватч дог который управляет реле по heartbeat с есп32, если цикл зависает ватчдог отпустит контактор, 2 контактора ) а еще контакторы не будут отключаться под нагрузкой так как регулировка тёплых кабелей идёт через твердотельные реле. Он мне надо датчики тока чтобы знать что твердотельные реле не залипли)
Я говорю ок, тут уже целый атомный реактор получается, даже рыночные термостаты такое не делают. Давай пойдём другим путем, ограничим мощность на площадь так, чтобы даже если все залипает макс температура не превысит опасный предел. Какая макс температура должна быть? Он мне делай 40, я ему но тогда оно вечность греться будет же, давай 60, он неееет у тебя кожа сгорит если все залипнет и ты уснёшь в ванной )) В итоге уболтал его на 55, говорю ему это для случаев когда меня нет дома, и все залипло, плюс есть умные автоматы/счетчики, поставлю один отдельно на тёплый контур ванной, в умном доме настрою уведомления. Он опять за свое, твои автоматы зависнут, реле залипнут надо еще пачку ватчдогов.
И вот так по каждой идее. Если ты уверен он тоже уверен, если ты тревожный, он становится параноиком )
Похоже контекст кончился, пришла пора выпускать кракена/knowledge graph/graph rag.
Интернетом и вычислительными мощностями тоже владеют большие корпорации, но вроде как то живём.
Они владеют ресурсами но если мы не будем за них платить им денег даже на электричество не хватит, так что у нас с ними что то вроде симбиоза. Они могут прогибать отдельные группы людей, но они зависят от нас в целом так же как и мы от них.
Разбираться в чужом коде несложно если он нормально написан.
Если код написан плохо, в нем не сложно разбираться, он состоит из тех же примитивов, но в нем неприятно разбираться, видишь в одном месте откровенный бред и осознаешь что тому кто это писал вообще доверять нельзя.
Не стоит это путать со случаями когда человек не опытен, не может понять код и верит что он сможет написать все с нуля лучше, когда по факту потратит времени больше и напишет хуже.
Важно отделять код который тебе сложно понять, от говнокода когда тебе сложно понять не код, а как так вообще могло получится что это было написано.
Писать легко читаемый код это труд. Обычно на него нет времени и имеет место просто код, который делает дело, но на выделение ему любви времени не дали.
Во первых то что я запомнил полгода назад с вероятностью процентов 70 уже устарело.
Во вторых каждый новый проект это как минимум наполовину абсолютно новый незнакомый стек.
Программирование это не та область где можно запомнить 1 раз и дальше забыть про гугл
Не могу не согласится, компании/ситуации бывают разные, особенно на пространстве СНГ.
Но есть и другая сторона, когда внедрение ИИ приводит не к увольнениям а к увеличению количества проектов, и более высоким ожиданиям личной производительности, так например там где я работаю. Нет даже мыслей о замене людей ИИ, но есть уменьшение размеров команд на проект и увеличение количества проектов.
Что Вы имеете виду под слопом? Возможно тонны ИИ кода которые создают неопытные программисты которые не берут ответственность за вайбокденный код.
Но я имею ввиду осознанное использование ИИ как инструмента а не штуки которая пишет код за тебя который ты комитишь не глядя.
Я больше года пишу продакшн код с ИИ, и это серьёзный код за который платят миллиарды долларов. Но это не абстрактное "сделай красиво некрасиво не делай", это многочасовые ресерчи, детальные планирования логики, с детальными пошаговыми планами, подзадачами, детальным ревью каждой строчки кода. Это тоже самое программирование, разница лишь в том что большую часть рутины берет на себя ИИ. Мне не надо набирать код, я разрабатываю логику имплементации, который ИИ конвертирует в код, и это вполне рабочий стабильный процесс.
В самом начале я как и все наверное относился к ИИ как к штуке которая пишет код за меня, и просил решать задачи и плевался на результат. Но если отбросить влажные мечты о том что оно будет работать за тебя, это отличный инструмент который на высоком уровне предсказуем если ты сам на 100% понимаешь какой конкретно код тебе нужен.
Ключевое здесь ответственность за свой код. Если ты берёшь на себя ответсвенность за каждую строчку кода, согласен с каждой строкой кода который комитишь, это ничем не отличается от ручного набора кода, разве что скоростью разработки.
Могу порекомендовать китайский клон Ettus USRP B210, называется LibreSDR b220 mini. Внутри AD9361, от 70mhz до 6ghz.
от оригинала отличается fpga, работает с оригинальными UHD драйверами от USRP (надо подменять фпга бинарник от USRP на другой от китайцев) и в софте распознается как USRP B210.
На али покупал за 265$.
А Вы не воспринимайте ИИ как замену Вас, ИИ не замена Вас а инструмент для Вас.
Гугл тоже не детерминирован, Вы не знаете найдёте ли Вы что ищете, но в разработке он незаменимый (не учитывая ИИ правда).
Тоже самое с автодополнением, оно не идеально работает но лучше чем ничего.
Воспринимайте ИИ как кодогенератор/автодополнение на максималках/ умный поиск по интернету и документациям. Программируете все равно Вы, но вместо стопицот запросов в Гугл и чтения тон текста, Вы пишите один параграф промпта и ИИ сделает это за Вас за минут 10. Вы можете делать тоже самое что раньше делали в гугле, но теперь в более комфортном виде, в виде чата, Вы задаёте вопросы и получаете прямые ответы а не сылки на сайты где они могут быть среди тоны текста.
Вместо набирания скучных функций в стопицотый раз, вместо написания скучных однообразных юнит тестов, Вы пишете простые промпты, там где с достаточной уверенностью знаете что именно сгенерит ИИ. От Вас все также требуется ревьювить код, чтобы сохранять владение кодом, его контекст, но уже не надо быть набирателем однообразного текста.
Не смотрите на тех кто эксперементирует с полностью автономными агентами, автоновным написанием кода итд. Это исследования и эксперименты о будущем, прощупывание возможностей и новых идей.
А здесь и сейчас ИИ это рабочий инструмент в работе программиста, не его замена.
Например за последние полгода я не написал ни строчки вручную. Это не значит что за меня работал ИИ, я также усердно работал и знаю каждую строчку кода и каждое решение. ИИ автоматизирует рутину, набор/генерацию кода, но перед этим идут часы/дни дизайна этого кода в виде текстовых планов и снипетов в том же ИИ. А также ревью всего что генерит ИИ. ИИ автоматизирует рутину но не может взять на себя ответственность, инициативу и довести дело до конца как Вы. Возможно лишь пока, время покажет, но здесь и сейчас это инструмент который освобождает ваше время и позволяет Вам больше времени уделять творческому процессу создания.
Хоть у меня нет пачки Nvidia A100, и я не DevOps статья интересная спасибо.
Интересная потому что сам столкнулся с вопросом как утилизировать Nvidia RTX 3090 в домашнем кубернетес, и узнал о DRA и MPS.
MPS позволяет разделить ресурсы GPU, но жестко, не динамически. Это уже лучше чем ничего, можно одновременно использовать несколькими подами, например vllm, whisper, stable diffusion.
Для домашнего использования, и если хочется использовать GPU по максимуму, как я понял, мне нужна своя очередь задач и сервис который будет жонглировать GPU подами с разными запросами, например vllm под использующий всю память, для определённых типов задач из очереди, или несколько whisper подов для пачки задач ASR, или пару Stable Diffusion подов для какартинок.
И MPS должен здорово упростить такой паттерн, как я понял, в самом простом варианте я могу тупо закидывать задачи в kubernetes Jobs, и благодаря MPS они будут вставать в очередь за GPU. А еще есть Kueue контроллер который добавит FIFO и приоритеты, так что писать свои костыль даже и не придется чему я очень рад )
ИИ ускоряет разработку но не заменяет людей. Тоже количество человек с ИИ может сделать больше и быстрее. В Бизнесе не бывает так что меня устраивает текущая прибыль, хочу чтобы она оставалась такой же, и мне не нужна часть команды так как пара человек с ИИ могут обеспечить мне туже прибыль. Бизнес всегда стремится увеличивать свою прибыль и расти.
Текущий тренд в компаниях что Я вижу, это агрессивный AI Adoption, компании буквально заставляют сотрудников пользоваться ИИ, это включается в метрики перформанс ревью например. Причём это уже не только в айти компаниях происходит.
И это в целом укладывается в то как развивается человечество. Изобретение автоматизации привело к увеличению масштабов производства а не увольнениям людей при тех же объёмах производства.
Изобретение CAD не привело к увольнениям людей, а увеличило достижимые масштабы и скорость проектирования.
ИИ это очень мощный инструмент автоматизации, он не заменяет людей, он делает их быстрее и эффективнее. Он открывает новые возможности роста, ускоряет процессы.
ИМХО программистов понадобиться гораздо больше чем сейчас, просто вспомните какое будущее мы хотим как человечество? К чему стремимся? Фантасты аггрегируют наши стремления как мир где все делают роботы, у каждого свой джарвис, мы осваиваем другие планеты. И посмотрите на то где мы сейчас, с одной стороны у нас кунг фу роботы, ИИ а с другой многие до сих пор на физических бумагах дела ведут. Мы как человечество отстаём от скорости развития технологий уже сейчас. Мы не успеваем их внедрять. Нужно гораздо больше инженеров, чтобы желаемое нами будущее наступило.
Есть еще вероятность появления AGI, настоящего интелекта, который все сделает сам, но будем честны пока это лишь влажные мечты. Нет уверенности что это вообще возможно, было бы круто и безусловно надо исследовать, но строить на этом планы я бы не стал.