Async Communication English: Slack, Teams, і електронна пошта для розробників
Англійські фрази, шаблони і етикет для професійного асинхронного спілкування в IT- командах — повідомлення Slack, повідомлення Teams, коментарі запитів на витягування і оновлення стану.
Більшість комунікацій в сучасних командах розробників програмного забезпечення є асинхронними: гілки Slack, повідомлення Teams, коментарі PR, описи Jira, сторінки Confluence і електронні листи. На відміну від зустрічі, асинхронні повідомлення є постійними, з можливістю пошуку, і їх можуть читати люди з різних часових поясів — люди, які не можуть задати питання у реальному часі.
Для людей, для яких англійська мова не є рідною, асинхронне спілкування має одну велику перевагу: ви маєте час написати і переглянути повідомлення перед його надсиланням. Цей посібник надає вам словниковий запас і структуру, щоб використовувати цей час максимально ефективно.
Чому асинхронне спілкування відрізняється
Розмова має тон голосу, вираз обличчя і миттєвий відгук. Асинхронне повідомлення не має жодного з цих параметрів. Лаконічне повідомлення, яке звучало б як неформальний лист, можна прочитати як образливе у повідомленні Slack. Неясне запитання, яке можна було б розв’ язати за допомогою швидкого питання під час зустрічі, може заблокувати когось на день.
Принципи для хорошого асинхронного зв’ язку:
- ** Будь чітким. ** У першому реченні вкажіть свою мету.
- ** Будь повним. ** Передбачайте наступні питання і відповідайте на них заздалегідь.
- ** Бути дійсним. ** Вкажіть, що вам потрібно і до якого часу.
- ** Будьте чітким. ** Slack не є офіційним електронним листом, але він все одно повинен бути чітким.
Повідомлення Slack і Teams
Відкриття гілки з чіткою метою
Перший рядок повідомлення Slack має негайно повідомити читачеві про зміст цієї гілки і про те, що вам потрібно.
Прошу про допомогу:
«Швидке запитання про платіжну службу — чи підтримує кінцева точка
create_chargeключі ідемпотентності? Я хочу переконатися, що ми не подвоїмо плату за повторні спроби»
- Нет, не надо “Я отримую нерегулярний 502 від аутентифікаційного шлюзу в стадії. Кто-нибудь видел это раньше? Помилка почалася після розгортання о 14:00 UTC»
** Спільне використання інформації: **
Процитовано 2011-01-13. «Heads up: the AWS account limits for Lambda concurrent executions in eu-west-1 have been raised from 1,000 to 3,000 — the request we filed last week was approved»
- Нет, не надо FYI: кінцева точка
user-service/healthпочала повертати 200 з тілом відповіді{\"status\":\"degraded\"}— балансувальник навантаження вважає його здоровим, але сама служба повідомляє про проблеми
Запит:
“Чи не могли б ви переглянути PR #482, коли у вас буде можливість? Це невелика зміна — додано логіку повторення до зовнішнього webhook сповіщення. Оцінений час перегляду: 10 хвилин»
- Нет, не надо “Чи може хтось схвалити план Терраформи в каналі
infra-changes? Нам потрібно, щоб він був об’єднаний до 17:00 вікна розгортання»
ФІЙІ проти дії вимагає розрізнення
Однією з найкорисніших навичок у асинхронному спілкуванні є чітке повідомлення про те, чи вам щось потрібно, чи ви просто ділитеся інформацією.
| Signal | Meaning | Example |
|---|---|---|
| FYI / heads up | No action needed, information only | ”FYI: the staging DB will be in maintenance from 02:00–03:00 UTC tonight.” |
| Question | You need an answer | ”Quick question: is the rate limit per user or per API key?” |
| Action required | You need someone to do something | ”Action required: please review and merge PR #501 before EOD.” |
| Blocking | Something cannot proceed until this is resolved | ”Blocking: waiting on your approval to proceed with the database migration.” |
Цей форматування допомагає читачам сортувати повідомлення, особливо під час роботи у різних часових поясах.
Оновлення стану в Slack
У асинхронних командах очікуються регулярні оновлення стану. Хороші короткі, структуровані і скановані.
** Щоденне оновлення (асинхронний формат): **
“Вчора: Завершено рівень кешування для кінцевої точки пошуку. Частота влучень у кеш становить 87% при стадіонарному режимі. Сьогодні: початок інтеграційних тестів для нового потоку. Потрібні тестові дані користувача від @ alice. Блокери: ніхто»
** Поступове оновлення серед завдання: **
«Швидке оновлення щодо міграції: ми мігрували 60% даних (6 млн з 10 млн рядків). ETA для завершення на поточній швидкості: ~ 3 години. Поки що немає помилок — моніторинг глибини черги»
** Заблоковано / очікується оновлення: **
“Оновлення: Я заблокований, очікую на підписання сертифіката від безпеки. Я надіслав запит (квиток SEC-841), але ще не отримав відповіді. Якщо це не буде вирішено до завтра ранку, це затримає випуск»
Виразити невідкладність без тиску
Асинхронне спілкування вилучає сигнали невідкладності в реальному часі. Використовуйте чітку мову, щоб передати, наскільки важливо щось у певний момент часу, не звучачи агресивно.
Невелика невідкладність:
«Не спеши — просто флагшток це, коли ви маєте пропускну здатність.»
- Нет, не надо «Якщо ти маєш на цей тиждень момент, це буде чудово»
- Нет, не надо «Не блокую нічого зараз — низький пріоритет»
Средняя срочность:
«Ми б хотіли, щоб це було до кінця цього спринту, якщо це можливо»
- Нет, не надо «Надіячись вирішити це до виходу в п’ятницю — чи це можливо?»
** Високий рівень невідкладності (поясніть чому): **
«Це чутливе до часу — нам потрібно, щоб розгортання було схвалено до 17:00 UTC сьогодні, тому що вікно обслуговування закривається о 18:00»
- Нет, не надо “Плакатування цього як невідкладного: кількість 500 помилок зростає і вже перевищила поріг SLO. Чи може хтось подивитися на це в найближчі 30 хвилин?»
Непояснена невідкладність («потрібно це якомога швидше») створює стрес без контексту. Завжди пояснюйте, чому щось має бути зроблено в короткі терміни.
Признаю и подтверждаю
Коли хтось надсилає вам елемент дії або важливе оновлення, підтверджуйте його, особливо у асинхронних контекстах, де мовчання означає « Я ще не бачив цього »
Процитовано 2014-04-02. «Відкриття 48-ї річниці від дня народження»
- Нет, не надо «Підтверджено — тестове середовище готове для вашого тестування»
- Нет, не надо “Заметил, спасибо. Я буду координувати з командою інфраструктури про оновлення сертифіката. ”
- Нет, не надо «Я бачив це — зараз розслідую. Буде оновлена гілка»
Швидке підтвердження запобігає наступним повідомленням, що запитують «Чи бачите ви моє повідомлення?» — дуже поширене джерело асинхронного тертя.
Коментарі запитів на вивантаження
Коментарі PR є асинхронним зв’ язком з кодом як контекстом. Мова має значення: молодший інженер, який читає тупий коментар до свого коду, може неправильно інтерпретувати тон.
Словник для перегляду коду
Предлагаю (не наказую):
“Чи можемо ми витягнути це в допоміжну функцію? Він використовується в трьох місцях і отримає користь від єдиного джерела правди»
- Нет, не надо «Один варіант тут буде використовувати
Array.reduceзамість шаблону forEach + push — це робить намір яснішим»- Нет, не надо “Що ви думаєте про додавання коментаря тут, пояснюючи, чому тайм-аут становить 30 секунд? Майбутні читачі можуть запитати»
Викликає занепокоєння (з обґрунтуванням):
“Це трохи турбує мене - якщо API попереднього рівня повільний, цей синхронний виклик заблокує всю нитку запиту. Чи варто було б зробити цей асинхронний? ”
- Нет, не надо “Я не впевнений в цьому підході в масштабі. Якщо у нас є 10 000 активних користувачів, це викликає 10 000 анульованих кешів одночасно. Чи є варіант заповнення? ”
** Блокування (серйозні проблеми): **
“Блокування: це вводить вразливість введення SQL — введення користувача інтерполюється безпосередньо в рядок запиту. Нам потрібні параметризовані запити тут, перш ніж це може бути об’єднано»
- Нет, не надо «Це призведе до зміни для існуючих клієнтів — поле відповіді буде перейменовано. Нам потрібен шлях відмови»
** Неблокуючі спостереження: **
«Nit: typo on line 47 —‘recieve’ should be’receive’» (англійською)
- Нет, не надо “Не блокування, але: ми обговорювали використання шаблону сховища для такого роду запиту в нашому останньому архітектурному огляді. Варто розглянути для послідовності»
- Нет, не надо «Необов’язкова пропозиція: ім’я змінної
dна рядку 23 не дуже описове —deadlineабоdueDateдопоможе читабельності»
Схвалення:
«LGTM — хороший вибір. Стратегия анульування кешу набагато чистіша, ніж попередній підхід»
- Нет, не надо “Відмінно виглядає. Я залишив одну ніт, але щасливий, що це з’єдналося»
- Нет, не надо “Схвалено. Гарне використання шаблону circuit breaker тут — це саме те, як інші служби в коді обробляють це»
Скорочення, що використовуються у коментарях PR
| Abbreviation | Meaning |
|---|---|
| LGTM | Looks Good To Me — approval |
| nit | Nitpick — a minor style or wording suggestion, non-blocking |
| WIP | Work In Progress — draft PR, not ready for review |
| RFC | Request for Comments — seeking feedback before deciding |
| ACK | Acknowledged — I’ve seen and understood this |
| PTAL | Please Take A Look |
| IIRC | If I Recall Correctly |
| AFAIK | As Far As I Know |
| TBD | To Be Decided |
Ел. пошта для розробників
Електронна пошта менш негайна, ніж Slack, але використовується для офіційних рішень, міжкомпанійного спілкування, кореспонденції з постачальниками і будь-чого, що потребує офіційного запису.
Шаблони рядків теми
Рядок теми є першим (а іноді єдиним) елементом, який отримувач прочитає. Будь конкретним.
** Хороші рядки теми: **
Процитовано 25 березня 2015. Action required: approve Q2 infrastructure budget by March 25
- Нет, не надо Процитовано 15 березня 2015. Postmortem findings — database outage March 15 — action items
- Нет, не надо «Відкриття: стратегія для нового двигуна рекомендацій»
- Нет, не надо Технічне запитання: поведінка обмеження швидкості на вашій кінцевій точці
/events
** Слабкі рядки теми: **
“Продолжение” *(О чем? Звідки? (рос.)
- Нет, не надо «Швидке запитання» (Про що?)
- Нет, не надо «FYI» (Яка інформація?)
Початкові рядки електронної пошти
Пропустити «Я сподіваюся, що цей лист знайде вас добре» — це заповнення. Відкрийте з метою.
Запит:
«Я пишу, щоб попросити вашу згоду на план витрат на інфраструктуру Q2, що додається»
- Нет, не надо «Чи можете ви переглянути специфікацію API в долученому документі і дати нам знати, чи пропоновані зміни є зворотно сумісними з вашою інтеграцією?»
** Спільне використання інформації: **
“Я хотів би повідомити вас, що заплановане вікно обслуговування для служби автентифікації було перенесено з 20 березня на 27 березня.”
- Нет, не надо Цей електронний лист підсумовує результати зустрічі з перегляду архітектури, що відбулася 18 березня 2026 року
Підтвердження:
“Я продовжую свою електронну пошту від 10 березня щодо відновлення сертифіката SSL. Ми ще не отримали підтвердження, і сертифікат закінчується 2 квітня»
- Нет, не надо «Як продовження нашої дискусії минулого тижня: ми завершили тестування навантаження і я долучив результати.»
Структурування технічного електронного листа
Для будь- якої електронної пошти, довжиною більше двох речень, використовуйте чітку структуру:
- ** Призначення ** — Про що йдеться у цій ел. пошті (перше речення)
- Context — Тло, яке потрібно отримувачу
- ** Подробиці ** — Основний вміст
- ** Дія ** — Що вам потрібно, від кого, до якого часу
- ** Закрити ** — Коротка, професійна відмова
** Приклад: оголошення про зміну API для партнерів **
Тема: Зміна API платежів — дії потрібні до 1 квітня
- Нет, не надо Кому: [Технічні контакти партнера]
- Нет, не надо Ми пишемо вам, щоб повідомити вас про зміну API платежів, яка вступить в силу 1 квітня 2026 року.
- Нет, не надо ** Що змінюється: ** Поле
user_idв відповіді/v2/paymentsперейменовано наexternal_user_id, щоб вирівняти з нашим загальним для платформи договором про назви. Запити, що використовують стару назву поля, продовжать працювати до 1 квітня, після чого буде підтримуватися тількиexternal_user_id.- Нет, не надо ** Що вам потрібно зробити: ** До 1 квітня оновіть будь-який код інтеграції, який читає поле
user_idз відповіді/v2/payments, щоб використовуватиexternal_user_id. Це єдина зміна, яка потрібна.- Нет, не надо ** Де отримати допомогу: ** Якщо під час перенесення ви зіткнетеся з якимись проблемами, будь ласка, зверніться до нашої команди підтримки розробників за адресою api- support@ example. com. Посібник з переходу доступний за адресою https://docs.example.com/migrations/payment-v2.
- Нет, не надо Будь ласка, дайте нам знати, якщо у вас є якісь питання.
Jira та інструменти керування проектами
Під час написання квитків, описів і коментарів у Jira (або подібних інструментах) принципи такі ж: бути чітким, бути повним, включати контекст.
Написання чіткого звіту про помилку
** Заголовок: ** Спроба входу до системи зазнає невдачі з помилкою 500, якщо електронна пошта містить символ + (знак плюс)
- Нет, не надо Кроки для відтворення:
- Європа Перейти до сторінки реєстрації 2-й. Введіть адресу електронної пошти, яка містить символ + (наприклад, user+test@ example. com) 3-й. Введіть правильний пароль 4-й. Натисніть « Вхід »
- Нет, не надо ** Очікуваний результат: ** Користувача було введено до системи і перенаправлено на панель приладів
- Нет, не надо ** Фактичний результат: ** HTTP 500 Внутрішня помилка сервера. На вкладці Мережа показано, що запит надіслано, але відповідь порожня.
- Нет, не надо ** Середовище:** Продукційна, Chrome 122, macOS 14.3.1
- Нет, не надо ** Примітки: ** Адреси електронної пошти без знаку + працюють правильно. Це стосується приблизно 3% наших зареєстрованих користувачів, які мають псевдоніми +.
Запис запитів на можливості
** Заголовок: ** Додати сторінкування за допомогою курсора до кінцевої точки / reports
- Нет, не надо ** Чому: ** Поточний спосіб сторінкування за допомогою зсуву спричиняє повільне виконання запитів на сторінках 50+ великих наборів результатів. Кінечну точку звітів часто запитувало з панелі адміністрування для наборів даних з 100 000 і більше рядків.
- Нет, не надо ** Критерії прийняття: **
- Кінечна точка приймає необов’ язковий параметр
cursor- Відповідь містить поле
next_cursor, якщо існує більше результатів- Без курсора, кінцева точка повертає першу сторінку (типово 50 результатів)
- Стрічковування за зміщенням продовжує працювати для зворотньої сумісності протягом 3- місячного віконця знищення
Завершальний роздум на реєстрі
Асинхронне спілкування у технічних командах зазвичай є неформальним — повідомлення Slack не потребують « Дорогі » і « З вірою у серці ». Але вони повинні бути професійними і чіткими.
** Занадто неформальний (для робочого контексту): **
“Привіт, ти тут? У мене питання щодо розгортання”
** Відповідний (неофіційний, але професійний): **
“Гей, у тебе є хвилинка? У мене є запитання щодо процесу розгортання для платіжної служби»
Занадто формально (читається як холодно або віддалено у повідомленні Slack):
“Я пишу, щоб запитати, чи ви будете доступні для допомоги з запитом, пов’язаним з розгортанням, якомога швидше.”
Правильний регістр знаходиться між цими - чіткий, уважний і до речі. Якщо ви сумніваєтеся, напишіть, як би ви розмовляли з шанованим колегою особисто.