В процессе поиска работы мы привыкли к тому, что компании тестируют наши навыки. Но редко задумываемся, что тестовое задание — это не экзамен с единственно верным ответом, а прежде всего уникальная возможность заглянуть за внешний фасад компании.
Тестовое задание это результат работы её внутренних структур, культурных механизмов, ценностей и страхов, явно и неявно сформулированных в набор требований к новому идеальному сотруднику. Это её ДНК, упакованное в текст.
Эта статья — о том, как методы анализа контекста и внимания к «неважным» и неозвученным деталям позволили мне разглядеть в пунктах тестового задания очертания будущего рабочего места. О том, почему я принял решение не отправлять выполненную работу (после шести дней разбора заданий).

В данный момент я, как и многие, активно ищу работу. Ес свои сложности, на некоторые отклики я получаю формальные отказы, иногда мне не подходит условия работы из вакансии, бывает и так, что в данный момент под меня нет места, но просят подождать до нового проекта. Это сложный путь, стресс от мониторинга вакансий, составления сопроводительных, немного моральной дилеммы «завышать опыт или нет». Для многих классика и рутина.
И вот случилось — я увидел вакансию (стажировка), которая идеально подходила мне по требованиям, оформил заявку и получил тестовое. В момент открытия документа я чувствовал себя как заряженный боксер перед главным поединком своей карьеры.
Тестовое не разочаровало, это был плотный трёхсоставной бриф, от проектирования ИС до анализа верификации сертификата сервера. Так что время заваривать кофе, открывать ИИ‑шку и запускать VS‑code для первых заметок.

1. Суть первого задания: «У неизвестного заказчика существует проблема — на общем принтере печатаются секретные документы, контроля за этим делом нет, решить надо программным способом через дополнение ПО на принтере и на компьютерах сотрудников.» Дальше по этому контексту формируются под‑задания, решение которых и надо скинуть.
2. Предварительный анализ.
Т.к. задача подразумевала положение в разработке ИС с нуля, то, перед выполнением «конкретных этапов», я решил сформировать контекст задачи. В данном контексте я решил явно выделить «известное» и «неизвестное» (по координатам: физический, процессорный, иерархический, технический, регуляторно‑правовой, исторический, культурный). Спойлер: неизвестно было практически всё.
Почему важно выделить контекст до этапа проектирования
Этот этап для меня лично очень важен тем, что он позволяет сэкономит кучу нервов и сил уже в момент разработки программного обеспечения. Все‑таки информационная система не существует в вакууме, она не является серебряной пулей, заменяющий существующий процесс. Именно поэтому мне важно понять контекст, который формирует мотивацию, понять базовый набор «акторов» всех уровней, что в конечном итоге влияют как на создание, так и на поддержку продукта.
Как говорили классики «плохой процесс после автоматизации — автоматизированный плохой процесс».
Первым звоночком для меня стало отсутствие в контексте задачи трёх ключевых категорий для начала разработки любого (технического, либо другого) решения: «ответственные и заинтересованные стороны», «исторические» предпосылки и ресурсные рамки решения.
Выделение мотивации
В‑общем, мотивация появления данного задания была мной сформулирована в рамках: «В неизвестный момент неизвестными людьми был обнаружен и зафиксирован факт того, что в процессе печати конфиденциального документа на общедоступном принтере сотрудники (неизвестно без определенных прав или уровня доступа) имеют физический доступ к конфиденциальному документу во время и после печати.»
Тут стоит выделить, что мотивация и «боль» в рамках мотивации — это две разные сущности. Мотивация формулирует «боль» таким же образом, как «общий» контекст формулирует мотивацию.
3. Формулировка боли.
Далее я сформулировал «боль» данной задачи, а именно: «В текущей ситуации, сотрудник с правом доступа либо не может, либо не хочет находиться рядом с принтером в течение всего процесса печати.»
4. Итоговое решение.
Задав десять вопросов, которые бы ограничили варианты решений уже до этапа проектирования, я создал себе систему координат. В зависимости от конфигурации метрик контекста были предложены три варианта (карточки, PIN — код и таймер печати).
Подробное описание вариантов
Вариант 1: Реалистичный (картоприёмник + хранение документов до печати на принтере) Документ маркируется как требующий физического присутствия владельца. Пользователь аутентифицируется с помощью корпоративной карточки на принтере. Печать начинается только после вставки карточки, которая остаётся в картоприёмнике на весь процесс печати. Принтер отслеживает завершение печати и автоматически возвращает карточку пользователю, фиксируя факт выдачи документа в логах. *По первому варианту ещё была нарисована UML seq диаграмма и были расписаны шаги процесса.
Вариант 2: Минимальный (PIN‑код + запрос с компьютера) Документ маркируется как требующий физического присутствия. Пользователь вводит PIN‑код на принтере для старта печати, после чего принтер запрашивает документ у рабочего компьютера. Печать продолжается до завершения, а действия фиксируются в логах. Физический контроль ограничен — печать останавливается только при ошибке аутентификации.
Вариант 3: Минимальный/по времени (заявка на печать) Пользователь оставляет заявку на печать документа через корпоративное приложение с указанием времени печати. Принтер распечатывает документ в назначенное время, после чего пользователь забирает его самостоятельно. Новый софт фиксирует факт подачи заявки и получения документа, но не отслеживает физическое присутствие пользователя во время печати. Ограничение доступа осуществляется только организационными средствами (расписание и логирование).
Первая рефлексия
Вроде бы задание завершено, но вот в чём шутка — ни одно решение в данном задание не облегчает жизнь обычному сотруднику. И безопаснику в рамках компании тоже жить не проще. Хорошие ли это решения, была ли альтернатива? Не знаю, в контексте сказано не было.

1. Суть второго задания: разбор и составление списка проверок, которые совершаются браузером при проверке сертификата сервера в рамках протокола TLS v1.2.
2. Выбор уровня абстракции и представления.
Задача по большей мере техническая, и поэтому техническому специалисту достаточно открыть мануалы (можно даже две статьи на хабре, по TLS v1.2 и сертификатам x509.v3).
Но ведь это не решение в рамках системного анализа. Так что я решил, раз низкоуровневое представление (достаточно плотное) уже есть, а ко всему тестовому есть приписка «углубляться в технические детали не нужно», то можно (и корректно) декомпозировать алгоритм проверки не на уровни проверок (слои TLS, PKI, x509.v3), а составить список групп проверок для незнакомого с технической спецификой читателя.
3. Итоговое решение.
Я "прокурил" мануалы (протоколы описывают в очень специфичной манере), сделал представление в виде кода (мне лично так удобней разбивать сущности и абстракции в рамках ответственности и этапов), составил UML диаграмму (посмотрел и ужаснулся, но как уровень "дна" сложности вариант подошёл). В итоге, после всей этой работы, получилась разбивка на четыре вида проверок:
Проверки соответствия синтаксического формата
Проверки доверия
Проверка целостности
Проверка актуальности
Более подробное описание проверок
1) Проверки соответствия синтаксическому формату
Проверка того, что структура и кодирование всех полученных данных соответствуют ожидаемым протоколам (TLS) и стандартам (X.509). Это базовая проверка «читаемости» и корректности данных перед тем, как применять к ним логику бизнес‑правил.
2) Проверки доверия
Проверка происхождения сертификата и полномочий издателя. Цель — установить, что сертификату можно доверять, потому что он был выдан доверенной стороной (Удостоверяющим Центром, УЦ).
Это достигается путем построения цепочки доверия и проверки полномочий УЦ.
Построение цепочки доверия: Проверка того, что сертификат сервера связан через цепочку промежуточных сертификатов с корневым УЦ, который предустановлен в хранилище доверенных корневых сертификатов браузера.
Проверки полномочий УЦ: Подтверждение того, что каждый УЦ в цепочке действительно имел право выдавать сертификаты (был уполномочен на это вышестоящим звеном).
3) Проверка целостности
Криптографическая проверка того, что данные сертификата не были изменены после его выпуска УЦ. Это подтверждается проверкой цифровой подписи УЦ на каждом сертификате в цепочке с использованием открытого ключа этого УЦ.
4) Проверка актуальности и валидности
Всесторонняя проверка того, что сертификат действителен для использования в данном конкретном контексте и в данный момент времени. Включает:
Временную валидность: Срок действия сертификата (notBefore, notAfter) включает в промежуток текущую дату и время.
Статусную валидность: Сертификат не был отозван своим издателем.
Контекстную валидность: Сертификат предназначен для запрошенной услуги (аутентификация сервера, а не подпись кода) и выдан для конкретного доменного имени, к которому обращается клиент (проверка по полю Subject Alternative Name).
В итоге, получилась разбивка по базовой тройке ИБ + проверка на актуальность.
Вторая рефлексия
Для чего мне понадобится разбирать протоколы обмена данными и подтверждения доверия вообще без упоминания контекста? Кому мне бы пришлось объяснять этот протокол?

«Ничего, справимся» подумал я и начал с классического уже разбора контекста. Но вдруг оказалось, что боли то нет. В рамках задачи нет мотивации (и истории и стейкхолдеров). т. е. нет главного вопроса, на который я должен был бы ответить при проектировании ИС: «А нафига?».
Пришлось формулировать последующую из задания мотивацию:
«Мотивация заключается не в автоматизации существующих задач, а в создании нового центрального актора — „Процесс‑Системы“. Его внедрение преобразует сеть из слабо связанного набора разрозненных активностей в устойчивую, управляемую и предсказуемую конфигурацию, способную гарантированно достигать заданного бизнес‑результата и соответствовать регуляторным требованиям. Сквозной процесс является не целью, а следствием — внешним проявлением внутренней логики этого нового актора.»
3. Промежуточное решение с использованием методологии акторно‑сетевой теории.
После составления карты а кторов в рамках автоматизации общего процесса и выявления этапов его «жизни», я пришёл к выводу о том, что задание буквально говорило — создай автоматизированный контролирующий процесс элемент, вход в рамки зоны ответственного которого со стороны клиента — подпись под разрешением на хранение и обработку персональных данных.
Дальше дело осталось за формальными (но важными) этапами — формирование различных представлений в рамках диаграмм, составления списков use case и user story для формализации взаимодействия человеческого взаимодействия с системой и ER‑диаграмму для выбора формата хранения отражения акторов в рамках системы. Но я этого не сделал, потому что споткнулся о...
Последний абстрактный вопрос в рамках решения задач.
После внедрения данной системы вполне возможно становиться избавиться как от человеческой верификации, ранжира и даже самого подающего вопрос. Система становится самодостаточна, причём на этапе проектирования закладывалась замена определенных функций автоматизацией. Корректное ли это реализация этого решения без точного знания культурного и исторического контекста, стейкхолдеров?

И тут я призадумался. Осмотрел уже проделанную работу над тестовым в полной совокупности и выделил несколько общих элементов в рамках заданий. Спасибо предварительному анализу контекста, который позволил явно зафиксировать «неизвестное», т. е. по мнению составителя тестового «неважное».
Вот итоговый список моих сомнений:
Проектируемые и разбираемые системы не облегчают жизнь использующим их людям. Они, наоборот, усложняют её или заменяют людей.
Отношение к человеку, как к точке риска. Замещение личной ответственности и доверия на автоматизированную.
Отсутствие этической или культурной рефлексии, замещение её рефлексией технической в рамках задачи.
Именно совокупность этих трёх пунктов убедила меня в том, что стоит остановиться и проанализировать доступную информацию о компании N.

Гипотеза доказывается от противного и я честно попытался, ведь если развеять сомнения, то уже ничего не будет разделять меня и приятную во всех смыслах вакансию. Так что, искренне надеясь на свою неправоту, я приступил к последней части анализа.
Нашёл отзывы сотрудников компании, но не встретил в них опровержение гипотез. Подтверждения находил и это был не один отзыв.
Посмотрел на то, какие продукты создаёт компания, какие исследования проводит. Ни одного опровержения.
Посмотрел, с кем сотрудничает данная компания.
Изучил страницу компании «почему мы».
Изучил вакансию на СА, а не на стажировку.

В итоге, опровержение не нашлось. Может плохо искал, может предвзято отнёсся.
Но как аналитик, по заветам Латура, я был обязан пройти цепочку акторов, куда бы она меня не завела. Как итог — тестовое отправлено не было.
Комментарии (10)
serginfo2009
26.08.2025 22:43Честно говоря, в какой-то момент вообще перестал понимать, про что статья.
beskov
26.08.2025 22:43Статья иллюстрииует, что такое аутоэрогенная асфиксия
consentire Автор
26.08.2025 22:43об исследованиях трансперсонального опыта как основы аутоэрогенной асфиксии*(надо меньше читать постмодернистов))
consentire Автор
26.08.2025 22:43Если коротко, то статья про четыре вопроса дизайна приложений:"Для кого? Каким образом? На чьи деньги? Какие последствия?". И про то, как анализ тестового показал - ответы потенциального работодателя не совпадают с моими.
beskov
26.08.2025 22:43Вспомнился текст
Microsoft boy announces homework
consentire Автор
26.08.2025 22:43да, очень похоже. Я тут подумал, (возможно) долгое нахождение в рамках дискурса продуктов микров автором превратило эту статью в формат документации практических примеров мелкомягких.
Tyuli
26.08.2025 22:43Сам факт тестового задания уже говорит о том, что облегчать Вашу жизнь данный работодатель не намерен.
consentire Автор
26.08.2025 22:43Это точно, хоть процесс найма для меня пока что неявен в рамках SA/BA. Тестовое было интересным, многовекторное, в техническом плане очень продуманное в том смысле, что можно было развернуться и поиграть инструментами анализа. Если бы не неприятная подтвержденная гипотеза, то с радостью бы попытался устроиться туда. Но уже пару раз устраивался на работу "вопреки" ощущениям(за что платил в итоге нервами и силами), тут хотя бы смог чётко оформить сомнения и избежать ошибки.
aggromarus
прочитав статью наискосок, сдается мне, что ИИ не закрылась вплоть до публикации статьи
consentire Автор
Это очень удобный инструмент для самокритики и рефлексии во время написания и пост анализа статьи. Для меня это уже на уровне блокнота с автозаметками(автопоэзия, получается).