Comments 127
Не забывайте, что статья совсем для новичков которые не имеют достаточного практического опыта и в данном случае чат выступает лишь помощником/инструментом, который на самом деле уже способен выдавать неплохой код если промт правильный. В статье не закладывался посыл что нужно бездумно перекладывать всё на него, а просто рассказывается на примере конкретных кейсов чем он может помочь. И объективная реальность сейчас такова, что специалист с чатом скорее всего будет эффективнее, чем тот же без него.
Вы пишете "учимся", но в итоге получаем "сваливаем на машину своё неумение".
В итоге недавно мы индусов ругали за код, понятный лишь не всем, а тут получим армию "разработчиков", напиливших проекты, не знающих профессии. Хотя, несоменно, научившихся в каждом предложении вставлять "ты - самый круто в мире разработчик по написанию ...", так?
Просто в NDA нужно вписать пункты про LLM и таких сеньеров-помидоров рядить по статье)
Запишут в трудовой книжке -"оператор ChatGPT 3-го разряда"
"...а сами едва на второй промпты пишут, ироды! "?
О, давайте сделаем ещё более помпезно и официально, как в советских документах:
Государственное научно-производственное объединение
«ОРДЕНА КИБЕРНЕТИКИ, ОРДЕНА ТРУДОВОГО КРАСНОГО ЗНАМЕНИ, ДВАЖДЫ ОРДЕНОНОСНАЯ КРАСНОЗНАМЁННАЯ БОЛЬШАЯ ЯЗЫКОВАЯ МОДЕЛЬ ИМЕНИ АКАДЕМИКА ТЬЮРИНГА»
при Всесоюзном научно-исследовательском институте вычислительной техники и информатизации
Министерства электронной промышленности СССР
(ГНПО «БЯМ им. ак. Тьюринга»)
Можно добавить ещё:
"с опытно-конструкторским бюро"
"производственное объединение п/я А-1234"
"особого назначения"
"первого главного управления"
И конечно, всё это должно быть напечатано на бланке с гербом СССР и грифом "Для служебного пользования" 😄
ChatGPTокарь
Не забывайте, что статья совсем для новичков которые не имеют достаточного практического опыта и в данном случае чат выступает лишь помощником/инструментом, который на самом деле уже способен выдавать неплохой код если промт правильный. В статье не закладывался посыл что нужно бездумно перекладывать всё на него, а просто рассказывается на примере конкретных кейсов чем он может помочь. И объективная реальность сейчас такова, что специалист с чатом скорее всего будет эффективнее, чем тот же без него.
Т.е "ты самый крутой в мире.." это была не ирония??
Прилетает вам за заголовок. Никакой GPT не сделает синьора из джуна. И уж тем более из "совсем новичка"
объективная реальность сейчас такова, что специалист с чатом скорее всего будет эффективнее, чем тот же без него
Специалист — нет. Джейсоноукладчик — может быть.
Давайте на чистоту, если бы индусы использовали Chatgpt, то их код был бы куда лучше
да ну ладно, тех. собес всё расставит по своим местам! :)
не знаю, может мне так не везло, но с чем мне действительно помогали ЛЛМки в написании кода - это до конца разобраться в вопросе и объяснить ей как писать.. экспериментировал с двумя- Chat 4.o и Copilot , последний мне больше понравился. Здесь конечно нужно сделать оговорку, что я любитель.
У меня да, основное использование chat gpt - объяснять ему как глубоко он заблуждается, тем самым разбираясь в вопросе самому. Раньше для этого мне требовались либо студенты, либо джуны)
нужно сделать оговорку, что я любитель
Вот именно. LLM это поиск + копипаста со stackoverflow на стероидах. Всё.
Если что-то на этот so не попало (люди перестали туда писать года два как) или просто слишком сложное для формата вопрос-ответ, то всё, GPT отдыхает.
Не знаю какой GPT вам позволял получать что-то адекватное в смысле сложного кода длиннее 2 строчек, единственное что более-менее меня спасает в сложных ситуациях - perplexity. И то, лишь экономит время на гугление...
Мне помогает разобраться в предметных областях, в которых я ещё не бывал до этого. Тупо подыскать термины для гугления. Говоришь ему "мне надо сделать то и то", оно пыхтит, выдает невнятную дичь, но по по дороге выплёвывает достаточное количество терминологии, чтобы ты понял, куда вообще можно копать.
Cursor (на базе claude sonnet 3.5) позволяет писать целые проекты.
Вот вам мой пример - телеграм бот для учета расходов - по ссылке репозиторий, в нем есть вся история промптинга cursor с привязкой к коммитам.
Я не написал ни строчки кода (это был принципиальный челлендж). Да, я разработчик и понимаю что происходит, да, приходилось по несколько раз объяснять и подсказывать что не так, но это не отменяет того факта, что проект был успешно написан и я им пользуюсь.
На написание бота полностью самостоятельно я бы потратил примерно столько же времени, но у него бы точно не было покрытия тестами на 80+ и настроенного github ci за это время.
Я почитал ваш "проект": там ллм по запросу генерит бойлерплейты и мержит их в точки, которые вы указываете. Затем этот набор бойлерплейтов вы втюхиваете заказчику под видом "проекта". Это хороший бизнес план в нашем безумном мире: я вас поддерживаю, но повторять не стану.
Заказчик я сам, так что могу заверить - заказчик остался доволен)
Это инструмент, не хотите пользоваться — не нужно. Я помню времена, когда некоторые люди с презрением смотрели на всякие IDE и с гордостью говорили, а я вот пишу сайты в notepad. Я лично вижу для себя огромные плюсы использования таких инструментов. И понятное дело, что есть свои ограничения, как и свои преимущества, их нужно учитывать.
Вот, к примеру, делал электронный каталог для своих книжек, купленных в разных местах. Мне Cursor интерфейс сгенерировал на Vue 3, bun, Axios, Pinia, Shadcn UI, Tailwind, потом я ему в некоторых запросах уточняю чего мне не хватает, например, хочу переключатель темы с сохранением в браузере, хочу кнопочки "Читать", "Скачать", хочу, чтобы ты сделал интерфейс для работы с бекендом через Pinia по такой спецификации (кидаю пример ответа от API или ссылку на http://localhost:8000/openapi.json) и он мне делает все что нужно. Это сильно экономит силы и позволяет сосредоточиться на конечном продукте, а не ковыряться в инструментах.

У нас активно пользуются ллм-ками, но с осознанием того, что это такое. ЛЛМ-ка хорошо генерит бойлерплейты, но бойлерплейт это начало проекта, а не его конец. У нас в компании никто не втюхивает набор бойлерплейтов как готовый проект. А если попытается, то будет уволен без права на всплытие, с отрицательным дифферентом (c).
Какая разница, сколько там бойлерплейта, если оно работает. Сколько бойлерплета генерирует любой компилятор "Высокого" ЯП - ужас, но если человек это не читает - то и проблем нет. А читать генерированный код нужно не сильнее, чем читать ассемблер - пройтись по верхам, что общая суть верна и очевидных косяков нет.
Штука в том, что в реальности профессиональные разработчики не занимаются подобным. Это проект уровня ученика старшей школы - ну его действительно такие инструменты могут заменить. Только надо понимать, что подобные гостевухи и 30 лет назад можно было сделать при помощи автоматизированных инструментов. Т.е. курсор заменяет те самые автоматизированные инструменты 30летней давности, не более. В реальной работе они как не использовались, так и не будут использоваться, за исключением каких-то редких специфичных кейсов.
Это сайд проект ради челленджа, первую половину процесса я даже не ревьюил что там происходит, так что в этом плане вы правы.
В реальной разработке cursor точно также применим и применяется всамделишними разработчиками, уверяю. Просто процесс выглядит несколько иначе, все ещё включает ручные правки и ревью, и тем не менее по скорости даёт ощутимые преимущества.
Ну и как и любая технология инструменты развиваются, вспомните где мы были полтора года назад - удачей было получить хотя бы синтаксически верный код. Сейчас же небольшие скрипты / приложения могут писать люди без необходимых компетенций.
Что называется "вы находитесь здесь", посмотрим как отрасль будет развиваться дальше, темпы весьма высоки.
В реальной работе: покушал там, посмотрел ютуб там, полежал на диванчике пошел написал 3 строчки, удалил 500 строк выше.
Подскажите плиз хоть 1 задачу про которые все говорят?
Ты еле развернул проект, чуть-чуть разбираешься в синтаксисе, но что значат все эти многобукаф и строчки кода – понятия не имеешь.
Значит ты паршивый джун.
Написал код, но не хочешь спалиться на ревью, что плохо пишешь.
Ещё и скрываешь это.
Написать документацию к функции или проекту — скучно и сложно, особенно если постоянно ничего не успеваешь.
А происходит это потому, что ты - хреновый спец. Да вообще не спец. Такая документация, которую эта чат-гопота нагенерила на представленной картинке, нафиг не нужна: из кода всё прекрасно видно, что там делается. Она бесполезна.
Коллега или стажёр просит тебя объяснить сложный концепт.
Если ты настолько паршивый джун, то какие с тебя, к лешему, объяснения сложных концептов?! Ты их сам-то не понимаешь. Никто у тебя ничего спрашивать не будет.
не знаешь, какие вопросы задают на уровне мидла/сеньора
Любые, какие в голову придут по велению левой пятки. Ко всем не подготовишься. Опять же, вызубрив ответы, ты демонстрируешь только то, что тебе не влом готовиться к этой головомойке и у тебя хорошая память.
Просишь советы по обучению джунов
С этим нужно идти к своему руководителю и спрашивать, что почитать/поделать. Но мы уже выяснили, что ты хреновый джун, так что обучать тебе всё равно никого не придётся.
Джуна надо еще заслужить)
Вы как будто завидуете современному поколению начинающих разработчиков, что они могут довольно быстро разобраться в вопросе, и решить поставленную задачу, с помощью нейронок, а у вас не было такой возможности и вам приходилось гуглить до посинения, или методом тыка биться головой о стену, решая подобные задачи) Наверное так же, когда появился интерет, специалисты которые в библиотеках искали ответы на свои вопросы, гнобили молодеж за то, что они могли найти ответ просто в гугле) Короче все как всегда, отцы и дети)
Нет)
Гнобят неиронки за то, что они по факту ничего сложнее сортировки пузырьком не напишет(даже если тебе сильно надо)
Обучение через нейронки тоже странная штука. Много знаний странно стыкуются, нельзя потыкать примеры и все в таком духе.
Я сам пользуюсь неиронкой(на уровне IDE, когда иду в чат - убеждаюсь что оно тупое). Код пишется быстрее - да, лучше ли он того, что можно самому написать - даже не близко
LLM может написать очень многое, видимо у вас было мало опыта их использования за пределами "сходил в чат". Современные LLM при правильном промте и несложный проект осилят, про сортировку даже речи не идет.
Проблема нейронок в первую очередь в том, что они не всегда понимают, что именно от них хотят, но тут в том числе есть вина "мясных мешков" которое просят кнопку "сделать збс", когда на деле там нужно расписать подробное ТЗ.
Ну и результат в 9/10 случаев нужно дорабатывать напильником, впрочем это не сильно отличается от того, что вам рандомный джун напишет.
Вот свежий пример использования, с которым нейронка не справилась.
Написать React компонент для рулетки, где находится 11 элементов(картинки), сделано все должно быть в виде круга, который уходит за рамки экрана(телефон, размер одной картинки 350х250).
Или как вариант попробуйте написать адекватное открытие кейсов(с анимации из КС).
Код компонента
import React, { useState } from "react";
import "./Roulette.css"; // Подключаем стили
const images = [
"image1.jpg",
"image2.jpg",
"image3.jpg",
"image4.jpg",
"image5.jpg",
"image6.jpg",
"image7.jpg",
"image8.jpg",
"image9.jpg",
"image10.jpg",
"image11.jpg",
];
const Roulette = () => {
const [angle, setAngle] = useState(0);
const spin = () => {
const newAngle = angle + Math.floor(Math.random() * 360 + 720); // Случайное вращение на минимум 2 оборота
setAngle(newAngle);
};
return (
<div className="roulette-container">
<div
className="roulette"
style={{ transform: `rotate(${angle}deg)` }}
>
{images.map((image, index) => {
const angleStep = (360 / images.length) * index; // Угол для каждого элемента
const x = 150 * Math.cos((angleStep * Math.PI) / 180); // Позиция X
const y = 150 * Math.sin((angleStep * Math.PI) / 180); // Позиция Y
return (
<div
key={index}
className="roulette-item"
style={{
transform: `translate(${x}px, ${y}px)`,
}}
>
<img src={image} alt={`Item ${index + 1}`} />
</div>
);
})}
</div>
<button className="spin-button" onClick={spin}>
Spin
</button>
</div>
);
};
export default Roulette;
Стили (Roulette.css)
.roulette-container {
position: relative;
width: 400px;
height: 400px;
margin: 0 auto;
overflow: hidden; /* Прячем элементы, которые выходят за пределы экрана */
}
.roulette {
position: absolute;
top: 50%;
left: 50%;
width: 300px;
height: 300px;
margin-top: -150px; /* Центруем круг */
margin-left: -150px;
transform-origin: center; /* Устанавливаем центр вращения */
transition: transform 2s ease-out; /* Анимация вращения */
}
.roulette-item {
position: absolute;
top: 50%;
left: 50%;
width: 350px;
height: 250px;
margin-top: -125px; /* Сдвигаем элемент по центру */
margin-left: -175px; /* Сдвигаем элемент по центру */
}
.roulette-item img {
width: 100%;
height: 100%;
object-fit: cover;
}
.spin-button {
display: block;
margin: 20px auto;
padding: 10px 20px;
font-size: 16px;
border: none;
background-color: #007bff;
color: white;
border-radius: 5px;
cursor: pointer;
transition: background-color 0.3s;
}
.spin-button:hover {
background-color: #0056b3;
}
Подскажи те решила ли твою задачу "кастомизированная версия ChatGPT" - Universal Primer?
на деле там нужно расписать подробное ТЗ.
О том и речь

приходилось гуглить до посинения
(Сатанинский смех) Гуглить! А как было гуглить до появления Гугла ))? Деды показывают длинную полку с томами фирменной документации на английском и говорят: тут ответы на все вопросы. И не устают напоминать, что мы, молодежь, в тепличных условиях растем - у нас фирменная документация есть! А вот у них только засаленные распечатки из-под АЦПУ были!
Некоторых из тех дедов уже на свете нет, эх...
В том и печаль, что не помогает эта дичь быстро разобраться с вопросом. Ладно, если просто верхушек накидает и недоджун хотя бы их усвоит. Хуже всего, что этот недоджун безоговорочно доверяет выдаче от нейронки, хотя где гарантии правильности ответа? Вспоминается история самого копируемого Java кода со StackOverflow.
О, а что за история про самый копируемый код?
https://programming.guide/worlds-most-copied-so-snippet.html
Если вкратце, то код в ответе на SO содержал ошибку. Но, его копировали почти десять лет и никто не заметил что что-то не так.
Значит ты паршивый джун.
Ну это-то понятно, но делать что? Просто посыпать голову пеплом задаче не поможет. "Быть лучше и учиться" - даст результат в каком-то возможно отдаленном будущем, а задачу возможно нужно сделать уже сейчас. Виновато руководство, которое дало задачу не по зубам? Допустим, но идти выяснять отношения джуны обычно не в состоянии - там на вакансию 100 кандидатов на рынке сидит, буквально как раньше менеджеры могли только мечтать.
А так остается только идти в дворники, кушать ведь хочется.
Реальный пример:Задача: Реализовать функцию, которая принимает список строк и возвращает новый список, содержащий только строки, длина которых больше заданного значения.
Меньше строк не значит лучше или профессиональнее. Когда через пару лет придётся вернуться к такому коду и разбираться в нем, то сам себя проклянёшь за то, что не написал как в первом варианте: просто и понятно.
Я не знаю, осталось ли ещё где-то количество написанных строк мерилом проделанной работы или нет. Думаю, что это уже пережиток прошлого. Совет тем новичкам, кто это будет читать: лучше пишите больше строк, но которые читать легко и понятно, чем меньше, но сложных для понимания. Всякие конструкции, позволяющие "сделать код более компактным" как правило читаются и понимаются значительно хуже.
лучше пишите больше строк, но которые читать легко и понятно
Эту идею до коллег всё пытаюсь доносить. Фокусы с побитовыми операторами это хорошо, но не нужно.
За исключением каких-то ну очень специфичных случаев, требующих какой-то оптимизации, без которой не обойтись, код нужно писать как можно подробнее, как можно больше комментируя свои действия для тех, кто будет с этим кодом работать после тебя.
В общем, мой посыл в том, что мы пишем код в первую очередь для людей. Только потом для машины.
писать надо по принципу удобства читающего - наименьшего напряжения и удивления
потому что за время эксплуатации один кусок кода будут читать минимум 2 раза - разработчик и ревьюер, а в среднем 5 раз
причем, читающий это не ревьюер сеньор, а обычные суслики - разработчики
Согласен, что меньше не обязательно лучше и новичкам нужно прежде всего писать понятно. Главное чтобы это не превращалось в кашу когда половина кода ничего не делает
Реальный пример:Задача: Реализовать функцию, которая принимает список строк и возвращает новый список, содержащий только строки, длина которых больше заданного значения.
Что в нем реального? Его как будто выдумала пенсионерка, которая на дзене прочитала что-то про погромирование. Сидят эти ваши погромисты и весь день то сортировки пишут, то строки фильтруют, то ищут максимальное число в массиве. Да, конечно. Именно это мы в основном и делаем. Именно это это получаем 300к/сек
Хотите пример реальной задачи? На чарте в графане видно, что вчера у сервиса в течение часа утекла память. Вперед, разбирайся.
Отличная задача для джуна. /s
Нормальная. Где-то джунов нанимают для мебели, где-то для работы.
Наш джун буквально на прошлой неделе вот прямо почти в такой задаче разобрался. Потратил 4 часа, но нарыл причину.
Это удачное приобретение для команды. Такие джуны бывают, но не так уж часто.
P.S. либо подскажите, как вы их фильтруете, если у вас часто.
Пришел на практику, проявил желание работать. В одном проекте дали сложную задачу (реально сложную и не интересную, разбор огромного скрипта). Он пришел ко мне и сказал, что там не нужен и может быть у меня есть задачи для него. Ну, конечно, есть. Только я начал с простых, атомарных и интересных задач. И так за полгода он постепенно стал решать более сложные задачи, пока не стал самостоятельным сейчас. Все реже задает вопросы и делает. Главное мотивировать, а не отбить желание что-то делать). Разумеется, на первом этапе любой начинающий требует внимания, задает вопросы. Но, по-другому - никак.
Ну нет, это все-таки задача минимум для миддла. Для джуна задача будет звучать как "На эндпоинте N реализован экспорт метрик в графану, реализуй по аналогии для 29 оставшихся эндпоинтов"
chatGPT из джуна сделает тебя самоуверенным джуном с chatGPT)
Списал экзамен, списал диплом, теперь спишу работу? Мир победивших двоечников.
Вы за меня что и есть будете.jpg
Если человек разучится работать то есть высокий шанс что разучится и сам себя развлекать.
Мир победивших двоечников.
Гейткипер детектед? Мне вот как заказчику задачи глубоко безразлично, как создан код: набрал его Великий Senior Developer вручную в блокноте (современные IDE для двоечников) на спине единорога, накропал на базе готовой библиотеки и стаковерфлоу мидл или наговнякал при помощи нейросетки джун.
Мне надо чтобы было в срок, решало поставленную задачу и соответствовало принятым в компании стандартам кода для дальнейшей его поддержки
Мне вот как заказчику задачи глубоко безразлично, как создан код
Ваше безразличие испарится как дым, когда оно упадёт.
У всех заказчиков цели разные. Бывают такие, которым не все равно как это будет потом работать и как это потом развивать и сопровождать.
Недавно начал использовать Cursor, год назад пару месяцев пользовался Copilot. И, честно сказать, сложно понять, как он способен из джуна сделать сеньора. Да, возможности по сравнению с GPT-3 выросли кратно, но нейронка все еще временами дико тупит на реальном проекте, требует детально прописывать ей тз и давать контекст, а написанный ею код требуется тщательно ревьюить (галлюцинации и потеря контекста никуда не делись).
Причем проблемы в сгенерированном коде часто не лежат на поверхности, и нулевый джун, который еле выучил синтаксис, их банально не увидит. Код же работает - уже хорошо.
Скорее, нейронки сейчас дают мидлу-сеньору возможность заполучить себе очень производительного, но не очень умного джуна, на которого можно сгрузить рутину, но за которым всегда требуется присматривать. Это очень круто само по себе, но о замене разработчиков нейронками говорить пока рано.
требует детально прописывать ей тз
А в реальном проекте никто этим не занимается?) Заказчик - проджект - аналитик - техлид по сути львиную долю времени только и уточняют и формируют понятное ТЗ
Но с посылом комментария согласен, cursor заменяет джуна по практическим навыкам и архитектора по теории, только этот джун все делает моментально, а не тупит пару дней над задачей
требует детально прописывать ей тз и давать контекст
Ну да

Есть такой метод rubberducking вникнуть в код. Я пока пытаюсь сформулировать для copilot или Gemini свой вопрос, в голову приходит решение, и я уже его сам записываю в виде кода :) Copilot типа как эта резиновая утка 2.0.
Почему именно chat gpt, а не Claude? По моему опыту пользования Клод в разы лучше справляется с большинством задач. Также чатгпт начинает дичайше тупить когда окно контекста заканчивается. За клодом такого не замечал. + Существенная разница у функций Проекты - закидываешь файлы в знания, просишь изменить что то - Клод сразу найдет нужный кусок кода среди всех файлой и пришлет его изменённую версию. Chatgpt может вообще вместо изменений прислать инструкцию с СОВЕТАМИ, где приблизительно менять и примерно как менять (даже если в его инструкциях прописано так не делать). Может прислать измененный кусок кода, но при этом он изменит ещё и существующую логику так, что она перестанет работать корректно. Может вообще выдумать что то свое, не связанное с кодом в его знаниях. В общем по сравнению с клодом чатгпт глупый ботяра. Меня удивляет что везде форсят его, а не клод
Зачем эти гпт и клоды когда есть джемини. Закинул в него питон файл на 9000 строк, сказал добавь новую фичу и буквально с первого раза рабочий код добавил. Потом его немного переработал, переписал доку к нему. Всего вышло 125т токенов. И за эти токены не надо платить.
А с конфиденциальностью у работодателя не возникнут вопросы? А хуже того с какой нить тайной)
Если искали ответ на вопрос в заголовке, то он тут:
Скрытый текст
Никак. По крайней мере пока.
Хорошая статья! Зря минусуют... Простая, лёгкая, понятная. 100% будет полезна тем, кто начинает знакомство с ИИ в аспекте помощи в программировании.
Чего минусят, непонятно...
То, что статья простая, лёгкая и понятная не означает, что посыл статьи правильный. Минусуют за то, что автор несёт какую-то дичь и даёт вредные советы. Выше уже расписали в чем конкретно автор не прав.
Статья бесполезная, от человека который не разобрался ни в сути работы, ни в том как ему действительно может помочь ChatGPT. Фантазии в общем.

Столько раз уже слышал про это. LLM отчасти помогают с небольшими фрагментами. НО очень часто жестко тупят и если ты не понимаешь, что они пишут, то..
Выше один из примеров... N-ая неудачная попытка в ChatGPT сегодня в течении дня. Где он мне написал полную охинею в ответе. Самый шик был сегодня, когда я ему написал, что это бред и нужно сконвертировать весь код, который я ему написал. Он в ответ начал писать на Python какую то дичь. Какой к черту Python, когда даже слово такого в чате не было, а в запросе было конвертировать MS SQL скрипт в PostgreSQL.
Так же, когда я написал, что он выкинул часть кода после конвертации (на другой запрос), он в ответ начал вставлять CREATE TABLE придумывая, какие могли быть таблицы в этом большом запросе.
А в целом, я часто вижу такое: --- название поля ... и что тут будет. ЧТО? тебя просили сконвертировать, а не написать комментарий, где дальше сам код убран и написано что тут надо будет дописать его мне.
Ок, я понимаю, что он делает и вижу его ошибки. Могу разбить на множество частей, или те части с которым он не справляется сделать сам. А как вы предлагаете это делать Джуну, чтобы стать Сеньором?
Это кстати относится ко всем, кто хвалит LLM и что они заменят разработчиков. Что вы там пишете такого, что вас могут заменить?
Тут на хабре была статья, как помню кто-то писал что делают Nocode для отчетов, где генерируется SQL по скормленной базе. Серьезно? Чтобы на сложных запросах, сложнее нескольких select и join он написал полнейшую пургу с "... тут должен быть код" (что в итоге выполниться возможно, но даст совсем другой результат).
И это я описал мизерную часть. Там LLM до полноценной разработки, как суслику до кроманьонца. Не ужели есть такая работа, где LLM за разработчика может написать нормальный код и ему за это платят большие деньги? Где она такая? Назовите компания)
С тем, что ИИ не способен пока заменить разработчика - полностью согласен. Сложные запросы ставят современные модели в тупик, в основном благодаря тому, что даже рассуждающие модели могут рассуждать совершенно не в ту сторону.
Но есть нюанс. Для решения комплексных проблем создаются оркестры из разных моделей на основе мультиагентных систем. В таких оркестрах есть агенты, отвечающие за анализ запроса пользователя и его расшифровку в более структурированный вид (по сути рассуждения о том, что действительно имел ввиду пользователь). Есть кодогенерационные агенты; есть те, что будут проверять высокоуровневую логику сгенерированного кода; те, что будут запускать код в сендбоксе и при наличии ошибок анализировать проблемы и отправлять их обратно; те, что имеют доступ к кодовой базе проекта и документации и способны обогащать общий контекст. Каждый агент настроен по своему, у каждого своя роль, свои системные инструкции, свои таски и свои инструменты для их решения. Весь процесс итерационный и может насчитывать множество циклов.
Вот в таком формате ИИ способен решать сложные задачи. Но опять же не без присмотра разработчика, который способен ставить четкие задачи и знает, что хочет получить в итоге и как реализация должна себя вести на всех затрагиваемых уровнях.
То есть даже такие сложные программные комплексы с ИИ являются не волшебной палочкой, способной из недоджуна сделать супер-архитект-сеньор-помидора, а инструментом со своими ограничениями, лишь облегчающие и ускоряющие получение необходимого результата. Причём применяться, зачастую, они должны продвинутыми разработчиками, находящимися в контексте задачи и текущего проекта.
Другой вопрос, что такие комплексы просто так не доступны простому обывателю (а если и доступны, то их, зачастую, ещё нужно правильно настроить). Потому обе крайности в вечном холиваре о возможностях ИИ (1 - ИИ тупее моего попугая, 2 - ИИ заменят синьоров через 3,2...) считаю неверными. Истина как всегда где-то посередине. И чуть-чуть сбоку.
Чтобы не быть совсем уж голословным добавлю сюда ссылку на список решений, что проходят тесты на решение реальных issues с гитхаб: https://www.swebench.com
Проект - SWE-bench.
Как инструмент llm прекрасны, дополняют разработку, делает некоторые простые черновые вещи. У них есть предел, хоть с агентами, хоть без агентов. Он прежде всего связан с архитектурной, основой этих llm.
Я сейчас переношу некоторые части мозга, под их аналог на нейронках. Там такая лютая дичь на запросы. Для того, кто не понимает, что он выдал, кажется круто, попросил и написал. А когда ты понимаешь, то это ужас. Причем дело не в ТЗ, так как описание на основе исследований он неплохо обобщает. (Вот обобщает текст, llm достаточно хорошо, хотя тоже главное не перестараться). Но вот абстрактно перенести идеи из одной области на другую. Тут тупик.
С агентом или без, современные llm не умеют абстрагировать и следовательно связывать закономерности и события двух разных областей. Это уже графы, пространственные сравнения, а текущие llm это последовательный набор данных. Вы их хоть миллионов агентов обвешайте, проблему это не решит. Так как нужны изменения на уровне архитектуры. Агенты это просто разные специализированные llm или набор знаний или действий. Это совсем не решает указанной выше проблемы.
Как инструмент отличные, но из джуна не сделают сеньора. Скорей, сделают человека, который думает что он сеньор.
Как инструмент отличные, но из джуна не сделают сеньора. Скорей, сделают человека, который думает что он сеньор.
Хоть в этом мы солидарны друг с другом.
современные llm не умеют абстрагировать и следовательно связывать закономерности и события двух разных областей.
Напрямую действительно не могут. Лишь по запросу, с указанием куда копать. Но такой запрос может составить не только человек, но и ИИ, что отвечает за общую канву исследования или за соответствующую его часть, если у него на это достаточно данных и инструментов.
В любом случае, можно посмотреть на факты. Уже сейчас есть специальные бенчмарки (выше скидывал), с реальными задачами (issues), и списком систем, что эти задачи решает, хоть и частично. Например SWE-bench - открытый бенчмарк, в котором в принципе всё относительно прозрачно.
Не может абстрагировать и не могут такое составить, так как для этого надо понимать с чем сравнивать. В этом и есть смысл абстрагирования, когда ты видишь общие закономерности например на уровне физики и биологического процесса и на молекулярном уровне. Нейронки на трансформерах по своей природе не могут это сделать.
Можно сколько угодно приводить бенчмаркеров. Сама архитектура трансформеров последовательная, как язык, так как речь последовательная.
Абстрагирование это пространственное восприятие, которое досталось нам от зрения. Которое не последовательно, а пространственное и связывает разные события друг с другом.
Я на днях мучился с паузами речи, пытаясь с помощью них сделать какую то оценку о языке. Все разбилось, так как в итоге после долгих мучений, заметил что паузы образуют языковой граф с разным уровнем детализации речи. Это схоже с графом детализации у зрения. Но есть одно важное отличие, речь последовательная и граф там тоже, механизм внимания перемещается между узлами чтобы либо найти смысл, эмоциональное выражение, слова, слоги, общение, бит. В то время как у зрения этот граф сложнее, он не последовательный а пространственный (близко к swin сеткам зрения).
Так вот абстрактное мышление , связано с пространственным представлением сеток. У llm в основе трансформеры - это речь, с последовательным представлением связей в виде текста. И хоть агенты, хоть триллион параметров не сделают из llm трансформеров - пространственную модель. Тут надо усложнять архитектуру сеток.
ИИ очень хороший помощник, но именно помощник! Как, например, шуруповёрт, если руки откуда надо то вам будет удобнее сделать работу, а если руки из одного места... Так и здесь длинный код для конкретной специфической задачи просто не заработает, но зная язык, легко подправить косяки. Причем косяки чаще всего банальные.
Правильное название статьи должно быть:Как слить корпоративный код в общий доступ и сделать из джуна тупицу
Отбросив джуниорские фантазии из статьи, даавайте разберемся в чем действительно может помочь ChatGPT джуну.
В начале о том, что не нужно делать:
Во все начальные промты нужно добавлять роль и контекст для чата.
Не надо делать таких глупостей. Просто задайте чату вопрос так как задали бы другому программисту а он ответит. Он на это и тренирован.
«Напиши функцию на Python, которая ищет дубликаты в массиве и возвращает их индексы.»
Таких задач не бывает. Может быть будет задача типа "Добавь валидацию к этим DTO". Или "Добавь ендпоинт для поддержки такой-то функции и запустите все это вместе с фронтендером". Или "поправь логику мидлваре обработки ошибок". Это всегда будет задача на разобраться-в-неком-нюансе-технологии плюс простой в основном линейный алгоритм плюс найти правильное место куда все всунуть и как придать этому вменяемый вид все не запутав и не поломав.
«Исправь ошибку которая возникает. Ошибка [шаги до ошибки, код и описание], код проекта [скопированный код]»
Так тоже не бывает. Ошибка конечно же будет не в том коде где выпадает исключение, если вообще есть исключение. Найти в проекте код в котором была ошибка - это и есть 90% работы по исправлению ошибка, а весь проект в GPT никогда не закатаешь.
Можешь задавать вопросы:«Как оптимизировать этот код для больших массивов?»
Так тоже не бывает. Не оптимизированные код скорее означает, что он делает лишние запросы к базе или к внешним сервисам. Нужно изменить логику, что-то объединить или кэшировать, добавить больше проверок. GhatGPT не сильно в этом плане креативен и не знает всей картины.
«Напиши документацию к этому коду, шаг за шагом описывая алгоритм его работы, используемые переменные, структуру БД»
Такой документации не бывает. Код описывает себя сам и не нуждается в документации. Ждуниор скорее всего вообще не будет писать документацию. В документации пишется как пользоваться API, какие данные, скажем, валидируются и почему, исходя из каких соображений сформулированы требования и как они выполнены и так далее.
Перепиши это описание для не-программиста
Это без комментариев. Чат GPT даже квантовую механику объясняет простыми словами. Если эти слова все еще недостаточно простые, вам по-любому ничего не светит на сегодняшнем рынке.
Рефакторинг и ревью: твой личный код-ревьюер
Может сработать в плане подпитки мозга идеями. Если скопировать то что он понаулучшает как есть, уволят примерно на завтра.
Задача: реализовать поиск по базе данных. Как лучше подойти к её решению? Какие вопросы следует задать, чтобы лучше понять требования?
Можно и так, но можно лучше.
Объясни, что такое микросервисы для начинающего разработчика
Это работает, но лучше без "начинающего разработчика". GTP по-любому объясняет не сложно и всегда можно задавать поясняющие вопросы.
Теперь о том, что может работать.
Понимание задачи. Если начинающий программист получил задачу, то первое - нужно понять задачу. Это бывает сложно. Конечная задача здесь - понять самому, своим мозгом. Никакой GPT это понимание не заменит. Но на пути к этому пониманию GPT очень полезен.
Задачу скорее всего обсуждали устно или в локальном чате. Так же подробности разработки требований могут быть в базе документации (конфлюенс). Нужно скопировать задачу в ChatGPT вместе с теми диалогами, что есть и частью документации, и подробно распросить GPT что мог иметь ввиду каждый коллега в чате и что имеется ввиду в описании задачи.
Здесь профит в том, что вы можете не знать терминов, концепций или технологий не улавливать детали в силу неопытности. ChatGPT будет иметь скорее всего в корне неверное мнение о задаче ввиду ограниченности информации, но это все равно будет хорошее начало чтобы сформировать представление о том что нужно делать. Если непонятно или не согласен, нужно возражать чату, он будет выкручиваться, искать другие объяснения.
Если будете задавать вопросы лиду, который поставил вам задачу, опять таки покажите ответы чату. Может быть он понимает их лучше или в ином разрезе.
Изучение нужных деталей технологии. Алгоритм вряд-ли будет сложным, но сделать его нужно с полным пониманием. Поэтому здесь нужно справиться без ChatGPT. Но всегда есть другая проблема - правильное использование технологии. Здесь можно смело просить ChatGPT сформировать примеры кода для подобного рода задач. Копировать не получится, но получится писать по аналогии. Если детали не понятны, лучше спросить. И обязательно нужна допилка напильником: найти на StackOverflow похожие вопросы и ответы, желательно не старше лет 3-х. Потому что GPT может вытянуть совершенно произвольную солянку из решений, от которой у ваших коллег волосы дыбом станут. Так-же обязательно надо поискать в проекте похожие решения (если пишете контроллер, то другой контроллер) и если не очевидно что вы следовали всем традициям или не очевидно зачем эти традиции, лучше скопировать ваш код и код коллег, спросив у чата зачем они делали по другому.
Хороший стиль кода. Довольно наивно надеяться, что можно просто скопировать код в GPT и попросить улучшить. То что выйдет будет совершенно не предсказуемо и возможно фатально для вашей карьеры. Нужно строить код исходят из своего представления о хорошем коде, и когда возникают сомнения спрашивать у GPT какое решение и почему здесь было бы лучше. Т.е. можно спросить "не будет ли оверкил если я здесь добавлю отдельный класс вместо пары приватных функций или лучше оставить попроще". Решение всегда должно быть за вами, вам интересны только доводы GPT. Представьте что вы советуетесь с синьором, которому не то чтобы можно на 100% доверять, но он в целом опытен и объективен.
Очень удобно спрашивать про названия переменных и функций на английском. Описываешь что она означает и выбираешь вариант из предложенных GPT.
Документация или комментарии Здесь все просто: писать их придется самостоятельно без GPT. Все что написано AI сильно выделяется беспощадной округлостью и отсутсвтием конструктива. Поэтому нормальный лид тут же выкинет вас из команды за такие фокусы.
Просто попросите GPT исправить грамматические ошибки и ошибки стиля (если конечно документация на английском). Это точно полезная возможность. Но смотрите внимательно. Улучшая стиль GPT легко может выплеснуть дитя (смысл) вместе с водой.
Таких задач не бывает
Если ее формулировать не искуственно, а в реальном контексте - то бывает
Банальный кейс из практики - естьвозможность создать пост в соцсети. На каждой фотке можно отметить несколько пользователей. Пользователи могут дублироваться.
Для отметки отрисовывается алфавитный список пользователей. В описании поста - пользователи, отмеченные на каждой из фоток перечислены через запятую
Тут +- все джуновские задачи на массивы вписываются. А пример почти из реальной практики (пару концепций опустил)
Так это не будет задача. Это будет незначительная проходная часть задачи.
В 90% случаев она будет решаться некими стандартными для этого языка программирования средствами работы со списками, типа .net Linq или какого-нибудь set из Python. И в 10% случаев нужно будет пройтис циклом по массиву и что-то сделать. И в для создания этого цикла даже синьор сплошь и рядом использует GPT или Copilot, чтобы не напрягая мозг сразу получить некую болванку кода. Но суть и сложность задачи находится вообще не в этой части.
И в для создания этого цикла даже синьор сплошь и рядом использует GPT или Copilot, чтобы не напрягая мозг сразу получить некую болванку кода
Я знаю, я как раз такое и писал)
Но суть в том, что любая, даже сложная задача состоит из мелких подзадач. Которые можно декомпозировать. И уже подзадачи -ГоПоТа делать вполне умеет, при минимальном ревью
синьор сплошь и рядом использует GPT или Copilot, чтобы не напрягая мозг
Синьор, не напрягающий мозг напоминает посетителя тренажёрки, не напрягающего мускулы.
Плохая аналогия напоминает котенка с дверцей
Синьор, не напрягающий мозг напоминает посетителя тренажёрки, не напрягающего мускулы.
Не, там все интереснее пойдет. Copilot или GantGPT нужно рассматривать как третье полушарие или некие скрытые рефлексы или своего рода интуицию. Когда я работаю, я доверяю рефлексам или интуиции и чувствую когда доверять не стоит и нужно проверить. То же самое с GPT. В будущем у программиста будет три полушария - два своих и третье электронное. Задача - слиться во взаимо-понимании настолько, чтобы не осознавалось даже какое конкретно полушарие решило задачу.
После смерти программист все еще сможет ходить на работу, но уже с одним электронным.
В будущем у программиста будет три полушария - два своих и третье электронное. Задача - слиться во взаимо-понимании настолько, чтобы не осознавалось даже какое конкретно полушарие решило задачу.
Ну да, а потом полезут оттяпать полуостров какой — и санкциями — раз, и у целой страны треть мозга йок. А чо, удобно!
Вангую: программисты из создателей превратятся в тех, кто подтирает за AI
У нас было 2 таких джуна и мы их уже уволили. Проверяется такой джун очень легко: садишь его за стол, на доске пишешь его "собственный" код и просишь объяснить. Выясняется, что код написал ии, а джун вовсе и не программист, он просто зашёл за зарплатой. Просто в офисе проветривали и он через открытую дверь заскочил.
Без детального контекста проекта (вся кодовая база), реальную задачу ни ChatGPT, ни Copilot не поможет решить. Дальше встанет вопрос NDA, согласна ли компания с тем что их главная ценность отдается сторонней утилите для просмотра и детального изучения. И даже после этого, например, Copilot не может генерить ничего что не хотелось бы поправить. Полезно для генерации boilerplate, но за ним всё равно надо читать и проверять.
Сеньором точно не сделает тебя ничего кроме личного опыта и набитых шишек.
На момент написания данного комментария:
всего голосов 36
плюсанули 11
минуснули 24
итого: -13 рейтинг.
И вот тут мне.... страшно. Потому что треть аудитории не вкурила вредность советов. Радует, что всё-таки адекватных большинство. Но это пока.
К 2035 году кто-то напишет что-либо аналогичное и мы получим уже пост с положительным рейтингом... Печально.
Казалось бы, что тема AI известна давно. Ну разберитесь уже в азах! Как это работает и как это НЕ работает. И почему так. Поймите же, что всё дело в статистике. Простые вопросы -- простые корректные ответы (если не криво настроена нейронка). Потому что 100500 человек делало множество простых функций в 2-5 строчек кода... А что-либо сложное -- пффф. И так будет всегда, потому что магии нет!
Статья очень вредная. Потому что вместо того чтобы учиться простому через понимание мы учим обезьянок. По итогу человек никогда с таким подходом не станет программистом даже среднего уровня... Про сеньёра молчу -- смешно!
Кого же тогда он сделает из синьора?)
Стали достаточно часто использовать, но... мы бы сказали наоборот, чат-гпт хороший помощник сеньору в виде трудолюбивого, но джуна, при этом джуна который периодически в ходе выполнения одной задачи закидывается наркотой:)
Для чего используем: какие-то базовые вещи которые по каким-то причинам не знаем (из последнего - в ms access стандартное решение для формы сохранения пароля со ***, попробуйте найти), рутина когда надо создать или переделать кучу кода по шаблону (главное четко сформулировать задачу), нечто вроде статического анализатора кода (найти неявные ошибки), анализ поведения кода в разных ситуациях (черновой вариант тест-кейса), поиск ошибок связанных с конфигурацией софта (что бы не гадать какая версия либы нужна что бы что-то наконец скомпилилось).
Почему под наркотой? Потому что после нескольких шагов надо или ресетить (снова заливая код и задавая задачу, в новом чате) или он начинает путать имена файлов, функции, говорит что потерял контекст, может при простой просьбе заменить имя функции взять и поменять алгоритм с умножения на факториал и так далее. То есть сделать на нем проект хоть сколько-нибудь сложный - нереально, на 3-5-10 шаге начнет бредить.
Слить ком. тайну нейронке-что может быть лучше. На гостехе такое используешь- потом будешь десять лет откапывать на колыме камни для эльбруса.
В названии статьи ошибка. Правильное написание:
"Как ChatGPT из джуна сделает 3,14здуна: практический гайд."
Очень много пишут что ChatGPT и ему подобные пока не могут заменить программистов. Мое мнение, что ключевое слово здесь пока и рано или поздно определенным уровням Sofware Enginer придется подвинуться. Кстати, здесь много комментариев о том что AI выдает не качественный код, но никто не привел хотя бы примера, типа вот наговнякал ChatGPT, а вот как ту же задачу решил синьор или мидл.
как-то раз я писал пазл 2д, я его в итоге сделал андроид/пк, и имея две версии(реализации 2 разных подхода) пазла захотел поговорить о всём проекте с ДжиПиТи, зная что ему надо всё описывать говорить какие трактаты в промпт печатал я думаю не надо, как итоге дошло до того что я кидал ему просто куски кода(зная что не всегда можно показать код если это NDA какоенибудь промпт еще длиннее наверно), вроде мы даже с ним были на одной волне какое-то время, но промпты не становились меньше, чтобы описывать более детально вопрос со всем контекстом, по итогу он дал в целом только 2 годных совета, и потом в другие попытки зная какие промпты по величине ему надо писать, я забил на это, и просто поверил в своё обучение, писать сочинение а вдруг он забудет или зависнет. так я полностью убедился в книгах и статьях - у меня такое соприкосновение было с промптом только
ключевое слово здесь пока
«Асимптота — воображаемая прямая, к которой график функции бесконечно приближается по мере удалении параметра в бесконечность, но никогда её не достигает.» ©
Всем привет!
Я не знаю увидят комент или нет, тут достаточно много уже сказали. Но я считаю что истина где-то рядом.
Я сразу сделаю ремарку. Я не работаю разрабом, может когда-нибудь начну искать работу джуном но это не точно. Мне просто нравится писать код. Занимаюсь этим уже чуть больше 2 лет. Пишу приложения для себя, тем чем я пользуюсь постоянно.
Я согласен с ТС что ГПТ, МИСТРА и другие АИ помогают писать код. Если я что-то не понимаю я полезу читать доку + ГПТ. ГПТ также может написать какую-то мелкую функцию условно сортировки или вызова состояния. Но если углубляться в детали то гпт и другие далек от совершенства они также ошибаются как говорили выше, есть чуть умнее есть чуть тупее но +- все одинаковые.
Насчет джунов которые используют ГПТ для того чтобы писать код, если не обдумав начинаю просто вводить запросы в ГПТ и давать результат это дно. Я считаю что любая АИ должна помочь разобраться в ситуации, а сам разраб должен самостоятельно решить вопрос.
К примеру мне сложно даются Асинхронные функции при работе с бэком, на прошлой неделе писал несколько раз в разных вариантах(логинизация и регистрация. Надеюсь правильно написал) написал несколько раз не правильно, почитал доку и погуглил, не все понял, задал вопрос ГПТ посмотрел ошибки, переписал код ГПТ, посмотрел что к чему относится, задал дополнительные вопросы которые относятся к функции. Сказать что я теперь мега крутой спец по написанию Асинхронных функций?! нет, но понимание появляется как это рабтает.
Я к чему все это, я считаю что ГПТ, Курсор и другие АИ полезны когда надо разобраться в той или иной ситуации, почему это так произошло и как это не допустить в будущем.
Возможно ТС имел в виду что не Джун станет Синьером а то что надо использовать чтобы решить какие-то задачи за кратчайшее время?)
Читаешь через одного, да это максимум джун, так, быстрый, но туповатый помощник для настоящего творца.
И далее хаханьки на тему где там джун-ии не вывез
Я же вижу другие акценты. Это джун. Джун быстрый, бесплатный, безотказный. Он улучшается, растет на глазах.
Заголовок статьи провокационный, факт. Он на вырост, через время и в хорошо платной версии, которая не генерит налету роняя тапки, а думает подольше и проверяет себя потщательнее, все может приблизиться к заголовку
Дмитрий Тунгусков @Dmitrii_tun
Руководитель отдела инженерии
Будьте добры, расскажите в какой именно компании вы руководите отделом инженерии? Мне для себя и для друга.
ChatGPT хороший инструмент, но всё также остается проблема задавания правильных вопросов нейронке и понимание контекста. Нейронка первая тебе не напишет что изучать, но хотелось бы
Заголовок поста: Как ChatGPT может помочь джуну: практический гайд
Пост: Никак.
Хм. Думаю попробовать.
Мне надо написать очень простой классификатор-справочник для учета лабораторного барахла (а то мы задолбались всё искать), настолько простой, что готовых таких я не нашел. В качестве упражнения по проганью с помощью ИИ можно попробовать. А то я только физику-математику прогаю и всё.
А ведь ИИ всего-то год с небольшим, он ещё младенец, а уже ломается столько копий в спорах... От будущего не скрыться, хотим ли мы этого или нет.
При обучении осознанно запрещал себе генерировать с помощью нейронки какие-то большие куски кода за меня, обращался только с вопросами в духе "объясни, как это работает", когда было совсем непонятно. Статья учит как стать оператором ChatGPT, а не программистом.
Как ChatGPT может помочь джуну: практический гайд