Сообщество - Лига программистов

Лига программистов

1 728 постов 11 639 подписчиков

Популярные теги в сообществе:

Как я искал идеального AI-помощника для работы с кодом

Привет, Пикабу! Меня зовут Глеб, разработчик ПО с пятилетним опытом. В последнее время активно использую ИИ-инструменты в работе. Сегодня хочу поделиться своим опытом и, возможно, немного поворчать.

Начну с того, что ИИ-помощники вроде Chat GPT и Claude AI серьёзно изменили мой рабочий процесс. Они здорово выручают, когда нужно быстро набросать простую функцию или разобраться с неизвестным API. Но, чем больше я их использовал, тем чаще сталкивался с ограничениями, которые начали раздражать.

Представьте, вы работаете над большим проектом с сотнями файлов кода и сложной архитектурой. Нужно разобраться, почему метод `processUserData()` в классе `UserManager` вдруг начал возвращать `null` вместо объекта пользователя. Вы обращаетесь к Chat GPT, описываете проблему и... получаете в ответ: "Извините, но без доступа к полному коду вашего проекта я не могу точно определить причину проблемы."

Ага, спасибо большое. Очень полезно.

Или другая ситуация: вы пытаетесь оптимизировать сложный алгоритм, который распределен по нескольким классам. Вы кидаете код в Claude AI, а оно вам: "Я вижу только часть реализации. Для полного анализа мне нужно больше контекста."

И вот вы сидите и думаете: "Ну да, нужен контекст. А как его подать? Все файлы копипастить?"

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

Ограничения существующих решений

Не поймите меня неправильно, Chat GPT и Claude AI - отличные помощники для многих задач. Но когда дело доходит до работы с реальными проектами, их ограничения становятся очевидными.

1. Узкое контекстное окно.

Эти модели могут обработать только небольшой объем текста за раз. Для больших проектов это просто не работает и я быстро упираюсь в лимит.

2. Отсутствие понимания структуры.

Без доступа ко всей кодовой базе Chat GPT и Claude AI не могут учесть взаимосвязи между различными частями проекта.

3. Неточные ответы.

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

Я пытался обойти эти ограничения разными способами. Например, копировал весь код проекта в запрос, либо руками по частям, либо с помощью инструмента codebase_contex, который собирает весь код проекта в одном текстовом файле. Но и тут возникали проблемы:

  • терялась структура проекта;

  • большие проекты не влезали в контекстное окно.

В поисках идеального решения

После всех этих экспериментов я понял, что нужен инструмент, который может:

1. Анализировать весь проект целиком, а не отдельные куски кода.

2. Понимать структуру и взаимосвязи в проекте.

3. Давать точные ответы на конкретные вопросы о коде.

Поэтому я решил создать свой инструмент, который решил бы все мои задачи - встречайте, Documate! Он не просто анализирует отдельные файлы, а понимает весь проект в целом.

Сравнение нейросетей

Давайте сравним, как различные AI-помощники справляются с задачами, связанными с анализом кода в контексте большого проекта.

  • Chat GPT и подобные модели
    Плюсы: Отлично справляются с общими вопросами о программировании, могут помочь с простыми задачами и объяснением концепций.
    Минусы: Без контекста кодовой базы часто отвечают, что не знают правильный ответ или не могут предоставить точную информацию. Это особенно заметно при работе со специфичными для проекта вопросами.

  • Популярная LLM + весь код репозитория
    Плюсы: Частично решают проблему нехватки знаний о коде путем копирования всей кодовой базы в запрос.
    Минусы: Весь код репозитория может не влезть в контекстное окно языковой модели. Также теряются важные детали о структуре проекта и взаимосвязи между компонентами.

  • Documate
    Плюсы: Создан для работы с полными кодовыми базами. Понимает структуру проекта, взаимосвязи между компонентами и дает точные ответы на конкретные вопросы о коде.
    Минусы: Реализован в виде бота в Телеграм, что может быть неудобно для ряда сценариев.

Давайте сравним на паре примеров Documate и Mistral NeMo, которая видела весь контекст проекта.

Пример 1: Вопрос о специфическом методе в проекте.

Как я искал идеального AI-помощника для работы с кодом Программирование, Чат-бот, ChatGPT, Искусственный интеллект, Telegram (ссылка), Длиннопост

Ответ Documate

Как я искал идеального AI-помощника для работы с кодом Программирование, Чат-бот, ChatGPT, Искусственный интеллект, Telegram (ссылка), Длиннопост

Ответ Mistral NeMo

Пример 2: Анализ взаимодействия между компонентами.

Как я искал идеального AI-помощника для работы с кодом Программирование, Чат-бот, ChatGPT, Искусственный интеллект, Telegram (ссылка), Длиннопост

Ответ Documate

Как я искал идеального AI-помощника для работы с кодом Программирование, Чат-бот, ChatGPT, Искусственный интеллект, Telegram (ссылка), Длиннопост

Ответ Mistral NeMo

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

Заключение

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

Показать полностью 4

Как стать программистом

Наткнулся на канал в телеге. Слежу за развитием сюжета. https://t.me/kak_cmamb_nporpawwucmow

Часть 1.

Перед тем как начинать становиться программистом нужно убедиться в двух вещах:

1. Ты этого хочешь.

2. Ты это можешь.

С первым просто, ты наверное слышал, что платят много и делать ничего не нужно. Это твои мечты, ок. Теперь нужно понять, а сможешь ли? Вопрос кажется простым, но на самом деле сложный и с подвохом. Это как хотеть пробежать марафон. Твоё желание победы похвально, но вот проблема...у тебя нет ножек. Как понять есть ли у тебя "ножки", чтобы пробежать этот путь?

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

1. Просыпайся в 6:00.

2. Ложись спать в 22:00.

3. Делай зарядку с 6:30 до 7:30, 3х10 приседания, отжимания, пресс, кардио.

4. Сделай уборку в квартире.

Можешь от себя добавить чего-то, что тебе очень не нравиться делать.

Сделаешь это 30 дней подряд и считай, что ножки у тебя есть.

Встретимся через месяц.

п.с. Читы не сработают, обманешь не меня, а себя. Отвалишься через месяц рыдая и плача как тебе тяжело сладкому пирожочку.

Про проблемы с выбором тем для изучения любой IT-профессии

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

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

Это было для меня достаточно интересно, поэтому я решил написать пост с моими комментариями и мнением на этот счет, ибо есть что сказать. Ну и тема достаточно важная, и аффектит как менти, так и менторов.

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

1️⃣ Огромное количество информации

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

"А что мне нужно изучить, чтобы попытаться войти?"

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

Главное тут понять, что вам нужно попасть в боевой проект, начать работать, получать реальный опыт - а вся, условно, "лишняя" теория, которую вы могли бы изучать бесконечно, с этим не сильно помогает. Важны лишь 6-7 конкретных скиллов, про которые всегда спрашивают на собесах (тут именно речь про СА). И список этих тем почти не изменился с тех пор, как я писал о них в последний раз, можно до сих пор на них ориентироваться (см. закрепленные посты в тг или тут в серии постов).

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

2️⃣ Внутренний самозванец или неуверенность

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

➖Недостаточная уверенность в своих силах;

➖Мысль, что он недостаточно хорошо выучил все темы и ему еще рано выходить на рынок - кстати, это плохая мысль.

Тут есть два тезиса: во-первых, прохождение собеседований это скилл, который невозможно заработать иначе, чем проходить собеседования; во-вторых, нет смысла "заучивать" темы - когда ты машинально отвечаешь на вопросы заученным текстом, это очень хорошо видно и появляется сильное желание копнуть внутрь. И тут обычно стоит только чуть-чуть вопрос по-другому сформулировать - соискатель часто сыпется. Поэтому тут самое важное это именно понять тему и понять то, что вы должны уметь рассказать своими словами ее и размышлять, даже если что-то не помните. Поэтому "зубрить" - не нужно, инфа 146%.

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

P.S. Понятно, что у разработчиков другое количество тем для обучение, нужна, как правило, более обширная база - но в любом случае ее можно (и я считаю, что нужно) ужать до определенного количества.

P.P.S. Если есть вопросы - пишите мне сюда. Большое количество информации есть в закрепах.

Показать полностью

Программисту легко оторваться от реальности

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

Т.е. инициатива шла от клиента, ему нужно раскидывать свои объекты по площадкам. Каким-то образом он находил мой сайт недвижимости, затем находил адрес электронной почты и писал мне вопрос. Я отвечал на вопрос: объяснял, что и как делать. Клиент отправлял мне свой XML, я добавлял его в систему для парсинга.

Меня совсем не напрягал такой процесс, я привык к нему и всегда так делал.

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

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

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

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

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

А тут элементарная страница с текстом, которую я составил за полчаса и готово! Налажен целый бизнес-процесс.

Вывод

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

Показать полностью

ЗАДАЧА-ТЕСТ ПО SQL

Всем привет!

Как насчет небольшой задачи по SQL с нашего Телеграм-канала? По сложности назначаю 1 звёздочку из пяти! Проверьте себя, ничего не забыли из основы основ? И внимательно читаем условие задачи, ато обидно будет ответить не правильно на достаточно простой задаче 😉

Таблица PERS определена следующим образом:

(ID NUMBER NOT NULL PRIMARY KEY,

NAME VARCHAR(100) NOT NULL)

Запрос

SELECT COUNT(*) FROM PERS WHERE NAME = 'Иванов Иван Иванович'

возвращает число 2.

Сколько строк вернёт следующий запрос?

SELECT DISTINCT ID, NAME FROM PERS WHERE NAME = 'Иванов Иван Иванович'

ЗАДАЧА-ТЕСТ ПО SQL IT, Собеседование, Программирование, SQL, Oracle, Mysql, База данных, Telegram (ссылка)
Показать полностью 1

Фантазии о будущих программистах

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

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

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

А какие условия работы в вашей компании? И о чем вы мечтаете для будущего IT?

Про текущую ситуацию на рынке IT для SA

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

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

Отдельный лайк рекрутерам\HR (не всем) и их скорости реакции. Мне написали спустя 53 минуты с момента обновления резюме, но и количество реакций в целом за первые 2-3 часа было большим - люди правда стараются найти хоть кого-нибудь к себе на проекты. А вот факапы с рекрутерами заслуживают отдельного поста))

Это было лирическое отступление. Теперь мои выводы:

1️⃣ Рынок живее всех живых.

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

2️⃣ Рынок все также принадлежит соискателю и он диктует свои условия.

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

3️⃣ Когда ты выбираешься за рамки сеньора и внутри компании тебе некуда расти - ты грустишь.

Потому что прям ОЧЕНЬ интересных предложений на рынке мало и ты такой их перебираешь: ага, ну опять сеньор на финтех, скука; и вот тут предлагают сеньора на финтех - эх, тоже скука; может хоть тут? А нет, вообще какая-то ерунда типа gambling, хоть и с очень большими деньгами. Но об этом чуть позже, тут мне есть что рассказать;

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

5️⃣ Для рядовых позиций тоже не очень изменилась ситуация.

Однако, (субъективно, исходя из наблюдений за своими менти), мне показалось что количество конкурентов среди людей без опыта стало меньше. То ли поток обучающихся на массовых курсах стал меньше, то ли количество компаний ищущих себе джунов стало больше, то ли мне просто так показалось - но вот делюсь.

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

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

P.S. Спасибо большое тем людям, которые тыкали в меня палочкой (не знаю, что за функционал на Пикабу, но мне приходили уведомления, что от меня жду постов оО).

Если есть вопросы - где меня найти, вы знаете.

Показать полностью

Каждый год зимой происходят странности

Например, что-то пропадает. У одних важные вещи, у других новогоднее настроение. В этот раз — потерялись помощники Деда Мороза. Но есть хорошая новость: вы можете их найти! Вернее, помочь им найтись…

Как сохранить изображения из Яндекс-Архива?

Нет, это не тот архив, о котором вы подумали: в Яндексе есть поиск по отсканированным архивным документам из нескольких регионов РФ.

Вот пример, в котором показана страница из метрической книги.

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

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

Есть идеи?

Отличная работа, все прочитано!