Эти мысли я пытался сформулировать уже несколько раз, но каждый раз мне не нравился результат. Это тоже не самая лучшая попытка. Тут нет структуры повествования, так как нет самого повествования. Я буду больше задавать вопросы, чем искать ответы, так как совсем запутался. Чем дольше наблюдаю за развитием ИИ, тем меньше понимаю, что вообще делать.
Это не про то, что ИИ заменит людей. Это не про то, что ИИ не заменит людей. Здесь будет скорее про то, что появился новый инструмент, который сильно изменил мир, но всё ещё есть люди, которые считают его игрушкой или отрицают его пользу.
Сам я использую LLM на протяжении последних 5–6 месяцев, но этого достаточно, чтобы заметить изменения в моей жизни и работе. Как минимум изменился подход к поиску новой информации. Да, полностью доверять генеративным нейронкам я не стану, но первичный поиск можно начать с их помощью — собрать ядро вопросов и потенциальных ответов, с которыми уже дальше можно идти. Да, что говорить обо мне, если к концу 2024 года заходы на сайт GPT обогнали заходы на Википедию.
В работе я тоже не стесняюсь применять ИИ: написать новый класс, функцию/метод — это я скорее «доверю» ИИ, даже набор тестов, дам написать. Но переписать старый проверенный код, полностью на откуп LLM не отдам, только если задача простая, а кодовая база невелика. Результаты работы LLM меня не всегда радуют, поэтому всегда перепроверяю и требую переписать пока не начнет нравиться
Вайбкодинг — штука заманчивая, но пока я в него полностью погрузиться не готов. Не хочу терять то ощущение магии и волшебства, которое дарит процесс разработки, когда из разрознённых частей рождается что-то новое. Возможно, полезное только для тебя, а возможно — нужное и кому-то ещё. Чаще, конечно, последнее. Хотя, возможно, я и не прав, и именно чистый вайбкодинг способен это ощущение усилить, но я пока не готов ему полностью довериться.
Но сейчас не про это. Речь скорее про то, как правильно теперь учиться создавать это волшебство. Не обязательно быть программистом, ведь похожие ощущения должны испытывать и представители других инженерных и не только профессий. Как учиться в целом? Нужны ли теперь курсы и учителя? Я буду, конечно, говорить больше именно про программирование, потому что область мне более-менее знакома, но думаю, что всё +/- верно и для любых других областей.
С каждым днём мне всё больше кажется, что целенаправленно учиться (кодить) теперь нет необходимости — всему можно научиться в процессе. Используя LLM, можно за несколько часов, в худшем случае — дней, создать неплохое MVP, а то и полностью готовый продукт, самостоятельно не написав ни строчки кода, но получив очень неплохую возможность помучить нейронку вопросами: «почему было сделано так?», «как сделать лучше?», «какие ещё есть варианты?». Получить от неё ссылки на первоисточник и вполне понятные объяснения, которых достаточно для формирования базового понимания.
Чем больше я взаимодействую с LLM, тем меньше понимаю, как сейчас правильно готовиться к работе программиста и надо ли к ней готовиться. Что реально нужно знать, чтобы работать на позиции джуна, край мидла (да, я знаю, что есть мнение: раз не сеньёр, то и не разработчик вовсе, но все с чего-то начинали). Я говорю не про прохождение собеседования, что является отдельной задачей, а именно — работать и успешно справляться со своими обязанностями.
До середины 2024 года я был полностью уверен, что нужно знать язык программирования, пачку алгоритмов, иметь неплохое представление о структурах данных, базовый набор ООП-паттернов, различать многопоточность и асинхронность, уметь работать с git, уметь собрать docker-образ со своим кодом, ну и в целом мне казалось, что этого для начала достаточно.
Сейчас большая часть если не все из списка выше кажется уже не так актуально. ИИ-агент под капотом, у которого LLM, прекрасно поможет решить большинство из этих задач. Речь сейчас не про архитектуру, правильное разбиение на слои и создание кучи абстракций, а о рутинных задачах, для которых раньше нужны были толпы кодеров. Там, где раньше нужно было 3–5 человек, сейчас легко справится один. Пусть не всегда это так, но +/-.
Так вот и возникает вопрос: а надо ли теперь знать языки программирования, библиотеки, фреймворки, базовую алгоритмику, структуры данных и т. д.? Да, LLM может ошибиться при написании кода, использовать неверные подходы, писать плохо читаемый код, но и начинающий разработчик может ошибиться и сделать куда больше ошибок, да что там — начинающий, любой может ошибиться. Думается мне, очень мало разработчиков, которые способны писать код без единой ошибки — сразу чистый, оптимизированный и вылизанный до идеала, так чтобы рефакторинг был ненужен.
Для энтерпрайз-проектов всё понятно — LLM + опытный разработчик. Как быть для среднего, малого и микро-бизнеса? А если это не IT-сегмент, а производственный или розничный, или сфера услуг? Там тоже бывает нужен программист на постоянную, а то и не один. Там хватит человека, который умеет пользоваться только ИИ? Или так же нужен человек с опытом + LLM для ускорения? Или допустимы оба варианта?
Вроде экономисты провели двухлетнее исследование в Дании. Результаты которого легко сейчас найти в сети. Согласно этому исследованию, компании не получили серьёзного прироста в производительности от внедрения ИИ. Да, есть ускорение локальных задач, но прям колоссального высвобождения рабочего времени не случилось. Если я ничего не путаю, основной вывод: пока внедрение ИИ идёт очень криво — безопасники и менеджмент перестраховываются, вводят избыточный контроль.
И это понятно: ИИ сейчас на такой стадии, что его ИИ ещё сложно назвать. LLM, имеющие доступ к конфиденциальной информации — это почти всегда гарантированная уязвимость в системе, вот и приходится осторожничать. Отсюда ускорение в одном компенсируется тормозами и новыми задачами по другим направлениям.
А ещё стоит отметить, что люди на работе решают далеко не одну задачу, а действуют комплексно: как минимум планируют, расставляют приоритеты, взаимодействуют с другими людьми. Как мне кажется, последние съедают неоправданно много времени.
Работал в динамичной компании, стремящейся выработать свою корпоративную культуру взаимодействия сотрудников. В ней совещания отнимали от 1/3 до 2/3 рабочего времени в день. Совещаниями дело никогда не ограничивается — мы все это прекрасно знаем. Есть еще переписка, которая зачастую ничего не способна дать, тупо потому что не читается или читается, но остается без ответа. Так же бывают люди, которые просто не хотят или не могут вступать в переписку — им проще созвониться или встретиться на пару минут, которые волшебным образом превращаются в час или два.
Даже минимальное использование LLM может ускорить решение задачи, если грамотно всё описать, но пока я не видел, чтобы ИИ помогала эффективно справиться с социальной составляющей на рабочем месте. Да даже просто переводила запрос клиента, в котором скиншот экрана без подписей, в понятную задачу, без необходимости звонить и выяснять, что нужно сделать.
Сомнения в необходимой «глубине» того, что сейчас принято называть хард-скиллами, у меня появились очень давно, ещё до бума LLM, но серьёзно укрепились к концу 2024, а после того, как я попробовал Roocode на реальном, пусть и небольшом кейсе, все сомнения стали, можно сказать, осязаемыми. Мои первые впечатления (https://t.me/it_hat/99 ) иначе чем паникой (немного утрирую, но самую малость) не назвать. Да позже, так же на опыте, я понял, что ИИ-агенты — не лекарство от всех болезней, как, собственно, и LLM. Естественные ограничения — куда без них, но сам факт того, что при желании можно получить вполне приемлемый код без напряга, остаётся фактом. Для рутинных задач ускорение налицо. Да и не для рутины можно найти варианты — да придётся сделать итераций побольше, и тут уже надо правильно оценить затраты времени: может, проще будет написать всё самому.
Да, начинающий разработчик, будучи слаб в технических скилах будет затратен в плане токенов, однозначно будет их тратить почем зря, но довольно быстро научится задавать правильные вопросы и ставить корректные задачи.
Отсюда вопрос: зачем на начальном этапе уметь писать код самому? Зачем этому учиться? Ты и так научишься в процессе, засыпая LLM вопросами и углубляя своё понимание предметной области? Разве нет? Да, это не профессионально, да, это по-дилетантски, но разве это не даст специалиста, способного решать задачи мидла по цене джуна? Для большей части малого и среднего бизнеса редко бывает нужен специалист выше мидл+. Не всем работать в BigTech, да и не все хотят (наверное), многие не прочь просто получать зарплату как там, а не решать задачи их уровня.
И вот, если мы не будем стремиться именно к мегапроизводительным, мегаэффективным решениям, а просто хотим, чтобы продукт работал, а клиенты были условно довольны (довольны они все равно никогда не будут, по крайней мере все), достаточно ли в таком случае человека, который просто умеет составлять промпты, планировать, разбивать задачи на подзадачи и способен взаимодействовать с остальными участниками рабочего процесса? Лично мне кажется — да, но я хотел бы услышать и другие мнения, собственно поэтому сюда и пишу.