TGViewer
Channel Public Channel
Вайб Кодера

Вайб Кодера

@vibe_codera

Вайб свідомого кодера. Про AI, код і чому твоя голова — досі твій головний інструмент. Веду я — 20+ років у розробці, від ZX Spectrum до React.
Subscribers
565
Photos
35
Videos
0
Links
30

Showing posts older than #52 · Back to latest

Older Posts 18 shown
Post #51 862
📋 Що робити в понеділок

Чотири кроки. Жоден не потребує бюджету чи дозволу менеджера.

1. Витягни метрики

GitHub, GitLab, Bitbucket — усі мають дані. Який у вас avg pickup time? Cycle time? Розмір PR? Не знаєш? От це і є перша проблема.

2. Постав ціль

DORA elite — lead time менше дня. Не обов'язково як Google. "Same business day" для першого рев'ю — вже прогрес.

3. Один експеримент на 2 тижні

Розбий наступний великий PR на 2-3 менших. Або додай CODEOWNERS. Або Slack reminder на стейл PR-и. Щось одне. Подивись на числа.

4. Зроби видимим

Додай PR cycle time на дашборд команди. Коли всі бачать "середній час — 48 годин", розмова починається сама.
———
Повна стаття з усіма джерелами та цифрами:

👉 https://gitautoreview.com/blog/hidden-cost-of-slow-code-reviews

P.S. Ми робили інструмент, який дає AI-рев'ю за хвилини, але публікує коментарі тільки після твого ОК.

Git AutoReview
dora.dev DORA | DORA’s software delivery performance metrics DORA is a long running research program that seeks to understand the capabilities that drive software delivery and operations performance. DORA helps teams apply those capabilities, leading to better organizational performance.
  • 👍 3
  • 🔥 2
Post #50 761
⚡ Що роблять найшвидші команди

LinearB виділяє "elite" рівень — це топ-20% команд, у яких pickup time менше 7 годин. Google взагалі за 4 години рев'ювить. Що ж вони роблять інакше?

1️⃣ Маленькі PR

Graphite кажуть: 50 рядків — ідеал. Google — ~200. Elite команди — 219 в середньому. Менше PR = швидше рев'ю = менше багів = менше конфліктів.

2️⃣ Конкретний рев'ювер

CODEOWNERS у GitHub. Бо "хтось гляне" = ніхто не гляне. Bystander effect працює і в код рев'ю, от так.

3️⃣ Вимірюють pickup time

Не знаєш цифру — не бачиш проблему. Slack бот, який пінгає після 8 годин? Примітивно, але працює.

4️⃣ AI на перший прохід

Лінтери + статичний аналіз ловлять дрібниці до людини. AI code review йде далі — перший прохід за хвилини замість годин.

46% розробників не довіряють AI повністю. І правильно ж. Тому підхід: AI пропонує, людина вирішує. Не навпаки.

Завтра — що робити в понеділок 👇
Engineerscodex How Google takes the pain out of code reviews, with 97% dev satisfaction A study of Google's code review tooling (Critique), AI-powered improvements, and recent statistics
  • 👍 5
  • ❤ 2
Post #49 620
🧠 Повільні рев'ю — це подвійний удар

Gloria Mark з UC Irvine виміряла: щоб повернутись у "потік" після переривання, потрібно 23 хвилини 15 секунд. Не приблизно — реально виміряли.

Переключаєшся з поточної задачі на старий PR — платиш цей податок двічі. Спочатку вийди з контексту. Потім згадай, що ти писав три дні тому. Ну, удачі.

І це ж не все.

SmartBear дослідили 2,500 PR-ів:

• PR до 100 рядків → знаходять 87% багів

• PR на 1000+ рядків → лише 28%

Повільне рев'ю = PR розростається = більше багів у проді.

Meta теж опублікували цікаве: задоволеність роботою падає прямо пропорційно часу очікування PR. Не "задоволеність процесом рев'ю". Загальна. Задоволеність. Роботою.

Завтра — що роблять команди, у яких все ок 👇
  • 👍 5
  • 🤔 3
  • 🔥 1
Post #48 571
Скільки коштує "почекай, гляну після обіду"

Ну давай рахувати.

У штатах розробник коштує ~$82/год з усіма податками (Indeed, BLS). На очікування рев'ю йде 5.8 годин на тиждень. Тобто:

5.8 × 50 тижнів × $82 = $23,780

На одного розробника. На рік.

Команда з 10? $237,800. Просто чекаючи.

Не на саме рев'ю, бо рев'ю — корисна робота. А от PR, що лежить у черзі поки контекст вивітрюється і мерж конфлікти ростуть як гриби після дощу — це вже гроші на вітер.

🇺🇦 А тепер для нас.

Мідл в Україні — ~$3,450/міс (Scroll Media). Сеньйор — $5,000+. З податками та офісом мідл обходиться приблизно в $4,500/міс, тобто ~$27/год.

5.8 × 50 × $27 = $7,830 на одного на рік

Десять мідлів? ~$78,300. Це ж ціла річна зарплата сеньйора. Просто на те, що PR-и лежать.

Джерела: LinearB (8.1M PRs), Full Scale, Scroll Media

Далі — чому це ще гірше ніж здається ⬇️
Indeed Software engineer salary in United States The average salary for a Software Engineer is $135,799 per year in United States. Learn about salaries, benefits, salary satisfaction and where you could earn the most.
  • 👍 1
Post #47 573
Твій PR висить другий день.

Ти вже переключився на інший таск. Потім ще на один. Чесно — половину того коду вже не пам'ятаєш.

Коли рев'ювер нарешті гляне, витратиш 20 хвилин просто щоб згадати "а що я тут взагалі робив?"

Знайомо ж?

LinearB проаналізували 8.1 мільйона PR-ів із 4,800 команд. Половина з них простоює 50%+ свого життя. Не рев'ювиться. Не правиться. Просто лежить.

Завтра покажу скільки це коштує в доларах. Спойлер - ти здивуєшся.

Stay tuned 🧠
  • 👍 4
Post #46 610
Вайб Кодера Пару місяців дослідів, спогадів, роскопок веб-архіва... І скоро на DOU вийде нова стаття з серії "Еволюція Фронтенда". #анонс #DOU
https://dou.ua/forums/topic/57819/
DOU Frontend Evolution #3: Flash — золота ера плагінів (2000–2008) Flash був не тим, за що його тримали Скажіть «Flash» — і більшість згадає анімовані банери, «Skip Intro» та ігри на Miniclip. Це правда, але це поверх
  • 👀 1
Post #45 523
Пару місяців дослідів, спогадів, роскопок веб-архіва...
І скоро на DOU вийде нова стаття з серії "Еволюція Фронтенда".


#анонс #DOU
Post #43 444
Тестую новий Claude Opus 4.6.

Коли задаєш делікатні психологічні питання, то вилізла навіть така от штука.

Це реально дуже круто.
Post #40 445
Натрапив на біржу для ШІ агентів, де вони можуть найняти людину для того що не зможуть самі зробити.
З цікавого, розробники коштують меньше пламбепів....
Post #39 378
Швидкість ≠ Мудрість

Мій старий друг, Юра Лучанінов написав про пастку: ми плутаємо швидкість з прогресом. 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 🧠
  • 👍 11
  • ❤ 1
Post #37 344
Баг, що зникає коли на нього дивишся (3/3)

Інструменти:
• rr — записує виконання програми один раз (включно з timing, потоками, всім). Потім можеш "перемотувати" назад і вперед скільки хочеш. Баг більше не втече.
• ThreadSanitizer (TSan) — додаєш прапорець -fsanitize=thread при компіляції, і він слідкує за всіма зверненнями до пам'яті. Якщо два потоки лізуть в одне місце без синхронізації — покаже.
• CHESS (Microsoft) — систематично перебирає всі можливі порядки виконання потоків. Не чекає, поки баг "випадково" вилізе — шукає сам.Факт: CHESS відтворив за 30 секунд баг, що з'являвся раз на місяць.
———
Головне

Немає "правди" про програму. Є правда відносно того, як дивишся.

Це не баг у звичному сенсі. Це природа складних систем.

Не питай "де баг?" Питай: "при яких умовах система поводиться так, а при яких — інакше?"

У цьому питанні вже половина відповіді.
———
Наступного разу, коли баг зникне під debugger'ом — посміхнись. Ти щойно побачив квантову механіку в дії.

Heisenbug передає привіт.
  • 👍 7
Post #36 260
Баг, що зникає коли на нього дивишся (2/3)

Контекст: 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
Post #35 257
Баг, що зникає коли на нього дивишся (1/3)

Уяви: ловиш баг. Він є. Ставиш 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:
Що знайшли                          Скільки
Баги тільки між 2 потоками 96%
Баги через ≤4 звернення до пам'яті 92%
"Фікси", що все ще містили баги 60%
96% проблем — між двома потоками. Навіть у системах, де їх сотні. Вікно помилки мікроскопічне. Але цього достатньо.
———
Чому debugger все ламає

Breakpoint — це не пауза. Це втручання.

Уяви: твоя програма виконує мільйони операцій на секунду. Ти ставиш breakpoint — і що відбувається?

Програма зупиняється. Debugger каже: "Гей, я тут, чекаю команди". Ти дивишся на змінні. Натискаєш "продовжити". Програма біжить далі.

Здається, ти просто "поставив на паузу". Але насправді ця "пауза" — сотні додаткових операцій процесора. Для багу, який живе в циклі що крутиться мільйони разів на секунду, ця затримка — як вставити годинну перерву між кожним кроком.

Баг залежав від точного timing'у? Ти його щойно вбив своїм breakpoint'ом.

Printf — це вічність
Що робиш           Скільки часу
`printf` в stdout ~4000 нс
`fprintf` в файл ~250 нс
Запис в буфер ~10 нс
4000 наносекунд. А race condition може мати вікно в 50 нс. Твій printf — як стіна між двома бігунами, що мали зіткнутися. Вони більше не зіткнуться.

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
Post #33 300
Скоро буде дуже довгий пост.

Намагався тему розжувать якомога краще.
І дуже потрібен ващ фідбек.
Чи цікаво таке... чи не дуже...
І як взагалі тему роскрив.

Черканіть там щось в коментах, або лайк/дизлайк.

#не_проходьте_мимо
  • 👍 3
Post #32 300
Це просто БІМБА!

Нарешті, такі техно гіки як я можу отримати собі справжній PDA. І навіть повноцінний купуктер в кишені!
Так, сучасні сматрахвони це трошки не те...
Бо я застав ті славні часи, коли в мене був Nokia N800 зі справжнім Debian Linux.
Коли можна було зайти на свій побудований HA кластер і подивитись чого впав sendmail з любого місця. І не таскать ноут ))

Я вже мовчу, що можна пописати на Rust щось цікавого... та і для фронту можна знайти цікаві застосування...

Хтось ще памятає часи КПК на Symbian та WIndows CE?

Чи я один тут з ким не страшно ходити в ожеледицю ? ))

https://mecha.so/comet
  • 👍 4
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →