Натрапив на цікаву дискусію на Reddit. Досвідчений розробник пише про майбутнє професії, і його аргумент мене зачепив:
Люди йшли з ферм на заводи, з заводів в офіси. Кожен перехід працював, бо була "наступна сходинка" — щось, що машини ще не вміли. Зараз ми автоматизуємо саму розумову працю. А що, якщо наступної сходинки просто немає?
Його прогноз жорсткий: піраміда команд (багато джунів → мало сеньйорів → один архітектор) не перевернеться — вона схлопнеться. Бо якщо AI замінює 100 рук, тобі не потрібно 20 архітекторів. Потрібен один. Або нуль.
Контраргумент теж є: AI — інструмент, а не заміна. Вмирають "code monkeys", а не інженери, які розуміють продукт і бізнес. Справжня цінність — знати що будувати, а не тільки як.
Мені ближча друга позиція. Але я розумію, що це може бути моя упередженість — я вже 20+ років в індустрії і мені є куди рухатись "вгору по стеку".
А от що робити тим, хто тільки починає?
Please open Telegram to view this post
VIEW IN TELEGRAM
Цікаво, що думаєте ви:
📊 Як AI вплине на кількість розробників через 5 років?
📊 Як AI вплине на кількість розробників через 5 років?
Anonymous Poll
29%
🔴 Буде набагато менше — автоматизація з'їсть більшість позицій
45%
🟡 Приблизно так само — одні ролі зникнуть, інші з'являться
8%
🟢 Буде більше — AI зніме бар'єри входу і створить нові можливості
18%
⚪ Не знаю / хочу подивитись результати
0%
⚪ Ваша особиста думка (в коментарях)
❤1
Кілька тижнів тому в Windsurf з'явилась фіча Skills. Cursor теж щось подібне додав. Claude Code має це вже давно.
Я вирішив спробувати по-справжньому — створив цілу екосистему з 7 skills для SEO/GEO оптимізації Git AutoReview (це мій пет проект, спробуйте https://marketplace.visualstudio.com/items?itemName=vitalii4reva.git-autoreview).
І ось що виніс.
Що таке Skill?
Це папка з файлом SKILL.md + допоміжні матеріали:
seo-skill/
├── SKILL.md # Точка входу
├── references/ # Глибокі знання
│ ├── keywords.md
│ └── templates.md
└── assets/ # Шаблони, приклади
По суті — персистентний контекст, який AI підвантажує коли потрібно.
Що працює добре:
AI перестає забувати. Не треба кожну сесію пояснювати структуру проєкту, конвенції, терміни.
Консистентність. Коли є skill з keyword clusters і messaging — AI генерує контент в одному стилі.
Композиція. Можна комбінувати skills:
@seo-2026 @nextjs-seo @git-autoreview-geo-seo
Створи /pricing сторінку
AI отримує загальні SEO знання + Next.js специфіку + продуктовий messaging.
Що я зрозумів на практиці:
SKILL.md має бути коротким. Максимум 150 рядків. Все деталі — в references/. Інакше AI не може ефективно обробити.
Workflows — нумеровані кроки. Не абзаци тексту, а конкретні дії:
### Створення Landing Page
1. Завантаж references/semantic-core.md
2. Візьми H1-H6 з keyword clusters
3. Додай FAQ schema
4. Перевір Core Web Vitals
**Post-action workflows — критично.** Я забув про це і нові сторінки не індексувались. Бо не оновив sitemap.xml і llms.txt. Тепер в кожному skill є секція "Що робити ПІСЛЯ".
**Skills еволюціонують.** Створення → активне використання → завершення → архів. Я позначаю виконані як `~~ARCHIVED~~`.
**Моя структура (7 skills):**
@seo-2026 — загальні SEO практики
@nextjs-seo-2026 — Next.js App Router специфіка
@geo-semantic-core — keyword clusters, топіки
@comparison-content — сторінки "vs competitors"
@competitor-research — ресерч через Perplexity
@programmatic-seo — масштабована генерація
@git-autoreview-geo-seo — продукт-специфічний
Вони працюють разом. Ресерч → Контент → Імплементація → Верифікація.
Типові помилки:
❌ Запхати все в один SKILL.md на 500 рядків
❌ Розмиті інструкції типу "створи хорошу сторінку"
❌ Забути про post-action (оновлення sitemap, навігації)
❌ Не вказувати коли який reference файл вантажити
Головний інсайт:
Skills — це структуроване знання, яке ти б і так передавав AI, просто тепер воно:
Зберігається між сесіями
Версіонується в git
Шариться з командою
Композиться для складних задач
Інвестиція в створення окупається експоненційно — кожна наступна сесія виграє від накопиченого контексту.
Де працює:
Windsurf: ~/.codeium/windsurf/skills/
Claude Code: .claude/skills/
Cursor: .cursor/rules/*.mdc (інший формат, але ідея та ж)
Stay tuned
Please open Telegram to view this post
VIEW IN TELEGRAM
Visualstudio
Git AutoReview - AI Code Review - Visual Studio Marketplace
Extension for Visual Studio Code - AI suggests. You decide. AI code review for GitHub, GitLab & Bitbucket (Cloud, Server, Data Center). Claude, Gemini & GPT agent reviews. Human approval, BYOK privacy, Jira AC verification.
👍2
Всім привіт.
Я тут зарелізив сьогодні свій пет-проект на Продакт Ханті.
Проголосуйте пліз.
Буду дуже вдячний:
https://www.producthunt.com/products/git-autoreview
Я тут зарелізив сьогодні свій пет-проект на Продакт Ханті.
Проголосуйте пліз.
Буду дуже вдячний:
https://www.producthunt.com/products/git-autoreview
Product Hunt
Git AutoReview: AI code review that reads your codebase, not just the diff | Product Hunt
AI-powered code review for VS Code. Deep Review uses Claude Code to explore your entire codebase — reads files, runs linter, checks tests. Switch between review profiles in one click. Works with GitHub, GitLab & Bitbucket. Free: 10 reviews/day, no card. Use…
👌3
Всим доброго недільного ранку.
Там мій друг, Віктор Турський (той що веде канал Жабаскрипт), почав стрім де показує як вайбкодить проект з Claude Code:
https://www.youtube.com/watch?v=BtHQyH6mniQ
Там мій друг, Віктор Турський (той що веде канал Жабаскрипт), почав стрім де показує як вайбкодить проект з Claude Code:
https://www.youtube.com/watch?v=BtHQyH6mniQ
YouTube
Вайб-коджу новий крутий проект
Я хочу створити невеликий проект для гонок й зараз я знаю як це зробити швидко з допомогою ШІ. Підключайтеся до вайб-кодингу.
Станьте спонсором цього каналу: https://www.youtube.com/channel/UChhNJ3SmzX_d7kMpSEMDfzg/join
Допоможіть каналу розвиватися й отримуйте…
Станьте спонсором цього каналу: https://www.youtube.com/channel/UChhNJ3SmzX_d7kMpSEMDfzg/join
Допоможіть каналу розвиватися й отримуйте…
🔥3
Шановне панство.
Не так давно я натрапив на скілл який надає тексти знегенровані LLM людяності.
І декілька днів готував дещо подібне, але вже чисто для української.
Отже... тепер це публічна версія, яка протестована мною останніми тижнями.
Користуйтесь. Відгуки, пропозиції, зауваження - прошу все залишати на github.
Або тут )
https://github.com/vitalii4reva/ukrainianizer
Stay tuned🧠
Не так давно я натрапив на скілл який надає тексти знегенровані LLM людяності.
І декілька днів готував дещо подібне, але вже чисто для української.
Отже... тепер це публічна версія, яка протестована мною останніми тижнями.
Користуйтесь. Відгуки, пропозиції, зауваження - прошу все залишати на github.
Або тут )
https://github.com/vitalii4reva/ukrainianizer
Stay tuned
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - vitalii4reva/ukrainianizer: AI-скілл для Windsurf/Cursor/Claude Code, який перетворює штучний AI-текст на живу українську…
AI-скілл для Windsurf/Cursor/Claude Code, який перетворює штучний AI-текст на живу українську мову - vitalii4reva/ukrainianizer
👍5
Якщо ви ще не спите, то скоро у вас буде можливість прочитати нову статтю )
Лайк, якщо вереом в пʼятницю ви вже НЕ працюєте )
Лайк, якщо вереом в пʼятницю ви вже НЕ працюєте )
👍14
-= Коли твій мозок вже здався, а ти ще ні =-
Сидиш над задачею о 23:00. Думаєш: "Ще трохи — і закінчу". О 00:30 все ще сидиш. Вранці прокидаєшся як після похмілля, але переконуєш себе: "Зате вчора багато зробив".
Знайомо, так?
Так от. Швидше за все, ти зробив менше, ніж міг би за нормальний робочий день. І завтра зробиш ще менше.
Це не мотиваційна порожнеча. Це банальна нейробіологія.
—
Що кажуть дослідження
Fucci з колегами (2018) взяли 45 програмістів. Половина не спала ніч, інша — спала нормально.
І що?
Якість коду впала на 50%
Синтаксичних помилок — на 35% більше
Залученість — на 30% менше
Одна ніч без сну. І ти видаєш вдвічі гірший код. Не "трохи гірший". Вдвічі.
Van Dongen (Sleep Medicine) виявив ефект накопичення:
14 днів із 6 годинами сну = мозок як після 2 ночей без сну
14 днів із 4 годинами = як після 3 ночей
І от що цікаво: люди не розуміли, наскільки погано вони працюють. Їм здавалося, що "адаптувались". А тести показували катастрофу.
FeedBaG++ (MSR 2018) — реальні дані про програмістів:
2 години без перерви — невдач на 10% більше
Найкращі результати — при помірному навантаженні
Чим більше годин, тим гірше працюєш
От так. Більше годин ≠ більше результату.
—
Чому ти не помічаєш, що вже час зупинитись
І ось де пастка. Мозок втрачає здатність оцінювати себе саме тоді, коли він найбільш виснажений. Тобто чим гірше тобі, тим менше ти це розумієш.
Gloria Mark виявила: після переривання потрібно 23 хвилини, щоб повернутись до концентрації. А коли ти втомлений — навіть не помічаєш, що твоя "концентрація" давно імітація.
Ознаки, що ти вже перебрав (і їх легко проігнорувати):
• Перечитуєш той самий код 3-4 рази і все одно не розумієш
• Рішення, які раніше були легкими, тепер вимагають зусиль
• Лаєшся на "дурні" помилки компілятора
• Обираєш найпростіше рішення, бо на правильне немає сил
• Відкладаєш складні речі "на потім"
• Це не "трохи втомився". Це виснаження. І продовжувати = плодити технічний борг.
Математика перепрацювання
Business Roundtable дослідив, що відбувається при 60 годинах на тиждень:
Тиждень 1: о, є приріст!
Тиждень 4: приріст майже зник
Тиждень 8: загальний результат = як би працював 40 годин
Ти витратив на 50% більше часу. Заплатив здоров'ям. І отримав... нуль.
А от що отримав реально:
Більше багів
Технічний борг
Вигорання
Гірші рішення
Вітаю з перемогою.
—
Скільки реально можна кодити?
Anders Ericsson (той, що популяризував "10 000 годин") виявив: експерти — від музикантів до шахістів — можуть тримати глибоку концентрацію максимум 3-4 години на день. Не 8. Не 12. Три-чотири.
А програмісти?
Активний кодинг: 52 хвилини на день (медіана!)
Читання коду та документації: ще 41 хвилина
Решта — мітинги, слак, переключення контексту
Ось тобі й "8-годинний робочий день".
4 години глибокої роботи > 10 годин імітації
"Відіспатись на вихідних" — міф
Sleep Journal (2021) перевірили: якщо ти спав 5-6 годин у будні, вихідні не рятують.
Після 1 ночі нормального сну тобі здається, що відпочив
Реальна продуктивність відновлюється лише на 40%
Щоб повністю прийти до тями — 2-3 ночі нормального сну
Тобто твій понеділок — це все ще робота на батарейці 60%.
—
Що з цим робити
1. Правило 90 хвилин
Мозок працює циклами — 90-120 хвилин, потім йому треба відпочити. Не "перевірити телефон" — а реально встати, пройтись, подивитись у вікно. 15-20 хвилин.
2. Максимум 2-3 глибокі сесії
Плануй 2-3 блоки для складної роботи. Решту — на мітинги, рев'ю, рутину. Не навпаки.
3. Не після 22:00
Синє світло екранів пригнічує мелатонін. Кодинг перед сном = гірший сон = гірша продуктивність завтра. Замкнене коло.
4. 7-8 годин сну — не розкіш
Із 6 годинами через 2 тижні ти працюєш як після 2 безсонних ночей. Це не дискусійне. Це фізіологія.
5. Слухай себе
Ловиш себе на тому, що:
Перечитуєш код і не розумієш
Відкладаєш рішення
Робиш найпростіше, а не найкраще
Зупинись. Зараз. Не завтра. Зараз.
Головне
Свідоме програмування — це не тільки про те, як писати код. Це про те, коли закрити ноут.
Герої, які сидять до 3 ночі "заради проекту"? Не герої. Генератори багів, технічного боргу і власного вигорання.
Сидиш над задачею о 23:00. Думаєш: "Ще трохи — і закінчу". О 00:30 все ще сидиш. Вранці прокидаєшся як після похмілля, але переконуєш себе: "Зате вчора багато зробив".
Знайомо, так?
Так от. Швидше за все, ти зробив менше, ніж міг би за нормальний робочий день. І завтра зробиш ще менше.
Це не мотиваційна порожнеча. Це банальна нейробіологія.
—
Що кажуть дослідження
Fucci з колегами (2018) взяли 45 програмістів. Половина не спала ніч, інша — спала нормально.
І що?
Якість коду впала на 50%
Синтаксичних помилок — на 35% більше
Залученість — на 30% менше
Одна ніч без сну. І ти видаєш вдвічі гірший код. Не "трохи гірший". Вдвічі.
Van Dongen (Sleep Medicine) виявив ефект накопичення:
14 днів із 6 годинами сну = мозок як після 2 ночей без сну
14 днів із 4 годинами = як після 3 ночей
І от що цікаво: люди не розуміли, наскільки погано вони працюють. Їм здавалося, що "адаптувались". А тести показували катастрофу.
FeedBaG++ (MSR 2018) — реальні дані про програмістів:
2 години без перерви — невдач на 10% більше
Найкращі результати — при помірному навантаженні
Чим більше годин, тим гірше працюєш
От так. Більше годин ≠ більше результату.
—
Чому ти не помічаєш, що вже час зупинитись
І ось де пастка. Мозок втрачає здатність оцінювати себе саме тоді, коли він найбільш виснажений. Тобто чим гірше тобі, тим менше ти це розумієш.
Gloria Mark виявила: після переривання потрібно 23 хвилини, щоб повернутись до концентрації. А коли ти втомлений — навіть не помічаєш, що твоя "концентрація" давно імітація.
Ознаки, що ти вже перебрав (і їх легко проігнорувати):
• Перечитуєш той самий код 3-4 рази і все одно не розумієш
• Рішення, які раніше були легкими, тепер вимагають зусиль
• Лаєшся на "дурні" помилки компілятора
• Обираєш найпростіше рішення, бо на правильне немає сил
• Відкладаєш складні речі "на потім"
• Це не "трохи втомився". Це виснаження. І продовжувати = плодити технічний борг.
Математика перепрацювання
Business Roundtable дослідив, що відбувається при 60 годинах на тиждень:
Тиждень 1: о, є приріст!
Тиждень 4: приріст майже зник
Тиждень 8: загальний результат = як би працював 40 годин
Ти витратив на 50% більше часу. Заплатив здоров'ям. І отримав... нуль.
А от що отримав реально:
Більше багів
Технічний борг
Вигорання
Гірші рішення
Вітаю з перемогою.
—
Скільки реально можна кодити?
Anders Ericsson (той, що популяризував "10 000 годин") виявив: експерти — від музикантів до шахістів — можуть тримати глибоку концентрацію максимум 3-4 години на день. Не 8. Не 12. Три-чотири.
А програмісти?
Активний кодинг: 52 хвилини на день (медіана!)
Читання коду та документації: ще 41 хвилина
Решта — мітинги, слак, переключення контексту
Ось тобі й "8-годинний робочий день".
4 години глибокої роботи > 10 годин імітації
"Відіспатись на вихідних" — міф
Sleep Journal (2021) перевірили: якщо ти спав 5-6 годин у будні, вихідні не рятують.
Після 1 ночі нормального сну тобі здається, що відпочив
Реальна продуктивність відновлюється лише на 40%
Щоб повністю прийти до тями — 2-3 ночі нормального сну
Тобто твій понеділок — це все ще робота на батарейці 60%.
—
Що з цим робити
1. Правило 90 хвилин
Мозок працює циклами — 90-120 хвилин, потім йому треба відпочити. Не "перевірити телефон" — а реально встати, пройтись, подивитись у вікно. 15-20 хвилин.
2. Максимум 2-3 глибокі сесії
Плануй 2-3 блоки для складної роботи. Решту — на мітинги, рев'ю, рутину. Не навпаки.
3. Не після 22:00
Синє світло екранів пригнічує мелатонін. Кодинг перед сном = гірший сон = гірша продуктивність завтра. Замкнене коло.
4. 7-8 годин сну — не розкіш
Із 6 годинами через 2 тижні ти працюєш як після 2 безсонних ночей. Це не дискусійне. Це фізіологія.
5. Слухай себе
Ловиш себе на тому, що:
Перечитуєш код і не розумієш
Відкладаєш рішення
Робиш найпростіше, а не найкраще
Зупинись. Зараз. Не завтра. Зараз.
Головне
Свідоме програмування — це не тільки про те, як писати код. Це про те, коли закрити ноут.
Герої, які сидять до 3 ночі "заради проекту"? Не герої. Генератори багів, технічного боргу і власного вигорання.
👍12❤4
Найпродуктивніше, що ти можеш зробити о 23:00 — закрити ноутбук і піти спати.
Серйозно. Твоя завтрашня версія буде вдячна.
Посилання на дослідження:
Fucci et al. (2018) — IEEE: Sleep deprivation and code quality
Van Dongen et al. — Journal of Clinical Sleep Medicine: Cumulative sleep restriction
Business Roundtable — Scheduled Overtime Effect on Construction Projects
Anders Ericsson — Expert Performance Research
Gloria Mark — UC Irvine: Interruption and recovery time
А у вас як? Є історії про "ще трохи посиджу"?
Stay tuned🧠
Серйозно. Твоя завтрашня версія буде вдячна.
Посилання на дослідження:
Fucci et al. (2018) — IEEE: Sleep deprivation and code quality
Van Dongen et al. — Journal of Clinical Sleep Medicine: Cumulative sleep restriction
Business Roundtable — Scheduled Overtime Effect on Construction Projects
Anders Ericsson — Expert Performance Research
Gloria Mark — UC Irvine: Interruption and recovery time
А у вас як? Є історії про "ще трохи посиджу"?
Stay tuned
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1
Це просто БІМБА!
Нарешті, такі техно гіки як я можу отримати собі справжній PDA. І навіть повноцінний купуктер в кишені!
Так, сучасні сматрахвони це трошки не те...
Бо я застав ті славні часи, коли в мене був Nokia N800 зі справжнім Debian Linux.
Коли можна було зайти на свій побудований HA кластер і подивитись чого впав sendmail з любого місця. І не таскать ноут ))
Я вже мовчу, що можна пописати на Rust щось цікавого... та і для фронту можна знайти цікаві застосування...
Хтось ще памятає часи КПК на Symbian та WIndows CE?
Чи я один тут з ким не страшно ходити в ожеледицю ? ))
https://mecha.so/comet
Нарешті, такі техно гіки як я можу отримати собі справжній PDA. І навіть повноцінний купуктер в кишені!
Так, сучасні сматрахвони це трошки не те...
Бо я застав ті славні часи, коли в мене був Nokia N800 зі справжнім Debian Linux.
Коли можна було зайти на свій побудований HA кластер і подивитись чого впав sendmail з любого місця. І не таскать ноут ))
Я вже мовчу, що можна пописати на Rust щось цікавого... та і для фронту можна знайти цікаві застосування...
Хтось ще памятає часи КПК на Symbian та WIndows CE?
Чи я один тут з ким не страшно ходити в ожеледицю ? ))
https://mecha.so/comet
👍4
Скоро буде дуже довгий пост.
Намагався тему розжувать якомога краще.
І дуже потрібен ващ фідбек.
Чи цікаво таке... чи не дуже...
І як взагалі тему роскрив.
Черканіть там щось в коментах, або лайк/дизлайк.
#не_проходьте_мимо
Намагався тему розжувать якомога краще.
І дуже потрібен ващ фідбек.
Чи цікаво таке... чи не дуже...
І як взагалі тему роскрив.
Черканіть там щось в коментах, або лайк/дизлайк.
#не_проходьте_мимо
👍3
Баг, що зникає коли на нього дивишся (1/3)
Уяви: ловиш баг. Він є. Ставиш breakpoint — зник. Прибираєш — повернувся. Додаєш
Ні, ти не збожеволів. Ти просто зустрів Heisenbug.
І це не просто курйоз. Це вікно у дивну правду: немає об'єктивного стану програми. Є тільки стан відносно того, як ти дивишся.
———
Як народився термін
UC Berkeley, 1960-ті. Bruce Lindsay і Jim Gray, два комп'ютерні вчені, б'ються з багом в операційці CAL-TSS (одна з перших time-sharing систем — коли багато користувачів працюють на одному комп'ютері одночасно). Баг є. Потім зникає. Потім повертається. Класика.
Lindsay колись вчив фізику. І в якийсь момент до нього дійшло: та це ж observer effect! Коли вимірюєш систему — ти її змінюєш.
Так народився "Heisenbug" — каламбур на імені фізика Гайзенберга.
(До речі, технічно це не принцип невизначеності Гайзенберга, а ефект спостерігача — різні речі. Але назва прилипла, і вже пізно щось міняти.)
———
А тепер цифри
1985 рік. Jim Gray аналізує логи помилок на кількох десятках систем.
Результат: 131 зі 132 багів — Heisenbugs.
Один. Один нормальний, передбачуваний баг на 132. Решта — примари.
Пізніше дослідники з Illinois вивчили 105 concurrency багів у MySQL, Apache, Mozilla та OpenOffice:
———
Чому debugger все ламає
Breakpoint — це не пауза. Це втручання.
Уяви: твоя програма виконує мільйони операцій на секунду. Ти ставиш breakpoint — і що відбувається?
Програма зупиняється. Debugger каже: "Гей, я тут, чекаю команди". Ти дивишся на змінні. Натискаєш "продовжити". Програма біжить далі.
Здається, ти просто "поставив на паузу". Але насправді ця "пауза" — сотні додаткових операцій процесора. Для багу, який живе в циклі що крутиться мільйони разів на секунду, ця затримка — як вставити годинну перерву між кожним кроком.
Баг залежав від точного timing'у? Ти його щойно вбив своїм breakpoint'ом.
Printf — це вічність
Debug vs Release — різні програми
Серйозно. Різні:
• Debug: guard bytes навколо пам'яті, змінні в RAM
• Release: агресивні оптимізації, змінні в регістрах
• Floating-point: регістри = 80-bit, пам'ять = 64-bitТи буквально запускаєш іншу програму, коли перемикаєш режим. І дивуєшся, що баг зник.
———
Колекція абсурду
OpenOffice: не друкує щовівторка (2009)
Користувач пише: "OpenOffice не друкує щовівторка. В інші дні — нормально."
Усі думають — тролінг. Але ж ні.
Контекст: PostScript — це формат файлів для друку. Принтер отримує такий файл і знає, що саме малювати на папері. Більшість офісних програм генерують PostScript, коли ти натискаєш "Друк".
При генерації файлу OpenOffice додавав дату:
Для файлів мови Erlang утиліта шукала текст "Tue" на позиції 4. Чому "Tue"? Бо Erlang-файли часто починались з такого патерну.
І от проблема: у вівторок PostScript-файл мав "Tue" рівно на позиції 4. Утиліта думала: "О, це Erlang!" Система друку отримувала "Erlang-файл" замість PostScript. І падала.
Понеділок — "Mon" — працює. Середа — "Wed" — працює. Вівторок — "Tue" — збіг з патерном Erlang — падає.
Webpack: не працює в понеділок (2019)
Уяви: ловиш баг. Він є. Ставиш breakpoint — зник. Прибираєш — повернувся. Додаєш
console.log — знову зник.Ні, ти не збожеволів. Ти просто зустрів Heisenbug.
І це не просто курйоз. Це вікно у дивну правду: немає об'єктивного стану програми. Є тільки стан відносно того, як ти дивишся.
———
Як народився термін
UC Berkeley, 1960-ті. Bruce Lindsay і Jim Gray, два комп'ютерні вчені, б'ються з багом в операційці CAL-TSS (одна з перших time-sharing систем — коли багато користувачів працюють на одному комп'ютері одночасно). Баг є. Потім зникає. Потім повертається. Класика.
Lindsay колись вчив фізику. І в якийсь момент до нього дійшло: та це ж observer effect! Коли вимірюєш систему — ти її змінюєш.
Так народився "Heisenbug" — каламбур на імені фізика Гайзенберга.
(До речі, технічно це не принцип невизначеності Гайзенберга, а ефект спостерігача — різні речі. Але назва прилипла, і вже пізно щось міняти.)
———
А тепер цифри
1985 рік. Jim Gray аналізує логи помилок на кількох десятках систем.
Результат: 131 зі 132 багів — Heisenbugs.
Один. Один нормальний, передбачуваний баг на 132. Решта — примари.
Пізніше дослідники з Illinois вивчили 105 concurrency багів у MySQL, Apache, Mozilla та OpenOffice:
Що знайшли Скільки96% проблем — між двома потоками. Навіть у системах, де їх сотні. Вікно помилки мікроскопічне. Але цього достатньо.
Баги тільки між 2 потоками 96%
Баги через ≤4 звернення до пам'яті 92%
"Фікси", що все ще містили баги 60%
———
Чому debugger все ламає
Breakpoint — це не пауза. Це втручання.
Уяви: твоя програма виконує мільйони операцій на секунду. Ти ставиш breakpoint — і що відбувається?
Програма зупиняється. Debugger каже: "Гей, я тут, чекаю команди". Ти дивишся на змінні. Натискаєш "продовжити". Програма біжить далі.
Здається, ти просто "поставив на паузу". Але насправді ця "пауза" — сотні додаткових операцій процесора. Для багу, який живе в циклі що крутиться мільйони разів на секунду, ця затримка — як вставити годинну перерву між кожним кроком.
Баг залежав від точного timing'у? Ти його щойно вбив своїм breakpoint'ом.
Printf — це вічність
Що робиш Скільки часу4000 наносекунд. А race condition може мати вікно в 50 нс. Твій printf — як стіна між двома бігунами, що мали зіткнутися. Вони більше не зіткнуться.
`printf` в stdout ~4000 нс
`fprintf` в файл ~250 нс
Запис в буфер ~10 нс
Debug vs Release — різні програми
Серйозно. Різні:
• Debug: guard bytes навколо пам'яті, змінні в RAM
• Release: агресивні оптимізації, змінні в регістрах
• Floating-point: регістри = 80-bit, пам'ять = 64-bitТи буквально запускаєш іншу програму, коли перемикаєш режим. І дивуєшся, що баг зник.
———
Колекція абсурду
OpenOffice: не друкує щовівторка (2009)
Користувач пише: "OpenOffice не друкує щовівторка. В інші дні — нормально."
Усі думають — тролінг. Але ж ні.
Контекст: PostScript — це формат файлів для друку. Принтер отримує такий файл і знає, що саме малювати на папері. Більшість офісних програм генерують PostScript, коли ти натискаєш "Друк".
При генерації файлу OpenOffice додавав дату:
%%CreationDate: (Tue Mar 3 19:47:42 2009)А тепер баг: Linux має утиліту
file, яка визначає тип файлу. Вона дивиться на перші байти і вгадує: "це картинка", "це PDF", "це код".Для файлів мови Erlang утиліта шукала текст "Tue" на позиції 4. Чому "Tue"? Бо Erlang-файли часто починались з такого патерну.
І от проблема: у вівторок PostScript-файл мав "Tue" рівно на позиції 4. Утиліта думала: "О, це Erlang!" Система друку отримувала "Erlang-файл" замість PostScript. І падала.
Понеділок — "Mon" — працює. Середа — "Wed" — працює. Вівторок — "Tue" — збіг з патерном Erlang — падає.
Webpack: не працює в понеділок (2019)
👍3
Баг, що зникає коли на нього дивишся (2/3)
Контекст: webpack — популярний інструмент для JavaScript-розробників. Збирає всі твої JS-файли, CSS, картинки в один бандл для браузера. webpack-cli — його командний інтерфейс.
Розробники webpack-cli додали банер для донатів. Показувався тільки в понеділок:
Internet Explorer: DevTools як квантовий колапс
Контекст: DevTools — це інструменти розробника в браузері (F12). Там консоль, мережа, DOM-дерево.
У IE об'єкт
Чому? Бо об'єкт
Therac-25: коли Heisenbug вбиває (1985-1987)
Це вже не смішно.
Контекст: Therac-25 — медичний апарат для променевої терапії раку. Пацієнт лягає, апарат опромінює пухлину точною дозою радіації. Race condition — це коли два процеси "змагаються" за ресурс, і результат залежить від того, хто встигне першим. Непередбачувано.
Therac-25 мав race condition в софті. Іноді давав летальні дози радіації замість терапевтичних. Загинуло щонайменше троє людей.
Баг з'являвся тільки коли оператор друкував дуже швидко — потрібні були дні практики, щоб випадково натрапити. При стандартному тестуванні — все ідеально. Виробник місяцями не міг відтворити проблему.
Heisenbug, який ховався від спостереження. І вбивав.
———
Класифікація багів (для нердів)
Програмісти створили цілу "фізичну" таксономію:
———
Що з цього випливає
"Працює" — це не так чи ні
Програма не "працює" або "не працює". Вона працює за певних умов. Debug/release. Linux/Windows. Понеділок/вівторок. З логуванням/без. Змінив умови — змінив результат.
Debugger — не вікно. Це втручання.
Ти не "дивишся на програму". Ти створюєш нову систему: програма + debugger. А вона поводиться інакше.
"Працює на моїй машині" — не жарт
Memory layout різний. OS scheduler різний. Timing різний. Ти і твій колега буквально запускаєте різні програми. Обидва праві. Обидва ні.
Баг існує?
Залежить від того, хто дивиться. Як одночасність подій у теорії відносності — немає абсолютної відповіді.
———
Як ловити те, що тікає
Баг зник під debugger'ом? Це не проблема. Це підказка.
Ти щойно дізнався: баг чутливий до timing'у. Значить, шукай race conditions, memory ordering, timing-залежну логіку. Коло звузилось.
Контекст: webpack — популярний інструмент для JavaScript-розробників. Збирає всі твої JS-файли, CSS, картинки в один бандл для браузера. webpack-cli — його командний інтерфейс.
Розробники webpack-cli додали банер для донатів. Показувався тільки в понеділок:
if (now.getDay() === MONDAY) {
if (fileOwnerId === process.getuid()) // 💥
}process.getuid() — це Linux-функція. На Windows її немає. Баг з'являвся ТІЛЬКИ в понеділок, ТІЛЬКИ на Windows. Шість днів на тиждень — ідеально.Internet Explorer: DevTools як квантовий колапс
Контекст: DevTools — це інструменти розробника в браузері (F12). Там консоль, мережа, DOM-дерево.
console.log() — найпростіший спосіб дебажити JS: виводиш змінну в консоль і дивишся.У IE об'єкт
console не існував, поки не відкриєш DevTools. Код з console.log() падав у звичайних користувачів — бо в них DevTools закриті. Розробник відкривав DevTools подивитись — працює. Закривав — все ще працює.Чому? Бо об'єкт
console вже створився при відкритті. Акт спостереження змінив систему назавжди.Therac-25: коли Heisenbug вбиває (1985-1987)
Це вже не смішно.
Контекст: Therac-25 — медичний апарат для променевої терапії раку. Пацієнт лягає, апарат опромінює пухлину точною дозою радіації. Race condition — це коли два процеси "змагаються" за ресурс, і результат залежить від того, хто встигне першим. Непередбачувано.
Therac-25 мав race condition в софті. Іноді давав летальні дози радіації замість терапевтичних. Загинуло щонайменше троє людей.
Баг з'являвся тільки коли оператор друкував дуже швидко — потрібні були дні практики, щоб випадково натрапити. При стандартному тестуванні — все ідеально. Виробник місяцями не міг відтворити проблему.
Heisenbug, який ховався від спостереження. І вбивав.
———
Класифікація багів (для нердів)
Програмісти створили цілу "фізичну" таксономію:
Баг Фізик Що робить
**Bohrbug** Niels Bohr Стабільний, передбачуваний. Нудний, зате ловиться.
**Heisenbug** Werner Heisenberg Зникає, коли дивишся
**Mandelbug** Benoit Mandelbrot Фрактальний: чим глибше копаєш, тим більше знаходиш
**Schroedinbug** Erwin Schrödinger Код, що не мав би працювати, але працює — поки хтось не подивиться
———
Що з цього випливає
"Працює" — це не так чи ні
Програма не "працює" або "не працює". Вона працює за певних умов. Debug/release. Linux/Windows. Понеділок/вівторок. З логуванням/без. Змінив умови — змінив результат.
Debugger — не вікно. Це втручання.
Ти не "дивишся на програму". Ти створюєш нову систему: програма + debugger. А вона поводиться інакше.
"Працює на моїй машині" — не жарт
Memory layout різний. OS scheduler різний. Timing різний. Ти і твій колега буквально запускаєте різні програми. Обидва праві. Обидва ні.
Баг існує?
Залежить від того, хто дивиться. Як одночасність подій у теорії відносності — немає абсолютної відповіді.
———
Як ловити те, що тікає
Баг зник під debugger'ом? Це не проблема. Це підказка.
Ти щойно дізнався: баг чутливий до timing'у. Значить, шукай race conditions, memory ordering, timing-залежну логіку. Коло звузилось.
👍4👏2
Баг, що зникає коли на нього дивишся (3/3)
Інструменти:
• rr — записує виконання програми один раз (включно з timing, потоками, всім). Потім можеш "перемотувати" назад і вперед скільки хочеш. Баг більше не втече.
• ThreadSanitizer (TSan) — додаєш прапорець
• CHESS (Microsoft) — систематично перебирає всі можливі порядки виконання потоків. Не чекає, поки баг "випадково" вилізе — шукає сам.Факт: CHESS відтворив за 30 секунд баг, що з'являвся раз на місяць.
———
Головне
Немає "правди" про програму. Є правда відносно того, як дивишся.
Це не баг у звичному сенсі. Це природа складних систем.
Не питай "де баг?" Питай: "при яких умовах система поводиться так, а при яких — інакше?"
У цьому питанні вже половина відповіді.
———
Наступного разу, коли баг зникне під debugger'ом — посміхнись. Ти щойно побачив квантову механіку в дії.
Heisenbug передає привіт.
Інструменти:
• rr — записує виконання програми один раз (включно з timing, потоками, всім). Потім можеш "перемотувати" назад і вперед скільки хочеш. Баг більше не втече.
• ThreadSanitizer (TSan) — додаєш прапорець
-fsanitize=thread при компіляції, і він слідкує за всіма зверненнями до пам'яті. Якщо два потоки лізуть в одне місце без синхронізації — покаже.• CHESS (Microsoft) — систематично перебирає всі можливі порядки виконання потоків. Не чекає, поки баг "випадково" вилізе — шукає сам.Факт: CHESS відтворив за 30 секунд баг, що з'являвся раз на місяць.
———
Головне
Немає "правди" про програму. Є правда відносно того, як дивишся.
Це не баг у звичному сенсі. Це природа складних систем.
Не питай "де баг?" Питай: "при яких умовах система поводиться так, а при яких — інакше?"
У цьому питанні вже половина відповіді.
———
Наступного разу, коли баг зникне під debugger'ом — посміхнись. Ти щойно побачив квантову механіку в дії.
Heisenbug передає привіт.
👍7
Швидкість ≠ Мудрість
Мій старий друг, Юра Лучанінов написав про пастку: ми плутаємо швидкість з прогресом. AI прискорює руки. Але чи прискорює розуміння?
Когнітивна психологія каже: ні. І це не новина — цю закономірність досліджують десятиліттями.
———
Ілюзія компетентності
Коли щось дається легко, ми автоматично переоцінюємо своє розуміння. Психологи називають це "foresight bias" — плутаємо "мені зараз легко" з "я це знатиму завтра".
AI-підказка прийнята за 2 секунди? Мозок реєструє: "я це знаю".
Але ні. Ти це бачив. А "бачив" і "знаю" — різні речі. Бачив — це коли впізнаєш код, коли його показують. Знаєш — це коли можеш написати сам, без підказки. Перше дається легко. Друге вимагає зусиль.
———
Бажані труднощі
Є такий парадокс: умови, які сповільнюють поточну роботу, посилюють довгострокове засвоєння. Психологи називають це "desirable difficulties" — бажані труднощі.
Що сюди входить? Повторення з інтервалами. Перемішування тем. Самостійне згадування. Генерація замість споживання.
І от пастка: все, що AI усуває "для зручності" — це саме те, що будує справжню експертизу.
———
Ефект генерації
Ми краще запам'ятовуємо те, що генеруємо самі, ніж те, що читаємо готовим. Це довели ще в 1978 році.
Copilot дає готове. Ти приймаєш. Нейронні зв'язки, які мали б сформуватися — не формуються.
Дослідження 2023 року підтвердило це для AI-кодингу: новачки з AI швидше завершують задачі, але розуміння не покращується. І при цьому вони відчувають, що навчилися більше.
Це і є ілюзія плинності. Легко приймати — значить легко забути.
———
GPS для коду
Коли ми вивантажуємо задачі на зовнішні інструменти, поточна продуктивність зростає. Але внутрішні навички можуть слабшати.
Приклад: люди, які постійно користуються навігатором, гірше орієнтуються в просторі. Це доведено.
AI — це GPS для коду. Зручно. Швидко. І потенційно — атрофія.
———
Про глибину
Швидкий досвід ≠ глибокий досвід.
Можна "просидіти" 10 000 годин — і залишитися на поверхні. А можна 20 хвилин з повною присутністю — і щось зміниться назавжди.
Код — так само.
1000 рядків з AI за день — це обсяг. 20 рядків, які ти справді зрозумів — це знання, яке залишиться.
———
Швидке і повільне мислення
Канеман поділив мислення на два режими. Швидке — інтуїтивне, автоматичне. Повільне — аналітичне, свідоме.
AI підсилює швидке: код "тече", рішення приходять миттєво.
Але архітектура, крайові випадки, підтримка — це все повільне мислення. Важке. Але необхідне.
———
Що робити
Пауза перед Accept. 3 секунди. Чи я розумію цей код? Чи я його просто впізнаю?
Спочатку сам. Спробуй написати сам. Навіть неправильно. Потім порівняй з підказкою.
Поясни собі. Якщо не можеш пояснити прийнятий код — ти його не знаєш.
Іноді вимикай. 30 хвилин без Copilot. Відчуй різницю.
———
Головне
AI прискорює написання коду. Але мудрість — це не кількість написаного.
Мудрість — це те, що залишається після труднощів. Час, зусилля, присутність.
Юра написав: "either you manage complexity at boundaries, or it accumulates where it’s most expensive to pay."
Додам: найдорожче місце — твоя голова. Не дозволяй AI платити за тебе тим, що робить тебе слабшим.
———
Джерела:
• Koriat & Bjork (2005) — Illusions of competence
• Bjork & Bjork (2011) — Desirable difficulties
• Slamecka & Graf (1978) — Generation effect
• Risko & Gilbert (2016) — Cognitive offloading
• Peng et al. (2023) — AI code suggestions impact
• Kawakami et al. (2024) — AI and skill decay
Stay tuned🧠
Мій старий друг, Юра Лучанінов написав про пастку: ми плутаємо швидкість з прогресом. AI прискорює руки. Але чи прискорює розуміння?
Когнітивна психологія каже: ні. І це не новина — цю закономірність досліджують десятиліттями.
———
Ілюзія компетентності
Коли щось дається легко, ми автоматично переоцінюємо своє розуміння. Психологи називають це "foresight bias" — плутаємо "мені зараз легко" з "я це знатиму завтра".
AI-підказка прийнята за 2 секунди? Мозок реєструє: "я це знаю".
Але ні. Ти це бачив. А "бачив" і "знаю" — різні речі. Бачив — це коли впізнаєш код, коли його показують. Знаєш — це коли можеш написати сам, без підказки. Перше дається легко. Друге вимагає зусиль.
———
Бажані труднощі
Є такий парадокс: умови, які сповільнюють поточну роботу, посилюють довгострокове засвоєння. Психологи називають це "desirable difficulties" — бажані труднощі.
Що сюди входить? Повторення з інтервалами. Перемішування тем. Самостійне згадування. Генерація замість споживання.
І от пастка: все, що AI усуває "для зручності" — це саме те, що будує справжню експертизу.
———
Ефект генерації
Ми краще запам'ятовуємо те, що генеруємо самі, ніж те, що читаємо готовим. Це довели ще в 1978 році.
Copilot дає готове. Ти приймаєш. Нейронні зв'язки, які мали б сформуватися — не формуються.
Дослідження 2023 року підтвердило це для AI-кодингу: новачки з AI швидше завершують задачі, але розуміння не покращується. І при цьому вони відчувають, що навчилися більше.
Це і є ілюзія плинності. Легко приймати — значить легко забути.
———
GPS для коду
Коли ми вивантажуємо задачі на зовнішні інструменти, поточна продуктивність зростає. Але внутрішні навички можуть слабшати.
Приклад: люди, які постійно користуються навігатором, гірше орієнтуються в просторі. Це доведено.
AI — це GPS для коду. Зручно. Швидко. І потенційно — атрофія.
———
Про глибину
Швидкий досвід ≠ глибокий досвід.
Можна "просидіти" 10 000 годин — і залишитися на поверхні. А можна 20 хвилин з повною присутністю — і щось зміниться назавжди.
Код — так само.
1000 рядків з AI за день — це обсяг. 20 рядків, які ти справді зрозумів — це знання, яке залишиться.
———
Швидке і повільне мислення
Канеман поділив мислення на два режими. Швидке — інтуїтивне, автоматичне. Повільне — аналітичне, свідоме.
AI підсилює швидке: код "тече", рішення приходять миттєво.
Але архітектура, крайові випадки, підтримка — це все повільне мислення. Важке. Але необхідне.
———
Що робити
Пауза перед Accept. 3 секунди. Чи я розумію цей код? Чи я його просто впізнаю?
Спочатку сам. Спробуй написати сам. Навіть неправильно. Потім порівняй з підказкою.
Поясни собі. Якщо не можеш пояснити прийнятий код — ти його не знаєш.
Іноді вимикай. 30 хвилин без Copilot. Відчуй різницю.
———
Головне
AI прискорює написання коду. Але мудрість — це не кількість написаного.
Мудрість — це те, що залишається після труднощів. Час, зусилля, присутність.
Юра написав: "either you manage complexity at boundaries, or it accumulates where it’s most expensive to pay."
Додам: найдорожче місце — твоя голова. Не дозволяй AI платити за тебе тим, що робить тебе слабшим.
———
Джерела:
• Koriat & Bjork (2005) — Illusions of competence
• Bjork & Bjork (2011) — Desirable difficulties
• Slamecka & Graf (1978) — Generation effect
• Risko & Gilbert (2016) — Cognitive offloading
• Peng et al. (2023) — AI code suggestions impact
• Kawakami et al. (2024) — AI and skill decay
Stay tuned
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤1
Натрапив на біржу для ШІ агентів, де вони можуть найняти людину для того що не зможуть самі зробити.
З цікавого, розробники коштують меньше пламбепів....
З цікавого, розробники коштують меньше пламбепів....
Тестую новий Claude Opus 4.6.
Коли задаєш делікатні психологічні питання, то вилізла навіть така от штука.
Це реально дуже круто.
Коли задаєш делікатні психологічні питання, то вилізла навіть така от штука.
Це реально дуже круто.