Dmatryusофрения
40 subscribers
290 photos
10 videos
15 files
148 links
Пишу о книгах, лидерстве, технологиях, opensource, своих проектах и наверное чем-то ещё. Ну и репосты IT приколямб.
Download Telegram
Что-то я уже подзабыл КАК ЖЕ ДОЛГО СОБИРАЮТСЯ БИЛДЫ в компилируемых языках (балуюсь с Rust 📱)
Please open Telegram to view this post
VIEW IN TELEGRAM
Кажется началось...
Forwarded from Sberloga (🇻 🇱 🇦 🇩)
История о том, как «вайбкодинг» окончательно победил здравый смысл.
Вчера проводили экспертный созвон. Собрались DS’ы, чтобы помочь молодому фаундеру. Парень пилит стартап: поиск багов и проблем на сайтах с помощью LLM. Благое дело.
Начало стандартное: парень открывает презентацию и начинает яростно «продавать» нам инвесторский питч. Мы его мягко тормозим: «Друг, мы тут DS-инженеры, продавать не надо. Расскажи техническую суть, где затык?»
Он объясняет: «Ну, я закидываю в LLM разные факты, а она мне подсвечивает какую-то незначительную дичь вместо реальных проблем».
Окей, классика. Просим показать пример: что уходит на вход и что получается на выходе. И тут начался чистый киберпанк.
Вместо того чтобы открыть логи или скопировать готовый пример, парень открывает Cursor AI и просит нейросеть… найти этот пример в коде. Говорит: «Так быстрее, чем я сам искать буду».
Ладно, глубокий вдох. Спрашиваем: «А почему просто не посмотреть логи в БД?»
Ответ: «Ну, в интерфейсе это можно глянуть, но он сейчас почему-то упал. А в DataGrip открывать… там очень сложная структура, я не разберусь».
Пока он это говорил, Cursor закономерно ушел в астрал. Нейросеть не понимает, где лежат нужные ключи, потому что в проекте вообще нет никакой структуры. Что делает наш фаундер? Он просто копирует приватный ключ, пачку паролей прямо в окно чата Курсора и отправляет. Тут даже сама модель офигела и выдала системное предупреждение в духе: «Чувак, у тебя всё нормально? Ты мне только что все доступы и секреты слил».
Мы у экрана тихо сползаем под стол. Но ладно, магия вайбкодинга активировалась, Cursor начал пыхтеть. Проект не просто большой — он огромный, запутанный, без единой строчки документации и DDL-схем таблиц. Нейросеть 15 минут генерировала около 20 SQL-запросов, металась по углам, искала этот несчастный пример… и не смогла.
Итог первой части марлезонского балета: мы 15 минут сидели и смотрели, как ИИ пытается раскопать артефакты другого ИИ, чтобы просто увидеть ОДИН пример плохой работы (ради чего созвон и собирался). Не увидели.
Окей, заходим с другой стороны. Пытаемся понять логику: «Ладно, бог с ними, с логами. Ты сам-то понимаешь, как модель должна искать проблемы? Какой промт? Что в контекст передаешь?»
Показывает промт. Это гигантская простыня текста в стиле «делай хорошо, плохо не делай».
Спрашиваем: «А в самом запросе данные какие?»
Ответ: «У меня идея — передавать туда ВООБЩЕ ВСЕ СЫРЫЕ ДАННЫЕ, пусть LLM сама разбирается».
Мы: «А ты сам эти сырые данные видел? Сам сможешь в них разобраться?»
Фаундер, на полном серьезе: «Ну так LLM же сама всё может!»
В этот момент где-то в мире заплакал один Илья Суцкевер. Слушать это было физически больно.
Естественно, парня мы без помощи не оставили и насыпали нормальной инженерной базы:
- Переписать промт, урезать воду и сделать жесткий Few-Shot / One-Shot с четкими примерами «как надо» и «как не надо».
- Собрать наконец Golden Dataset для нормальной оценки ответов.
- Прикрутить Langfuse, чтобы видеть трейсы и понимать, куда улетают токены.
- Хватит пихать терабайты сырого мусора в контекст. Даже если данные структурированы, сделайте сначала первичный код-анализ, найдите паттерны, напишите эвристики и шлите в LLM подсказки о сработках, а не весь дамп базы.
Но судя по тому, что проект полностью написан нейронкой без контроля человека, а любое действие приводит к 15-минутному ступору Курсора — через месяц активных правок эта конструкция окончательно схлопнется под собственным весом.
Кстати, тут стартаперы уже вовсю выкатывают вакансии (как на картинке). Ищут крепких синьоров, чтобы отрефакторить то, что они там «навайбкодили». Чувствую, это будет главный тренд в найме на ближайшие пару лет.
😁3
Forwarded from Борис опять
Я очень много пишу код с помощью Claude Code. Точнее сказать, что иначе я уже не пишу код вообще. При этом это произошло как-то само собой и я не уверен, что это хорошо.

С одной стороны проект растет непомерными темпами. С другой стороны у меня постоянно ощущение, что я одной клод сессией правлю баги созданные другой клод сессией. Часто это такие баги, которые я бы сам никогда (по моему мнению) не допустил.

Я запустил клод проанализировать историю переписок и классифицировать все сессии по категориям.

Похоже, что я правда 80%+ времени правлю баги или ищу их.

При этом может быть два объяснения:
1. Клод пишет плохой код и эти баги — дополнительный эффект вайбкода.
2. Написание любого кода создает баги, код теперь пишется гораздо быстрее, поэтому я встречаю больше багов в единицу времени. Если бы писал этот код сам, то видел бы примерно столько же багов, но не в такой концентрации.

В любом случае можно сделать вывод, что вайбкодинг это скам: каждый сожженый на создание чего-то токен ведет к сжиганию ещё двух-трех, чтобы это нормально работало.
💯3
Вот лупы,
Что строят агентские лупы,
Что строят другие агентские лупы,
Что делают код, обойдемся без глупой
Рифмы в доме, что строит допустим Джек
Полезное
Forwarded from Python/ django
🖥 Git bisect - для поиска багов

Когда баг появился где-то между сотнями коммитов, не нужно проверять историю вручную.

Запускаем:


git bisect start
git bisect bad
git bisect good <старый_рабочий_коммит>


Git будет делить историю пополам и просить отметить каждый найденный коммит:


git bisect good
git bisect bad


Через несколько шагов он покажет коммит, в котором появился баг.

Можно автоматизировать:


git bisect run pytest


Тогда Git сам прогонит тесты и найдёт виновника.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Про «породы котов»: почему классификация не работает (1/3)

Читал «Herding Cats» Рейнуотера — книга про менеджмент программистов, само название отсылает к безнадёжности затеи пасти кошек. Там есть классификация «пород»: архитектор, лихач, волшебник, минималист, разгильдяй и ещё десяток. Штука цепляющая, но как инструмент нерабочая.

Разберу в трёх частях: почему не работает, что я собрал вместо, и что при этом отвалилось.

Итак, три дефекта.

Категории не взаимоисключающие. Черты всех пород находятся в одном человеке в разной пропорции. Классификация, под которую попадает каждый, не предсказывает ничего.

Нет процедуры измерения. Как отличить «художника» от «учёного», кроме вкуса наблюдателя, — не сказано.

Описание перемешано с оценкой. «Разгильдяй» — это не наблюдение, а раздражение, оформленное как термин. Такой ярлык говорит больше о процессе, чем о человеке: если я устойчиво вижу в человеке разгильдяя, это данные о том, что моя система не даёт ему сигнала о качестве.

По сути дефект один: наблюдения у Рейнуотера дименсиональные, а оформление категориальное. Психометрика этот переход прошла давно — от четырёх темпераментов и MBTI к чертам, где нет «экстраверта», есть степень выраженности.

Практическая разница не косметическая. С типами комплементарность команды — это подбор пар людей по интуиции. Со шкалами — арифметика профиля: смотришь не «кого с кем поставить», а какие шкалы в сумме провалены. А ещё можно оценивать от наблюдаемых фактов, а не ощущений.

Дальше — что получилось вместо пород.

#post #techlead
2
1992: С++ is gay
1997: Perl is gay
2002: PHP is gay
2007: Java is gay
2012: Java is still gay
2017: ok, Java is still gay, but python is the gayest
2022: ML is gay
2024: AI is gay
2026: HR is gay
*не является пропагандой нетрадиционных ценностей, хотя тут уже по-аглицки все и так читать разучились айти блять
Про «породы котов»: что вместо них (2/3)

В первой части — почему классификация пород не работает. Теперь что я собрал взамен.

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

Это принципиально. Сильный и слабый специалист могут иметь одинаковый профиль, а два сеньора одного грейда — противоположный. Джун, начинающий с абстракций, и сеньор, начинающий с данных, отличаются не паттерном, а тем, чем паттерн подпёрт. Поэтому к каждой оси прилагается вопрос-различитель. Например, для «скорость добротность»: он остановился, потому что решил, что хватит, или потому что не видит дефекта? Первое — паттерн, второе — квалификация. Это разные разговоры с человеком.

Лестница градаций. От −3 до +3, одна для всех осей. Знак — направление, величина — уровень доказательства, которого человек требует, чтобы уйти со своего полюса:

±1 — признак того, что противоположный полюс уместен (сигнал)
±2 — оценка, что свой полюс проигрывает (расчёт)
±3 — свой полюс уже не сработал (факт)

Каждая ось определяет только одно: что на ней значит «свой полюс проигрывает».

Четыре оси:

Конкретика абстракция. На каком уровне человек держит задачу: открывает данные и код или начинает со схемы и постановки.

Эксплуатация исследование. Тяготение к освоенному против незнакомого. Территория — подход, инструмент или предметная область. По сути exploration/exploitation как в RL: распределение ограниченного ресурса между использованием известного и проверкой неизвестного.

Скорость добротность. Личный порог «достаточно хорошо» для того, что сдаёшь.

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

Плюс к каждой оси — что наблюдать в двух контекстах (разработка и DS), риски обоих полюсов и ориентир по типичному значению для роли.

В третьей части — восемь кандидатов было, четыре осталось. Почему отвалились остальные, и какие правила из этого вышли.

#post #techlead
2
Ну я
😁4
Про «породы котов»: чего в модели нет (3/3)

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

Ось живёт только там, где норма оставляет свободу. DoD задаёт две вещи: как делать — планка качества, стиль, объём проверки; что сдать — предмет результата. В первом отклонение это предпочтение, то есть черта. Во втором — несделанная задача, то есть дисфункция с причиной. На этом отвалился кандидат «артефакт понимание»: считать результатом работающую вещь или объяснённое явление — вопрос постановки, а не человека.

Ось не должна быть производной от других. Признак: один эпизод засчитывается дважды и в профиле выглядит как два независимых сигнала. Так ушёл «аппетит к риску» — это чтение комбинации других осей, а не самостоятельная величина. Симптом, по которому это ловится: ось расползается в соседние при каждой переформулировке.

Ось мерит процесс, а не его осадок. T-shape — глубина в одном плюс поверхностное владение соседним — складывается из сотни решений «идти ли в незнакомое» за годы. Это результат, а не механизм; целиком свернулся в ось «эксплуатация исследование».

У оси должно быть два настоящих полюса. «Пишет текст до кода» полюса не имеет: не думать нельзя, поэтому минус пришлось бы определять через отсутствие текста, а отсутствие — нуль, а не полюс.

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

#post #techlead
2
Тёть, opencv это не "открыть резюме"
😁2💯2
😁3😢2💯2
Please open Telegram to view this post
VIEW IN TELEGRAM
Языковые модели в 2025-2026 бегло пишут по-русски, но с характерным акцентом. Канцелярит вместо глаголов («осуществление внедрения» вместо «внедрили»), кальки английского синтаксиса («стоит отметить, что»), ровная плотность текста без живых частиц «же/ведь/вот». У свежих моделей добавился новый слой: рубленые псевдофилософские фразы, эмодзи как декор, псевдотерапевтический тон.

Дело не в детекторах. GPTZero и подобные обучены на английском и на русском массово ошибаются в обе стороны: живой текст человека помечают как AI, а гладкий AI-текст пропускают. Даже лучшая специализированная модель (RuRoBERTa, AINL-Eval 2025) даёт около 86% точности. Гоняться за обходом детектора на русском бессмысленно: точка отсчёта постоянно едет. Дело в том, что текст реально звучит чужим: теряется голос, ритм, конкретика.

Английские humanizer'ы эту задачу для русского не решают: маркеры другие, физика языка другая.

Скилл для Claude humanizer-ru как раз про это: 54 паттерна AI-текста в 12 категориях, 20 конструкций под жёстким запретом, четырёхпроходный аудит и калибровка под голос автора по образцам вашего письма.

Ставится плагином в Claude Code/Cowork, через skills.sh или вручную в Claude.ai. Работает и с Codex, Cursor, Gemini CLI.

Репо: github.com/ilyautov/humanizer-ru

#opensource
👍3