Як пояснити складну помилку нетехнічним зацікавленим сторонам
Вивчайте англійські фрази, структуру і комунікаційні стратегії, щоб чітко пояснити технічні вади менеджерам продуктів, керівникам і клієнтам без втрати надійності.
Пояснення складної помилки нетехнічним зацікавленим сторонам є одним з найскладніших комунікаційних викликів в інженерії програмного забезпечення. Ви перекладаєте між двома світами: точним, причинним світом коду, і бізнес-світом впливу, часових рамках і ризику. Сделай это плохо, и ты потеряешь доверие. Зробіть це добре, і ви станете відомим як розробник, який може спілкуватися — рідкісне і цінне вміння.
У цьому довіднику ви знайдете словник англійської мови, шаблони фраз і структурний підхід, які зроблять ці розмови ефективними.
Чому ці розмови йдуть не так?
Більшість розробників роблять одну з двох помилок під час пояснення вади:
** Занадто технічний. ** Вони пояснюють трасування стека, умову гонки, розподіл стека. Зацікавлена сторона киває головою, нічого не розуміє і залишає зустріч більш занепокоєною, ніж раніше.
Занадто неопределённо. Они говорят “что-то сломалось” или “есть проблема с базой данных”. Заинтересованная сторона заполняет неопределенность наихудшими предположениями.
Метою є середній шлях: достатньо конкретний, щоб бути надійним, достатньо простий, щоб бути зрозумілим, і достатньо орієнтований на дії, щоб відновити довіру.
Структура 3-х частин
Використовувати цю структуру кожен раз:
- ** Що сталося ** — простим мовою, що саме пережив користувач?
- Чому це сталося - причина, пояснена без жаргону
- Що ми робимо — виправлення, графік, і будь-які заходи обережності
Ця структура дозволяє вам зосередитися і дає учасникам все, що їм потрібно, не перевантажуючи їх.
Частина 1: Що сталося
Почати з користувацького досвіду, а не технічної причини. Зацікавлені сторони переймаються впливом перш за все.
Ключові фрази
- «Деякі користувачі не змогли завершити оформлення замовлення приблизно 40 хвилин цього ранку»
- «Починаючи з 2 години ночі UTC, панель завантаження завантажувалася значно повільніше, ніж зазвичай для клієнтів на корпоративному плані»
- «Невелика кількість користувачів отримали подвійні повідомлення електронної пошти — вони отримали одне і те ж підтвердження двічі»
Зауваження: ці описи вказують, хто був уражений, що вони пережили, і коли це сталося. Вони не згадують код.
** Коли це можливо, вкажіть кількість. ** « Невелика кількість » слабша за « менше 200 користувачів з 45 000 ». Числа зменшують тривогу, оскільки вони визначають масштаб проблеми.
Частина 2: Чому це сталося
Це те, де більшість розробників перебільшують. Ваша мета — дати причину, яка є істинною, простою і використовує аналогію, якщо поняття є абстрактним.
Аналогічні технології
Відобразити технічну концепцію у звичному вигляді:
- ** Race condition ** → « Дві частини системи намагалися оновити один і той же запис у точно такий же час — наприклад, дві людини одночасно редагували одну і ту ж комірку електронної таблиці. Результатом стали пошкоджені дані»
- ** Витік пам’ яті ** → « Сервер повільно накопичував роботу, яку так і не зміг прибрати — як стіл, який заповнюється папером швидше, ніж його можна скласти. Зрештою, у нього закінчився простір для нової роботи»
- ** Вада анульування кешу ** → « Система обслуговувала старі дані з тимчасового місця зберігання замість отримання останньої версії — подібно до читання кешованої веб- сторінки з минулого тижня. »
Ключові слова для пояснення причини
- «Причина була в тому, що…»
- «Що сталося під капотом було…»
- «Якщо сказати просто, то…»
- «По суті, два процеси конфліктували один з одним, що спричинило…»
- Це було викликано зміною конфігурації, яку ми розгорнули у вівторок, що мало непередбачуваний побічний ефект
- «Загальне питання полягає в тому, що наша система не обробляла цей крайовий випадок правильно»
Частина 3: Що ми робимо
Це найважливіша частина для зацікавлених сторін. Вони хочуть знати: це виправлено? Это повторится? Что я скажу клиенту?
Ключові фрази для виправлення
- “Ми виявили проблему о 2:47 вечора і встановили виправлення о 3:15 вечора. З того часу служба була стабільною»
- «Ми реалізували тимчасове рішення, поки ми будуємо постійне виправлення, яке буде розгорнуто до кінця тижня»
- Щоб запобігти цьому знову, ми додаємо автоматизований моніторинг, який буде попереджати нас протягом 60 секунд, якщо ця умова повториться
- Ми відклали розгортання у вівторок, поки ми розслідуємо подальші події»
«Чому це сталося?» під тиском
Іноді зацікавлена сторона розчарована і хоче відповідальності, а не просто пояснення. Ці фрази допоможуть вам визнати помилку без перебільшення вибачень або відволікання уваги:
- «Ви маєте право бути стурбовані — цього не повинно було статися. Ось що ми знаємо наразі…»
- “Ми сприймаємо це серйозно. Наш негайний пріоритет - відновлення сервісу; як тільки він стабільний, ми зробимо повний аналіз кореневої причини. ”
- “Ми маємо пост-мортальний документ готовий до четвертого з повним графіком і наші дії пунктів.”
Прийняття мови до вжитку
Різні зацікавлені сторони потребують різних рівнів деталізації:
** Менеджер продукту: ** Хоче знати вплив користувача, ETA для виправлення, і чи потрібно повідомляти про це клієнтам. Сфокусуйтесь на масштабі і часовій шкалі.
** Виконавчий / C-Suite: ** Хоче знати бізнес-ризик. Вплив на доходи? Ризик невідповідності? Не пиши більше трьох речень.
** Успіх клієнта / Підтримка: ** Хоче знати, що сказати клієнтам зараз. Дай им короткое, честное заявление, которое они смогут скопировать и вставить.
Тепер ви можете говорити технічно. Але навіть тут, ведеться з резюме і дозволяється запитати про деталі.
Ключовий словник
- ** Корінь проблеми ** — основна причина, з якої виникла вада
- ** Обсяг впливу ** — скільки користувачів або систем було вражено
- ** Обхідне рішення** — тимчасове рішення, поки розробляється постійне
- ** Відновлення ** — повернення до попередньої версії для відновлення стабільності
- ** Країнний випадок ** — незвичайна ситуація, яку не передбачалося у початковій конструкції
- ** Послідовні ефекти ** — вторинні проблеми, викликані початковою проблемою
- Postmortem — письмовий аналіз події після того, як вона була розкрита
- ** SLA ** — Угода про рівень обслуговування; зобов’ язання щодо часу роботи або продуктивності для клієнтів
Повний приклад скрипту
“Доброго ранку. Я хочу дать вам краткую обновленную информацию о проблеме с кассой с сегодняшнего утра.
- Нет, не надо Між 9:15 і 9:55 приблизно 340 користувачів отримали помилку при спробі завершити покупку. Їх не звинувачували, і не було втрат замовлень.
- Нет, не надо Причиной стало изменение конфигурации, которое мы вчера развернули. По суті, дві служби намагалися записати в один і той же запис замовлення в той же час, що спричинило конфлікт. Уявіть, що дві людини намагаються зберегти документ одночасно — система не може визначити, яку версію зберегти.
- Нет, не надо Ми виявили проблему о 9:32 ранку і встановили виправлення о 9:55 ранку. Служба була повністю стабільною з того часу. Ми надішлемо користувачам, яких це стосується, вибачення сьогодні, і до п’ятниці ми отримаємо письмове повідомлення про наслідки, з нашими пунктами дій, щоб запобігти повторенню.
- Нет, не надо Я готовий відповісти на будь-які запитання»
Цей сценарій має 160 слів. Він охоплює всі три частини, кількісно оцінює вплив, використовує аналогію і закінчується ясним наступним кроком. Це стандарт, до якого треба прагнути.
Поняття «неперервність» використовується для позначення неперервності в мовленнєвій діяльності
Пояснення складної помилки нетехнічним зацікавленим сторонам вже є викликом. Коли ви також пересуваєтеся по нюансах професійної англійської, це може відчуватися експоненційно складніше. Метою є не просто передати що сталося, але як це сталося - і, що найважливіше, чому це важливо з їхньої точки зору. Для нерідних носіїв це часто означає боротьбу зі специфічною лексикою і структурами речень, які не можуть перекладатися безпосередньо або інтуїтивно. Сфокусування на ясності є найважливішим, але досягнення цього вимагає більше, ніж просто спрощення вашої мови; це вимагає свідомо підібраного підходу до фразування.
Однією з поширених пасток для розробників, які не до кінця вміють розмовляти англійською, є використання надмірно технічного жаргону без достатнього контексту. Фрази на кшталт «сервіс пережив несподіване погіршення продуктивності» можуть негайно пригнічувати когось, хто не знайомий з основними метриками і системами, які беруть участь. Замість цього, націлюйтеся на описи, які обрамляють проблему в термінах, які вони можуть зрозуміти. Подумайте про те, щоб перетворити ваше пояснення на історію — розповідь про те, що пішло не так, зосередившись на впливі, а не на складних деталях самого коду. Наприклад, замість того, щоб сказати « Кінечна точка API зазнала невдачі через умову перегонів », ви можете сказати « Користувачі періодично не могли отримати доступ до своїх облікових записів, що призвело до втрати замовлень ». Це змінює фокус з технічної кореневої причини на * ефект * — негайний і зрозумілий наслідок для зацікавленої сторони. Крім того, демонстрація емпатії є ключем; визнання незручностей або розчарування, викликаних помилкою, будує довіру і співпрацю.
Іншим важливим елементом є активне слухання і адаптація вашого стилю спілкування на основі особи, з якою ви розмовляєте. Менеджер продукту може бути зацікавлений у впливі на бізнес, в той час як виконавчий, ймовірно, хоче зрозуміти потенційні ризики і стратегії зменшення. Змініть мову відповідно до потреб — уникайте надто докладних пояснень для тих, хто не має технічних знань, і надайте більш докладну інформацію, якщо вас про це запросять. Не бійтеся задати прояснюючі питання: « Чи можете ви розповісти мені трохи про те, що робить ця конкретна функція, щоб я міг краще пояснити проблему? » Це демонструє залученість і гарантує, що ви вирішуєте їх конкретні проблеми. Пам’ятайте, ефективне спілкування - це двостороння дорога.
І нарешті, практикуйтеся в чіткому вираженні вашого процесу мислення, навіть якщо спочатку це здається незграбним. Почніть з простих пояснень вашої роботи колегам, які не є технічними експертами — це збільшить впевненість і плавність у поясненні складних питань. Використання точної мови — вибір слів, які точно відображають ситуацію — є важливим для уникнення непорозумінь і підтримки довіри.
# Example: Investigating a slow query using PostgreSQL's EXPLAIN ANALYZE
EXPLAIN ANALYZE SELECT * FROM orders WHERE customer_id = 123;
Після виконання цієї команди буде повернено докладні відомості щодо того, як сервер бази даних обробляв запит, зокрема, оцінювані і фактичні часи виконання кожного кроку. Зрозуміти цей вивід - особливо стовпець actual time - може бути вирішальним у поясненні вузької місцини продуктивності для зацікавленої сторони, яка не розуміє SQL або оптимізації бази даних. Ви можете сказати: “Вивід EXPLAIN ANALYZE показує, що повне сканування таблиці відбувається на таблиці ‘замовлення’, що займає приблизно 3 секунди. Це значно повільніше, ніж це повинно бути»