Files

8 lines
18 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"index": 84,
"slug": "editorial-2025-09-practice-engineering-interviews",
"title": "Инженерное интервью: рубрика и рабочая проба вместо экзамена по терминам",
"excerpt": "Практический маршрут для технического разговора: ограниченная роль, рабочая проба, наблюдаемые критерии и учебный hand-off без оценки человека.",
"contentHtml": "<p>Инженерный разговор часто ломается ещё до первого вопроса: ведущий разбора (interviewer) спрашивает определение термина, получает уверенный ответ и принимает его за способ работы. Симптом заметен в разборе: нельзя показать, какой факт человек отделил от догадки и где остановился бы без доступа. Цена ошибки — несколько часов команды уходят на спор о впечатлении, а следующая техническая задача снова приходит без проверяемого плана.</p>\n<p>Причина не в том, что терминов стало мало. У разговора нет role rubric — короткого контракта о наблюдаемой работе. Проверка проста: дать одну ограниченную рабочую пробу с неполным входом, заранее записать критерий и запретить вывод, которого evidence не поддерживает. Действие — закончить упражнение только synthetic hand-off, то есть учебным запросом недостающего факта, а не оценкой личности или исходом найма.</p>\n<h2>Рубрика начинается с работы, а не с качеств человека</h2>\n<p>Для начала полезно убрать слова «сильный инженер», «подходит команде» и «хорошо рассуждает». Это ярлыки: два reviewer-а вкладывают в них разные наблюдения и не могут восстановить решение через неделю. Рубрика вместо этого называет границу работы. В нашем учебном случае нужно разобрать stale ответ API с тремя fixed literals. Неизвестны правило origin, владелец интеграции и безопасный rollback. Значит, проверяем не память о cache header, а порядок: назвать известное, запросить недостающее, не выдавать change за проверку.</p>\n<figure><img src=\"/assets/editorial/2025/engineering-interviews-2025-rubric-work-sample.svg\" alt=\"Схема synthetic инженерной пробы: role rubric задаёт три наблюдаемых измерения, fixed вход ведёт к observation и unknown, затем reviewer формирует только запрос недостающего доказательства.\" loading=\"lazy\" /><figcaption>Рубрика ограничивает работу до того, как начинается разбор. На схеме нет имени, рейтинга или решения о человеке.</figcaption></figure>\n<div class=\"table-scroll\"><table><caption>Минимальная role rubric для fixed упражнения</caption><thead><tr><th scope=\"col\">Измерение</th><th scope=\"col\">Что можно увидеть</th><th scope=\"col\">Чего нельзя выводить</th></tr></thead><tbody><tr><td>Граница доказательства</td><td>Отдельно названы факт, unknown и следующий источник</td><td>знание всей системы или качество человека</td></tr><tr><td>Безопасность изменения</td><td>Есть read-only проверка и stop condition</td><td>право выполнять change</td></tr><tr><td>Техническая коммуникация</td><td>Symptom связан с проверкой короткой цепочкой</td><td>скорость работы в настоящем проекте</td></tr><tr><td>Исключено</td><td>Личность, память терминов, cultural fit</td><td>любое итоговое решение</td></tr></tbody></table></div>\n<h2>Собираем рабочую пробу с ограниченной поверхностью</h2>\n<p>Рабочая проба не обязана копировать настоящий сервис и не должна просить доступ к нему. Её задача — оставить ровно столько материала, чтобы виден был маршрут мысли. Поэтому fixed карточка хранит response header, route name и rollback note как литералы в памяти. В ней нет репозитория, сети, логов, времени, аудио или персональных данных. Такой объём нарочно тесный: если для следующего действия нужен внешний факт, хороший результат — остановка и корректный запрос, а не уверенная догадка.</p>\n<p>OPM в датированном руководстве 2008 года связывает вопросы и шкалы с анализом конкретной работы, а не с общим впечатлением. Для технической заметки из этого следует более узкое правило: каждый criterion должен иметь observable form — фразу, артефакт или порядок шагов, который можно показать на одной пробе. Источник не доказывает, что наша рубрика верна для другой роли. Он только поддерживает дисциплину «задача → критерий → наблюдение», которую можно проверить до использования.</p>\n<h2>Воспроизводимый пример: принять только фиксированный вход</h2>\n<pre><code>import {\\n createFixedInterviewInput,\\n inspectEngineeringInterview,\\n} from &#039;./upgrade-2025-09.mjs&#039;;\\n\\nconst input = createFixedInterviewInput(&#039;fixed-valid-v1&#039;);\\nconst report = inspectEngineeringInterview(input);\\n\\nconsole.log(report.accepted); // true\\nconsole.log(report.handOff); // &#039;request-missing-evidence-only&#039;\\n// Fixed data stays in memory; the example does not invoke external systems.</code></pre>\n<p>У примера есть намеренно скучное свойство: он не возвращает score. В accepted ветке результатом становится запрос origin rule и сохранённое stop condition. Это проверяемый hand-off между частями упражнения, а не автоматическая оценка. Если заменить fixed literal на реальный репозиторий или попытаться вынести «подходит/не подходит», инспектор должен остановиться. Такой отказ полезнее красивой таблицы баллов: он не даёт технической модели тихо расшириться до обработки реального человека.</p>\n<h2>Как выбрать критерии, которые не дублируют друг друга</h2>\n<p>Три критерия в рубрике нужны не для полноты списка, а для трёх разных ошибок. Evidence boundary ловит выдуманную причину: header увидели, а origin rule не видели. Change safety ловит опасный следующий шаг: из симптома сразу делают правку policy. Technical communication ловит потерю связи между symptom и проверкой: вместо маршрута остаётся набор слов про кеш. Если два критерия требуют одного и того же предложения, один из них лишний. Например, «знает HTTP» и «знает Cache-Control» оба заставляют вспоминать термин, но не показывают работу с неопределённостью.</p>\n<p>У каждого критерия полезно записать контрпример. Для границы доказательства контрпример — «max-age=0 значит origin сломан». Для безопасности — «сразу выставим новый TTL». Для коммуникации — «тут сложная кеш-инвалидация». Контрпример не нужен, чтобы поймать человека на ошибке. Он проверяет саму rubric: reviewer заранее видит, какую фразу нельзя принять за evidence. Если контрпример невозможно написать без биографии, интонации или предполагаемых мотивов, criterion надо заменить на наблюдаемую операцию.</p>\n<h2>Порядок одного практического прохода</h2>\n<ol><li><strong>Назвать work boundary.</strong> Одним предложением записать результат упражнения и то, чего оно не делает.</li><li><strong>Выбрать один symptom.</strong> Оставить в карточке только те literals, которые нужны, чтобы сформулировать unknown.</li><li><strong>Связать criterion с наблюдением.</strong> У критерия должна быть наблюдаемая форма, а не оценочное прилагательное.</li><li><strong>Записать stop condition.</strong> Показать, когда дальнейшее действие потребует реального доступа или неподтверждённой причины.</li><li><strong>Провести review отдельно.</strong> Сначала reviewer фиксирует observation, затем interpretation; не смешивает два шага в одну заметку.</li><li><strong>Собрать synthetic hand-off.</strong> Разрешить только запрос недостающего evidence или остановку; не производить hiring outcome.</li></ol>\n<h2>Почему вопрос на термин даёт ложную экономию</h2>\n<p>Вопрос «что такое stale-while-revalidate?» дешёв в проведении, но почти не показывает, как человек ограничит изменение, когда header противоречит ожиданию. Можно знать определение и всё равно не спросить, где origin rule, кто владеет интеграцией и можно ли откатить header. Можно не вспомнить термин, но сначала назвать факт, неизвестное и безопасный способ получить следующий сигнал. Поэтому память может быть вспомогательным контекстом, но она исключена из criteria этого учебного упражнения.</p>\n<p>Цена более строгой пробы тоже есть: её нужно собрать, прочитать вслух и проверить на лишние подсказки. Слишком широкий сценарий превращает разговор в проектирование системы; слишком узкий — в угадывание формулировки. Полезный компромисс — одна техническая развилка и явная граница evidence. Если reviewer не может объяснить, зачем в карточке каждый literal, его лучше удалить. Нагрузка уменьшается не сокращением критериев до одного впечатления, а сокращением поверхности до проверяемой задачи.</p>\n<h2>Граница evidence и следующий шаг</h2>\n<p>Граница этого практического упражнения жёсткая: role card, входные literals и hand-off существуют только как frozen JavaScript values в памяти. Скрипт не видит человека, не получает аудио или PII, не открывает сеть, файл, репозиторий, CI либо production-систему. Его единственная положительная ветка просит отсутствующий технический факт; ни score, ни record о личности, ни hiring outcome он создать не способен.</p>\n<p>Эта практика не обещает качество интервью, точность процесса или справедливость решения. Она не заменяет требования организации, подготовку reviewer-ов или проверку применимости роли. Её ожидаемый результат уже: после упражнения остаётся цепочка «symptom → observation → unknown → request». Следующий шаг — возьмите одну внутреннюю техническую задачу, удалите реальные данные, оставьте три fixed literals и попросите reviewer-а найти одно место, где interpretation выдана за факт. Если место найдено, рубрика ещё не готова.</p>\n<h2>Историческая граница сентября 2025</h2>\n<p>Источники ниже опубликованы не позднее сентября 2025 года: руководство OPM датировано 2008 годом, RFC 5861 — 2010-м, RFC 9111 — 2022-м. Они описывают структуру интервью и семантику кэширования, но не подтверждают пригодность конкретной рубрики, справедливость кадрового решения или поведение конкретного CDN. Синтетическая модель статьи ещё уже: она проверяет связность фиксированных записей в памяти и не имитирует реальное собеседование.</p>\n<h2>Проверяемые источники</h2><ul>\n<li><a href=\"https://www.opm.gov/policy-data-oversight/assessment-and-selection/structured-interviews\" target=\"_blank\" rel=\"noopener noreferrer\">U.S. Office of Personnel Management: Structured Interviews</a> — официальная страница описывает одинаковые заранее заданные вопросы и общую шкалу для ответов. Это подтверждает принцип сопоставимых условий, но не делает нашу инженерную пробу валидированной методикой.</li>\n<li><a href=\"https://www.opm.gov/policy-data-oversight/assessment-and-selection/structured-interviews/guide.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">U.S. Office of Personnel Management: Structured Interview Guide</a> — официальный PDF, сентябрь 2008 года; связывает разработку структурированного интервью с анализом работы, вопросами и критериями. Руководство предназначено для формально оцениваемых интервью и не является кадровой или юридической политикой этой статьи.</li>\n<li><a href=\"https://www.rfc-editor.org/rfc/rfc9111.html\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 9111: HTTP Caching</a> — стандарт IETF от июня 2022 года, описывающий кэши и директивы заголовков. Он объясняет протокол, но по одному заголовку не позволяет установить владельца правила или причину симптома.</li>\n<li><a href=\"https://www.rfc-editor.org/rfc/rfc5861.html\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 5861: HTTP Cache-Control Extensions for Stale Content</a> — стандарт IETF от мая 2010 года, определяющий <code>stale-while-revalidate</code> и <code>stale-if-error</code>. Наличие такой директивы не доказывает, что конкретный ответ должен быть изменён без проверки конфигурации и цепочки запросов.</li>\n</ul>"
}