Пишем задание для стажеров: список конкурентов ИТ продукта

от автора

Статья будет пригодится начинающим владельцам продуктов для расширения кругозора целей конкурентного исследования, бизнес аналитикам для пополнения багажа знаний продуктовыми воззрениями, а также опытным продуктоводам для экономии времени при беглом составлении списка решений аналогичных вашему стажерскими руками. Материал создан в формате пояснения к задаче с полезными ссылками для расширения кругозора.

В ней будут освещены вопросы:

  • Какие цели исследования конкурентов обычно возникают в продуктовых командах?

  • Какие бывают типовые ошибки при их выполнении?

  • Как составить полный список конкурентов, зачем он нужен регулярно обновляемый?

Если перед вами поставлена задача найти (обновить) конкурентов, пройдитесь по данному чек листу:

  1. Вы знаете какую задачу, для кого решает ваш продукт и почему он лучше конкурентов

  2. Перед вами стоят четкие сроки и формат приемки результатов

  3. Вы осознаете как дальше будут использованы артефакты вашего труда и как они повлияют на успех продукта

  4. У вас есть понимание, что творческого содержится в данной задаче, кем и как это может быть использовано

Если хотя бы на один вопрос — ответ “нет”, рекомендую прочесть данный материал и найти в себе правильные формулировки вопросов тому, кто поставил задачу для вдохновляющей деятельности.

Делаем мир лучше вместе

Практически каждый год приходится копаться в заметках и черновиках, изыскивая там письменное задание для стажерской активности по анализу рынка. Мало кто верит в пользу молодого стажерского ресурса, но пропустив через себя несколько успешных примеров, получил на практике подтверждение, что зачастую свежий, мотивированный, логично мыслящий член команды может сделать больше чем твердый укоренившийся “середнячок”. При том зачастую некоторые виды задач, к примеру, как та, что стала предметом данной статьи, вызывают сильное эмоциональное выгорание у состоявшихся профессионалов. Поэтому декомпозиция — это не только для того, чтобы можно было “употребить слона по частям”, но и для того, чтобы у каждого был шанс получить наиболее приглядный для его опыта кусочек. Обычно стажеры рады получить задание с расширенным теоретическим сопровождением, но у всегда занятых менеджеров мало времени на ликбез. Надеюсь, что данная статья поможет сделать ИТ отрасль чуть счастливее и попроще для входа новых её участников.

Каким бывает конкурентный анализ?

Перед принятием задачи на анализ конкурентов следует уточнить цель — метод достижения результата будет под каждую из них различным, но начинается всё с составления перечня конкурентов. Ниже приведены цели анализа, согласно моей практике, хотя классификация может быть и другой:

  1. Верхнеуровневый анализ конкурентов выполняется для построения, сверки vision продукта или функционального модуля продукта, roadmap. Рекомендовано делать раз в период среднесрочного планирования (квартал по SAFe или аналогам), при старте проектирования крупного функционального модуля, который по объему доработок, возможной монетизации тянет на отдельный продукт

  2. Анализ продвижения конкурентов пригодится при построении, корректировке стратегии захвата аудитории, позиционирования. Как минимум раз в период бюджетного периода (аналогично п.1), но лучше по итогам окончания рекламных волн. Выводы по причинам неуспешности методов продвижения делать без оглядки на действия соперников как минимум странно, поэтому отсутствие исследования конкурентной рекламы может свидетельствовать о некачественном подходе в продвижении

  3. Детальный анализ функции нужен регулярно при проектировании свойств товара (фичей) на среднесрочный, краткосрочный период. По сути, если за счет какого-то свойства может быть достигнуто отчетливое конкурентное преимущество, перед отрисовкой скетчей, нарезкой на релизы, стараюсь всегда проанализировать способы удовлетворения аналогичной потребности ближайшими конкурентами. При этом конкуренты важны как прямые, так и косвенные

  4. Отдельным пунктом следует выделить анализ конкурентов для узкоспециализированных целей. К примеру, лицензионные ограничения по переиспользованию их наработок, способы разрешения юридических ограничений (по использований cookies например или локализации ПД), технологические нюансы решений и др. Начинать и делать их может кто угодно в том числе и PO и аналитик, но верю, что заканчивать должен профессионал, который хотя бы раз ощутил на себе последствия неучета рисков. К примеру юрист, имеющий практику оспаривания штрафов или технический специалист, который вкушал плоды неожиданной нагрузки на узлы системы

Таблицу ниже можно использовать как бенчмаркинг при постоянной загрузке аналитика с опытом подобной работы:

Вид анализа

Кто ставит задачу?

Зачем?

Кто обычно выполняет анализ?

Как долго?

Идеальный результат в виде

Верхнеуровневый для roadmap

Инвесторы или иные владельцы бюджета

Для оценки рискованности инвестиций

PO

1-2 недели на новый продукт

Сравнительная таблица аспектов удовлетворения клиентской потребности (функций) с рейтингом по весам важности функций

Позиционирование конкурентов

PO или иное лицо, отвечающее за продажи

Для выработки стратегического позиционирования: какую big idea продать клиентам  

Digital маркетолог

1-2 недели на новый продукт

Сегментация способов позиционирования, выявление сегмента по каждому конкуренту и сравнение характеристик по каждому сегменту

Продвижение конкурентов

Для выработки тактических мероприятий по продвижению: где, как часто и с какой стороны напомнить о продукте для обеспечения лидогенерации

Digital маркетолог

1-4 недели на новый продукт

Список мест присутствия конкурентов с частотностью, охватом, агрегированными инфосмыслами и возможным бюджетом

Функциональный анализ

PO или иной владелец приоритетов backlog

Для проектирования наилучшего для потребителя технологического решения 

Аналитик (BA в частности)

до 5-и рабочих дней на функцию

Таблица сравнения функциональной реализации конкурентных решения для закрытия одной и той же клиентской потребности

Специфический анализ

PO или кто-то другой с широкими знаниями и высоким уровнем ответственности

Для закрытия гигиенических брешей продукта: ценообразование, проявленные технические характеристики, неисследованные юридические/налоговые риски и др.

Профессионал своей области: юрист, архитектор, финансист, и т.д.

до 1 мес.

Развернутое заключение с выводами, перечнем всей исходной информации и теоретическими выкладками

Общие ошибки для всех видов анализа:

  • Несоответствие целей анализа и способов проверки достижимости целей

Скрытый текст

К примеру, на стадии защиты roadmap под инвестирование по списку озвученных  питчером конкурентов формулируется вывод об осведомленности команды в отношении рынка и готовности команды принимать верные решения при получении инвестиций. Более правильный способ проверки готовности команды бороздить за чужой счет море возможностей к заработку — это факт того, что обзор представителей рынка поддержан результатами:

  • экспертного интервью. При этом эксперта не два и они независимы, с актуальной позицией их успеха в доменной области

  • глубинного интервью. И исходные данные для выводов перепроверяемы: есть транскрибация, контакты открыты, по хронологии интервью видно, что оно проводилось достаточное количество раз (см. отсылку к книге “Спроси маму”)

  • результаты MVP оцифрованы с уважением к логике и математике (читай про виды MVP)

  • Нерегулярность проводимого анализа

Скрытый текст

Получили инвестиции — в следующий раз смотрим на конкурентов только по случаю необходимости новой защиты бюджета. Обычно это ни к чему кроме как к оторванности от реалий не приводит. Здоровым для продукта следует считать регулярный критический взгляд со стороны конкурентов, потребителей. Примерно как и в зеркало мы смотримся перед важными публичными событиями, сверяясь с социальной нормой, так же стоит относиться и к воззрению на продукт, сверяясь с нормой восприятия потенциальным клиентом: раз в квартал, полугодие, год

  • Отсутствие четких критериев качества

Скрытый текст

Отсутствие четких критериев качества. Часто требования в компании по способам и целям конкурентного анализа отсутствуют и зачитываются исходя из способностей исполнителя: “Как смогли — так и сделали: главное — список есть и хоть какие-то разрезы сравнения”. Более взрослым состоянием процессов являются проявленные методологические рекомендации, которые способны выполнить стандартизированные просители и устроят толерантность к риску тех, кто принимает решения по инвестициям

Самые частые ошибки, встречающиеся в отдельном виде анализа:

Верхнеуровневый анализ для roadmap

  • Опускаются альтернативные (косвенные) конкуренты

Скрытый текст

К примеру, если вы занимаетесь разработкой конструктора документов на основании ИИ, необходимо учесть в качестве альтернативы вашему решению тех, кто сидит на настроенных google формах и плагинах с одобренными юристами шаблонами, которые уже закрывают бОльшую часть рутины

  • Нерелевантные потребности пользователей критерии сравнения конкурентов

Скрытый текст

Такое случается, когда построению критериев сравнения конкурентов не предшествуют глубинные интервью лиц, принимающих решения о покупке или пользователей продуктов. Хотя бы аналогов. В составе команд, зарождающих продукт, как правило присутствует эксперт доменной области. Делать ставку только на его опыте опасно — он может быть не универсальным и излишне приукрашенным: человеку нужно занять прочное место и быть полезным, самокритика не всегда этому способствует

  • В критериях сравнения нет места продажам и маркетингу

Скрытый текст

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

Позиционирование конкурентов

Самая частая ошибка в этом виде анализа — это отсутствие анализа причин определенного позиционирования каждого конкурента

Скрытый текст

К примеру, продукт может иметь позиционирование некоего “универсального средства на все случаи жизни”, но по факту под ним может не быть ничего кроме этого лозунга. Делать поспешные выводы только на декларации позиционирования — это может быть просчет маркетолога, а не реальная сильная сторона конкурента. Перепроверить вдумчивость позиционирования конкурентов можно через поиск возможных таких формулировок включение их в сравнительную таблицу: срок жизни продукта, функциональная насыщенность, происхождение инвестиционного капитала, анализ клиентов, помогает даже анализ опыта основателей, их интервью и пр.

Продвижение конкурентов

  • Позиционирование продукта анализируется без выделения связки персон и болей (потребностей)

Скрытый текст

У многих продуктов, в особенности B2B, есть несколько персон, которые могут повлиять на принятие решения о покупке. Для каждой из них, в идеале должен быть подобран и канал донесения информации и оптимальный разворот продукта под нужды персоны. Когда позиционирование в каналах продвижения анализируется без учета боли и персоны, которая её испытывает, упускается учет причин, которые влияют на тренды развития продукта конкурента. К примеру, если вы занимаетесь продажей HR решений для автоматизации онбординга и в качестве позиционирования применяете фразу “Уменьшение нагрузки на линейный персонал”, не факт, что это нужно ТОП менеджменту компании и что они в принципе ищут способы облегчения жизни подчиненных. В этом случае эффективнее сработает фраза: “Снижение текучки на стадии онбординга” — это уже ближе к деньгам. Такое с большей вероятностью понравится ТОПам. Когда конкурент «давит» в позиционировании не на главное лицо, принимающее решение о покупке, плохо формулирует боли — это признак непродуманной стратегии. Чем можно воспользоваться, отжав вовремя внимание ЛПРов. Но бывает так, что позиционирование временное — об этом нужно помнить

Скрытый текст

Анализ только позиционирования и мест присутствия не даст возможности критически посмотреть на финансовую модель вашего продукта, насколько цифры потенциального объема рынка к захвату коррелируют с тем, сколько имеют конкуренты и сколько для этого они тратят

  • Отсутствие разделения задач по обеспечению известности и лояльности

Скрытый текст

За первое чаще в крупных компаниях отвечает — PR, за второе — digital маркетинг. К примеру, некоторые статьи в интернете своей задачей носят напоминание пользователям о том, что продукт жив и процветает в том образе, который благоприятен для покупки. Делать выводы, что такие события позволяют привлекать лиды — ошибочно, их задача — осведомленность ЛПРов о некоторых фактах о продукте. Другое дело, что известность декларируемая с материалах может быть одна, а в народе бытовать другая. И тут уже задача не просто замерить известность конкурентов, но и узнать что осело в головах о них у вашей аудитории

Функциональный анализ конкурентов

«Правильное» функциональное решение известно ещё до того как сделаны выводы по аналогичному у других продуктов

Скрытый текст

Чаще наблюдается картина, когда еще до того как проектное решение будет оформлено, у кого-то с властными полномочиями оно уже сложилось в виде идеального образа для личной самореализации как профессионала. И именно этот образ диктуется аналитику, программисту: “Сделай просто кнопку синей”. Т.е. анализ конкурентного способа закрытия той же самой боли просто игнорируется. Самый действенный способ избегания такой ситуации — это создание регламента бизнес анализа, где под проектное решение должно быть подложено исследование пользовательских предпочтений в виде данных, результатов глубинок и др., либо исследование деталей закрытия той же самой клиентской боли от прямых или косвенных конкурентов. Исключение с благодарностью стоит воспринимать только в заказной разработке, когда за “синюю кнопку” платят особо

Специфический анализ

Неожиданное обнаружение необходимости выполнять сравнение конкурентов по специфическим критериям в связи со всплывшими рисками

Скрытый текст

Самые частые неприятные последствия наступают даже не когда срабатывают риски ради управления которыми нужен специфический профессиональный анализ, а когда эти риски не будучи проявленными вдруг всплывают с подобными фразами:

— почему никто не подумал над правильной архитектурой, как мы теперь будем делать такое же быстродействие, что есть у всех конкурентов?..
— отчего никто не считал эти обязательные отчисления, как теперь свести бизнес модель? Теперь понятно отчего мы выигрываем все тендеры..
— а что если на нас подадут в суд из-за …, как же это обходят конкуренты?

Обычно такие фразы сначала бьют по авторитету PO. Лечится такое регулярным пересмотром проектных рисков, ведь 3 месяца жизни продукта с плановым результатом и выделенными ресурсами — это уже регулярно повторяющийся проект. И плеяду инструментария проектного менеджера продуктологу знать просто обязательно

Как составить полный список конкурентов?

Прежде чем ответить на этот вопрос, сначала рассмотрим: “Как правильно должен быть структурирован идеальный перечень конкурентов?”

  1. Регулярно отслеживаемые конкуренты

Обычно это список тех, кого называют “законодателями” рынка, именно они всплывают у ваших потенциальных клиентов, которые подумали разрешить какую-ту свою потребность. И такой список обычно состоит из 3-5 названий, утвержденными PO, дабы не утяжелять периодическое исследование. По ним регулярно пересматриваются результаты анализа

  1. Новые конкуренты

Это те, которые по тому или иному алгоритму попали в ваше поле зрение, но они по каким-то причинам все еще не достигли критериев для регулярного детального разбора. В отношении подобных обнаружений обычно фиксируется лицо, которое их выявило, источник (как правило типизируемый), дату выявления и дату актуальности материала (например, статьи о новом конкуренте).\

  1. Все остальные

Те, которые не попадают в регулярный анализ. Но бывает, что к ним заходишь по потребности проектирования сложной функции или узкоспециализированного анализа.

Как быть с инсайтами?

Обычно данный вид информации о конкурентах чем-то должен особо привлечь PO, чтобы почерпнуть креативы для заимствования, возможно, пересмотреть критерии отнесения конкурентов к регулярно отслеживаемым. Кроме того, работа по поиску конкурентов достаточно однообразная, если в неё не допустить элементов творчества. Так и выполнять будет интереснее — человек меньше будет выгорать и есть шанс что-то найти полезное для продукта.

Обычно интересное находится в следующем, на это исполнителю стоит обращать внимание:

  • дизайн решение. Часто стартапы более свободны в реализации интуитивно понятного интерфейса

  • креативное позиционирование, продвижение. Громкие слоганы, дерзкая манера выхода на насыщенный рынок не всегда тренд и срабатывают, но могут привлечь внимание для отстраивания от конкурентов

  • уникальный функционал. То, чем можно зацепить новичкам искушенных клиентов, обычно выставляется на передний план

  • “богатые родители”. Стартапы, рожденные в стенах именитых инкубаторов или от капиталоемких родителей, заслуживают особого внимания — даже если они не выстреливают, то тонут достаточно долго

  • особый прайс. Одна из тактик выхода на рынок — это демпинг. Своевременно это заметить как раз позволяет либо беглый перебор новичков либо узкоспециализированный анализ ценообразования

Критерии отбора отслеживаемых конкурентов

Признаки стабильно выживающих или процветающих конкурентов могут быть следующие:

  • Длительный срок нахождения в информационном поле. Обычно от 3-х лет активного продвижения: статьи, интервью, выставки, релизы новых функций и др. следы воздействия на потенциальных клиентов

  • Обильный запас финансов для процветания и растянутого увядания: отчеты о прибыли, крупные инвесторы, громкие клиенты, именитые топы, большАя численность персонала

  • Прочие признаки свершившегося или предстоящего успеха: декларируемое масштабное географическое, функциональное партнерство, финансово-политическое взаимодействие с государственным сектором (особенно актуально для РФ)

Эти критерии могут быть применены все разом или частично и настройка их под конкретное решение относится к компетенциям владельца продукта. Лучше критерии отсева отслеживаемых конкурентов формировать после обзора полного списка, когда будет понятна предстоящая нагрузка по исследованию.

В основе корректно поставленная задача

Для того, чтобы результат в виде списка конкурентов был предоставлен с радостью и качественно, необходимо стажера погрузить в продукт примерно следующим образом:

Обозначаем как будет использоваться список конкурентов, выбираем один из видов конкурентного анализа : “У нас компания по доставке различных товаров до потребителей. Мы решили открыть поставку уникальных грибов с предварительной упаковкой и отслеживанием конкретной партии. Нам нужно финансирование для MVP. Для получения средств необходимо построить roadmap, реализация которого превзойдет конкурентов. Анализ конкурентов мы начнем с построением списка и выработки критериев тех, за кем нужно следить”.

Далее погружаем в то, как мир улучшиться с помощью запланированной задумки: “Хотим открыть поставку грибов, произрастающих в тундре для ресторанного рынка развитых регионов с интерактивными элементами доставки партии до ресторана, которые позволили бы потребителям блюд в ресторане убедиться в экологичности ингредиентов и сохранности здоровья потребителей. В отличии от наших конкурентов, которые не предоставляют сервиса по раскрытию деталей поставки свежих грибов, мы даем ресторанам возможность поднять ожидания клиенту от вкусовых качеств блюда путем демонстрации запакованной партии грибов и трек листа её доставки до ресторана”.

Критерии достаточного погружения в продуктовую задумку исходят из пересказа частей lean canvas

  • Кому? Потребителям блюд

  • Какую боль будем лечить? Обеспокоенность о состоянии здоровья и соответствие богатому образу жизни

  • Каким способом? Через декларацию потребления блюд из экологически чистых продуктов в ресторане

  • Почему лучше конкурентов? Мы предлагаем поставки с интерактивными инструментами отслеживания качества: трекинг поставок, видео сбора, запаянные пронумерованные партии, онлайн видео процесса упаковки и вскрытие перед клиентом

  • Кто (что) нам будет способствовать? Рестораны, которые обеспокоены своим имиджем для поддержания высокой наценки на итоговые блюда

Передаем форму сбора результата. Обычно это таблица, которую можно на регулярной основе обновлять:

  • Дата обнаружения конкурента. Позволяет отследить дату первого попадания конкурента в обзор

  • Лицо, нашедшее конкурента. Требуется для идентификации источника «особого» качества пополнения таблицы

  • Дата актуальности материала. Может быть датой статьи, в которой проявился конкурент, датой обновления страницы в интернете или совпадать с датой обнаружения, если выявить актуальность материала затруднительно

  • Тип обнаруженного материала. Типы: сайт продукта (основной лендинг), статья, список участников для выставки и др.

  • Ссылка на материал 

  • Наименование материала. Для выставок это может быть название выставки и год

  • Наименование конкурента. Обычно данный столбец нормируется по содержимому, чтобы избежать дубляжа и искаженных наименований

  • Ссылка на сайт продукта (основной лендинг)

  • Комментарий

Скрытый текст

По предпоследним четырем столбцам можно настраивать формулы поиска похожих значений. В последний столбец можно вписывать теги типа New, Idea с расшивкой и ссылкой на файлы заметок. В качестве инструмента построения таблицы лучше всего подходят Google таблицы так как они могут выполнять анализ содержимого ячеек, находить совпадения, обеспечивать стандарт заполнения, а так же вести лог изменения и версионирования. Но в качестве корпоративной альтернативы подойдёт Atlassian Confluence или аналог, вплоть до обычного MS Excel с облачным доступом и версионированием. Перед передачей стажеру лучше таблицу заполнить несколькими строчками примера в целях избежания вопросов от испуга.

Анонсируем технологию пополнения списка конкурентов. Описанная ниже технология — это часть исследования продвижения конкурентов, поэтому в зависимости от наличия времени, можно либо составить полный перечень найденных следов, либо обозначить только новые продукты.

  1. Ищем по ключевым словам в поисковиках. Обычно от доменного эксперта можно почерпнуть до  пары десятков основных ключевых слов, по которым будут потенциальные клиенты искать услуги наподобие вашей. Обычно имеет смысл смотреть до 3-х страниц выдачи поиска Яндекс или до 5-и Google. Такой тип поиска позволяет отловить статьи, сайты продуктов

  2. Ищем по местам скопления целевой и косвенной аудитории:

    1. Периодические тематические выставки. Первый раз хватает посмотреть 2 года назад, далее достаточно следить раз в год

    2. Информация от профильных изданий для экспертов (продвинутых потребителей): доменные социальные сети (группы), цифровые и текстовые издания

    3. Различные непотребительские объединения типа акселераторов, агрегаторов, интеграторов и пр.

  3. Подсматриваем на списки отраслевых регуляторов, которые могут быть связаны с законом (типа списка отечественного ПО) или связаны с общепринятыми отраслевыми списками (в крипто индустрии, к примеру, существуют такие источники, где можно найти все биржи)

Выставляем срок. Обычно это до 2-х недель, но с обязательной промежуточной корректировкой ожиданий в зависимости от индивидуальной скорости исследователя

Анонсируем периодичность. Обычно это помогает сделать работу качественно, ведь потом результаты нового исследования придется сравнивать с текущим

Проверяем понимание задачи. В рамках подготовительного курса к экзамену на PMP была серия вопросов про sender | receiver model. Для соблюдения этого принципа обычно всю вводную задачу я ставлю стажеру дистанционно под запись совещания и с передачей, демонстрацией формы приемки результата, технологии заполнения. В конце прошу повторить как понята задача и при невозможности стажеров воспроизвести всё по SMART критерию прошу уже без моего давления прослушать запись и письменно прислать мне полную формулировку задачи.

Минутка самомотивации напоследок

В процессе обучения чему-то новому, я выработал несколько способов с бОльшей эффективностью уложить материал в голове, чем действие по принципу «прочитал и забыл»:

  • Ретроспектива своего опыта через новые знания. Обычно по итогам саморефлексии пишу заметки в google keep c хештегами для быстрого поиска в будущем. Иногда доходит до таких статей

  • Формирование ассоциативного ряда с новыми знания. К примеру, отрисовка mind map диаграмм, рисунков

  • Поиск вольных/невольных слушателей, написание статей для широкой публики

  • Немедленное применение на практике. Часто такое затруднительно из-за естественного сопротивления переменам

  • Стресс тесты вне практики, типа сложных экзаменов. Сейчас понимаю, что стараюсь из всех программ обучения найти такие, где стресс тесты присутствуют

После таких действий, упрочняется платформа для нового опыта.

Как сказал А. Энштейн: “Вы действительно чего-то не понимаете, если не можете это объяснить это своей бабушке”.

Именно от того, что стажеры, менти в моей жизни помогают отфильтровать полезные знания от воды, я и люблю их постоянное присутствие. Надеюсь мой опыт кого-то вдохновит: проверяйте степень зрелости своих знаний и процедур в команде на возможность делегирования подобных задач более молодым специалистам!

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

А что у вас делают стажеры ИТ команды в отношении маркетинга?

0% Обычно — портят, отдаём то, что не жалко сломать. Нас заставляют, чтобы они были, от того — держим для галочки0
0% Нам есть чем заняться — не до обучения новичков!0
0% Есть метчинг потребности и незначительного опыта с соусом бурной мотивации. Поделюсь кейсом в комментах0

Никто еще не голосовал. Воздержавшихся нет.

ссылка на оригинал статьи https://habr.com/ru/articles/852336/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *