Knowledge Management English for Engineering Teams
Досліджуйте словниковий запас англійської мови, який використовують інженерні команди для документування знань — runbooks, postmortems, ADRs тощо.
Introduction
Інженерні команди накопичують знання постійно — в коді, в розмовах, в відповідях на інциденти і в архітектурних рішеннях. Проблема в тому, що більшість цих знань живе в головах людей, а не в системах, і коли ці люди залишають або переходять до інших команд, знання йдуть з ними. Ефективне управління знаннями - це практика створення командних знань, які є стійкими, відкритими і корисними. Цей запис охоплює вісім термінів, які формують основу управління знаннями в сучасних інженерних організаціях.
Система управління знаннями
** Інституційні знання ** - Накопичене розуміння, контекст і експертиза, що існує в організації, особливо неформальні, недокументовані знання, які носять довготривалі працівники. Інституційні знання є цінними саме тому, що їх важко отримати і легко втратити.
- “Коли інженер-засновник пішов минулого року, ми зрозуміли, скільки інституційних знань ніколи не було задокументовано - цілі класи кращих випадків у платіжному потоці існували тільки в її пам’яті.” *
** Runbook ** — документований набір процедур для роботи, підтримки або усунення несправностей системи або служби. Runbooks призначені для виконання під час інцидентів або рутинних операцій, що дозволяє інженерам ефективно реагувати навіть тоді, коли вони не знайомі з системою.
“Кожна служба, яку ми запускаємо в виробництві, повинна мати книгу запуску, яка охоплює п’ять основних режимів несправностей - коли інженер на черзі отримує сторінку о 2 годині ранку, вони повинні бути в змозі діагностувати і вирішити найпоширеніші проблеми без пошуку контексту.”
** Postmortem ** — Структурований ретроспективний аналіз, проведений після виробничого інциденту, перерви або значної невдачі. Хороший постмортем визначає, що сталося, основну причину, фактори, що сприяли, і конкретні дії, щоб запобігти повторенню. Більшість інженерних культур приймають безвинні постмортіми, щоб заохочувати чесний аналіз.
“Після перезавантаження бази даних, що спричинило 45 хвилин простою, ми провели безвинну постмортну експертизу і визначили три системні проблеми - елементи подальших дій з цього документа привели до нашої інфраструктурної дорожньої карти на наступний квартал.”
** Журнал рішень ** — запис важливих рішень, прийнятих під час проекту або спринту, включаючи контекст, розглянуті варіанти і обґрунтування вибраного шляху. Журнал рішень запобігає командам від перегляду старих рішень і дає майбутнім інженерам змогу побачити, чому речі так, як вони є.
“Ми зберігаємо журнал рішень в Notion для кожного великого проекту - коли новий інженер приєднується і запитує, чому ми обрали GraphQL над REST для API даних, відповідь вже задокументована з початковими міркуваннями.”
** Запис рішення щодо архітектури ** — Зазвичай називається ADR, це короткий, структурований документ, який містить важливе рішення щодо архітектури. На відміну від запису журналу рішень, ADR зазвичай написано до або під час рішення, щоб переконатися, що всі варіанти правильно розглянуті і обґрунтування чітко сформулювати.
“Я написав ADR перед тим, як ми мігрували нашу чергу завдань з Redis на спеціальний брокер повідомлень — три місяці потому, коли проблеми з продуктивністю, які ми очікували, дійсно з’явилися, документ зробив простим пояснити, чому ми зробили цей виклик.”
** Плем’ яні знання ** — Специфічний тип інституційних знань, що належать невеликій групі або племені в рамках більшої організації. Вона відноситься до спеціалізованого розуміння, яке не записане і доступне тільки через наявність певної команди або спільноти практики.
“Процес розгортання для спадкового монолита є чистим племінним знанням - тільки два інженери знають повну послідовність вручну виконаних кроків, і нам потрібно задокументувати і автоматизувати його, перш ніж хтось з них перейде на нову роль.”
** База знань ** — Централізоване сховище документованої інформації, підручників, часто задаваних питань, підручників з керування та довідкових матеріалів, які члени команди можуть шукати і отримувати доступ до них незалежно один від одного. Добре підтримувана база знань зменшує залежність від племінних знань і зменшує кількість повторюваних питань, які перешкоджають старшим інженерам.
“Ми перебудували нашу внутрішню базу знань в Confluence в минулому кварталі і категорізували все за доменом послуги - час набору нових інженерів зменшився з шести тижнів до трьох, тому що відповіді на найпоширеніші запитання були насправді знайдені.”
** Єдине джерело правди ** — Принцип, згідно з яким кожна частина важливої інформації повинна зберігатися у точно одному авторитетному місці, а всі інші посилання мають вказувати на це джерело. Це запобігає плутанини і помилок, які виникають, коли існує декілька копій тієї ж інформації і розходяться з часом.
“Наша конфігурація інфраструктури повинна мати єдине джерело правди в Terraform — якщо один і той же ресурс визначений як в Terraform, так і в ручному скрипту, ми зрештою матимемо розбіжність, яка призведе до інциденту.”
Інженерний менеджмент — це інженерна діяльність
Багато інженерних команд розглядають управління знаннями як проблему документації — щось, що повинно відбутися після того, як реальна робота буде виконана. Це неправильно. Документаційний борг складається так само, як технічний борг. Чим довше команда чекає на захоплення інституційних знань, тим дорожче стає їх відновлення, і тим більше ризику команда несет від залежності від ключових осіб.
Найефективніші інженерні організації розглядають управління знаннями як постійну практику, а не періодичне очищення. Они пишут руководства по эксплуатации до того, как системы запускаются, а не после первого инцидента. Они пишут пост-мёртвые отчеты в течение 48 часов после инцидента, пока память свежа. Вони підтримують ADR як частину процесу проектування, а не як пізніше.
Починаємо
Якщо ваша команда не має практики керування знаннями, починайте з двох речей: підручника для вашої найважливішої служби і шаблону післясмертної записки, яку ваша команда погодиться використовувати після кожного значного інциденту. Только эти два артефакта начнут делать знания вашей команды более прочными и ваши дежурные ротаций менее стрессирующими. Звідси, будівництво журналу рішень і легка база знань стає природним розширенням тієї ж дисципліни.
Переклади: «Переклади» — переклади з англійської мови
Будьмо чесними - вивчення професійної англійської як розробника не просто про запам’ятовування слів. Це розуміння того, як використовуються ці слова, тонкі нюанси, які можуть кардинально змінити вплив вашого спілкування. Часто нерідні носії зосереджуються на прямому перекладі, що може призвести до надмірно формального або навіть заплутаного фразування в інженерному контексті. Метою є не досконала буквальна точність; це передання інформації чітко, конструктивно і з рівнем професіоналізму, очікуваним міжнародними командами.
Поширеною пасткою є надмірне використання фраз, які звучать вражаюче у вашій рідній мові, але здаються занадто бюрократичними або занадто складними у перекладі безпосередньо на англійську. Наприклад, сказати «Ми повинні реалізувати цю функцію» може здатися диктаторським. Замість цього, розгляньте «Дослідимо, як ми можемо включити цю функцію» - це запрошує до співпраці і більш відкритої дискусії. Аналогічно, зосередження уваги виключно на «блоках» під час пост-морту перекидає провину замість дослідження системних проблем. Формування його як «непередбачених викликів» або «областей для поліпшення» сприяє культурі навчання і запобігає обороні.
Іншою областю, що вимагає уваги, є Slack комунікація. Хоча швидкі чати є в порядку, навіть короткі повідомлення користуються обережною фразою. Просте «Це потрібно виправити» є нечітким і нецікавим. Краще сказати: «Я виявив проблему з логікою перевірки даних; вона періодично відмовляється під високою нагрузкою. Давайте обговоримо надійне рішення.” Зверніть увагу на тон - використовуючи емоджи розумно і завжди підтверджуючи розуміння - це ключове для ефективного командного спілкування. Пам’ятай, що ясність завжди перемагає розум.
Нарешті, при написанні Pull Requests (PRs), опис повинен чітко сформулювати * чому * ви робите зміни, а не тільки * що * ви змінили. Хороший PR- опис може бути таким: « Перероблено модуль автентифікації для поліпшення продуктивності і безпеки. Це оновлення розв’ язує проблеми, пов’ язані з останніми повідомленнями про вразливості, пов’ язані з керуванням сеансами, і включає в себе розширене ведення журналу для аудиту. Цей підхід демонструє активне розуміння кодової бази і її контексту.
# Example using `git diff` to highlight changes in a PR description (simplified)
git diff --stat -w --unified=0 HEAD^...HEAD | grep -E 'refactored|security|logging'
За допомогою цієї команди, яку можна виконати з термінала, можна швидко побачити, які рядки коду обговорюються у описі PR. Це невеличкий, але потужний інструмент для переконання, що ваша документація відповідає фактичним змінам і надає необхідний контекст для переглядачів.