Назад
SiTech
Дрібні програмістські хитрощі: чому крихти знань дають щоденну користь
SiTech AI Team3 წთ. საკითხავი

Дрібні програмістські хитрощі: чому крихти знань дають щоденну користь

Вілл Келехер доводить, що значна частина щоденної продуктивності інженера походить із маленьких самодостатніх крихт знання — від пошуку git pickaxe до логарифмічних бакетів у метриках.

Чому дрібні знання мають значення

Вілл Келехер у новому дописі в блозі доводить, що напрочуд велика частка щоденної інженерної продуктивності походить із маленьких крихт знання: знати, що в мові існує певна можливість; розуміти, що непояснена затримка TCP, ймовірно, пов'язана з алгоритмом Нагла; пам'ятати правильну команду git, щоб вибратися зі складної ситуації, або хитрощі для переписування файлу.

У терміналі та в Git

Його приклади починаються з термінала. Ctrl+R шукає в історії команд, а встановлення fzf робить цей пошук нечітким (fuzzy); atuin замінює історію оболонки на пошукову базу SQLite; per-directory-history дозволяє перемикатися між пошуком команд, виконаних у поточному каталозі, і пошуком усіх попередніх команд. У Git git log -S pattern — так званий pickaxe — перелічує всі коміти, які додали або видалили заданий рядок; на думку автора, це надзвичайно корисно у старих кодових базах. git log -G схожий, але також показує, коли рядок перемістили. А git checkout - повертає до попереднього HEAD, подібно до того, як cd - повертає до попереднього каталогу.

Він також стверджує, що find вам, найімовірніше, не потрібен: багато команд find замінюються глобами на кшталт **/*.md, які більшість оболонок підтримують одразу, а bash потребує спершу shopt -s globstar. Розширене автодоповнення zsh, зазначає він, типово не ввімкнене й активується кількома рядками налаштувань.

Бази даних, метрики та JavaScript

Кілька хитрощів стосуються швидшого отримання відповіді. SELECT без FROM працює в SQL і є швидким способом перевірити поведінку функції або пригадати, що повертає SELECT TRUE <> NULL. І PostgreSQL, і MySQL підтримують explain analyze, який справді виконує запит і дає значно більше інформації про його продуктивність, ніж звичайний explain. У метриках же запис логарифмічного бакета, наприклад Math.floor(Math.log10(count)), дає уявлення про розподіл значення, а не лише про середнє.

З боку JavaScript він називає Array.flatMap, Object.entries і Promise.withResolvers сучасними можливостями, які варто знати, а також одну хитрощів Node.js з непропорційно великим ефектом: створення https.Agent і передавання його у виклики fetch утримує з'єднання з зовнішнім ресурсом відкритим, що може різко вплинути на затримку.

Знання компанії складається з того ж матеріалу

Усередині компанії, зазначає Келехер, ще більше знання набуває такої форми: яке джерело даних використати, коли налагоджуєш конкретну проблему; хто добре розуміється на певній ділянці й радо допоможе; де лежить хороша документація; який сигнал означає, що сервіс треба масштабувати вручну; яка команда робить поетапний перезапуск; яка утиліта робить нудну проблему скриптованою. У попередній компанії він щодня ділився одним трюком з інженерною командою в Slack — і технічним, і суто внутрішнім. Навіть ті, хто знав дев'ять із десяти трюків, знаходили десятий корисним, а один трюк на день був правильною дозою, щоб нікого не перевантажити.

SSiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.