Рефлексия что это за ошибка как исправить

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

Но для того чтобы извлекать пользу от ошибок, нужно правильно рефлексировать и разбирать свои действия. О том, как это делать, рассказал президент ГК «ЕЮС» и основатель Els Space Сергей Бекренев.

Сигнал к действию

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


Читайте по теме: 5 проблем в аналитике, снижающих эффективность маркетинга и продаж


Как же правильно работать с ошибками?

Шаг 1. Восстановить механизм ошибки

Перестав умножать неправильные действия, нужно поэтапно записать шаги, которые привели к ошибке. Например, какие технологии и подходы к работе использовались, какие сроки были поставлены, кто из сотрудников был задействован в проекте (если это ошибка проекта), с какого момента результат стал негативным.

Также стоит вспомнить, говорили ли работники о возможных проблемах, которые в итоге появились.

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

Шаг 2. Проанализировать ошибку

Для анализа необходимо четко сформулировать проблему. А затем вместе с командой ответить на вопросы. Почему произошли действия, которые привели к ошибке? Можно ли было ее предвидеть? Есть ли шанс после обнаружения «неисправности» что-то изменить? 

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

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

Шаг 3. Найти решение

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

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

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

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

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

Так, в работу внедряли робота-юриста. Планировалось, что этот продукт уменьшит время обработки запросов клиентов на 35-40%. Робот-юрист должен был взять на себя частые и рядовые запросы (как заполнить документ, составить иск или подать жалобу), чтобы специалисты занимались более сложными задачами.

Но после запуска проекта (даже после многочисленных проверок) оказалось, что в работе есть недочеты — проблемы в координации робота и CRM-системы.

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

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

Работа над ошибками

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

  • Какие технологии и подходы использовались в работе?
  • С какого момента результат стал негативным? 
  • Почему произошли действия, которые привели к ошибке? Можно ли было ее предвидеть?
  • Говорили ли работники о возможных проблемах?
  • Какие есть варианты решения проблемы?
  • Что дал компании этот опыт? Какие выводы были сделаны?
  • Можно ли использовать этот опыт где-то еще?
  • Что новое о деятельности компании открылось из-за ошибки?

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

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


Читайте также:

7 смертных грехов креатива

Как не выгореть при долгом поиске работы: 7 советов


Как получить максимум

  • Восстановить механизм ошибки. Например, какие технологии и подходы к работе использовались, какие сроки были поставлены, кто из сотрудников был задействован, с какого момента результат стал негативным.
  • Проанализировать ошибку. Для этого необходимо четко сформулировать проблему. А затем вместе с командой разобраться: почему произошла ситуация, которая привела к ней; можно ли было это предвидеть, не поздно ли исправить.
  • Найти решение. В этом помогут совещания. А после того как будут одобрены новые формы и стратегии работы, их нужно донести до исполнителей, — четко поставить цели и задачи сотрудникам, объяснить принципы работы, определить конкретные шаги. Затем незамедлительно переходить к реализации.
  • Выделить общие вопросы для рефлексии, на которые будет опираться бизнес. В идеале искать ответы стоит вместе с командой.

Фото: Nidvoray / Shutterstock

Подписывайтесь на наш Telegram-канал, чтобы быть в курсе последних новостей и событий!

Разбираем распространенные ошибки при рефлексии, лайфхаки и правила для продуктивного самопознания.

  • Что такое рефлексия
  • Для чего она нужна
  • Виды рефлексии
  • Ошибки, которых стоит избегать
  • Как рефлексировать правильно
  • Комментарий эксперта

Материал проверил и прокомментировал Аркадий Волков, психотерапевт, специалист сервиса по подбору психологов Alter

Что такое рефлексия

Рефлексия — способность сознательно обращать внимание на свои мысли, эмоции и поведение, оценивать принятые решения и перспективы. Термин произошел от латинского слова «reflectio» — «отражение». Это обращение внимания на себя, переосмысление, анализ. Человек смещает фокус извне на свои чувства, собственное «Я», переосмысливает происходящее. Сократ считал рефлексию доступным способом познания и совершенствования себя. Психотерапевт Аркадий Волков объясняет: «Роль рефлексии в разных психотерапевтических подходах существенно отличается. Например, если в когнитивно-бихевиоральном подходе рефлексия, внимание к собственным мыслительным процессам, их оценка и переоценка — одна из главных опор терапевтического процесса, то в психоанализе рефлексия скорее играет вспомогательную роль и используется терапевтом в работе с материалом, получить который помогают иные, нерефлексивные методы».

Для чего нужна рефлексия

Саморефлексия помогает определить реальные желания. Немецкий ученый Оливер Шультхайс из Университета Эрлангена-Нюрнберга доказал, что, когда сознательные цели совпадают с бессознательными мотивами, человек чувствует себя счастливее [1]. Кроме того, процесс раздумий позволяет:

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

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

Фото: Pexels

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

Виды рефлексии

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

  1. Личностная рефлексия. Здесь объектом познания является личность самого человека. Он оценивает себя, свои способности, привычки, отношение к нему окружающих, а также мысли о мире и других людях.
  2. Коммуникативная рефлексия. Критическая оценка поступков и реакций, познание окружающих. Так происходит получение объективного представления о механизмах взаимодействия в социуме.
  3. Интеллектуальная рефлексия. Активизируется в процессе обдумывания проблемы, требующей размышлений. Человек возвращается к исходным условиям и прокручивает в голове рациональные варианты решения задачи, как в математической формуле.

Также рефлексию делят на ситуативную (анализ в процессе происходящего), проспективную (мысли о будущем) и ретроспективную (взгляд в прошлое). Кроме того, можно выделить такие ее виды:

  • Социальная рефлексия. Размышление не о людях, а от их имени. Ее также называют «внутренним предательством». Человек ставит себя на место другого индивида и пытается понять, что тот думает и почему так поступает.
  • Научная рефлексия. Используется для анализа и исследования методов познания. Так возникают теории, законы функционирования различных процессов, изучаются инструменты, точки зрения и обоснования.

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

Ошибки, которых стоит избегать

Рефлексия как терапевтический метод самоанализа сопряжена с позитивными перспективами и личностным ростом. Но не все так просто. Ученые провели эксперимент среди рефлексирующих студентов и обнаружили, что они отличаются низким уровнем психологического благополучия [2]. Психолог Таша Эврих считает, что виной тому не сам процесс, а неумение людей правильно к нему подойти [3]. Рефлексирующий человек часто скатывается в философию и концентрируется на вопросе «почему?», в то время как стоит спросить себя «что?»: «Что произошло? Что я чувствую? Что я могу сделать, чтобы мне стало легче и чтобы подобного не повторилось в будущем?».

Эту теорию подтверждают исследования: в одном из них студентам предложили рефлексировать по итогам проваленного экзамена [4]. Те, кто основывал размышления на вопросе «почему так произошло?», сфокусировались на своих неудачах, проблемах с дисциплиной, недостаточном уровне знаний и в итоге находились в подавленном состоянии даже на следующий день. Понять, что делать, всегда эффективнее, чем выяснять, кто виноват. Врачи оперируют термином «деструктивная рефлексия». Она присуща людям с высоким уровнем самокритики, часто встречается у пациентов с неврозами, склонными к постоянному анализу мыслей и поступков.

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

Фото: Shutterstock

Как рефлексировать правильно

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

  1. Привыкайте анализировать непривычные ситуации. Оценивайте происходящие события, даже если поначалу для этого требуется немало времени, которое придется уделить размышлениям даже через несколько часов или дней после случившихся событий.
  2. Попробуйте каждый вечер обдумывать события прошедшего дня. Обратите внимания на чувства и эмоции: в каких ситуациях вам было некомфортно, вас одолевали раздражение, гнев или неуверенность.
  3. Старайтесь мыслить объективно: смотреть на ситуацию со стороны, а не с позиции внутреннего критика.
  4. Анализируйте свое отношение к окружающим. Например, новые знакомые вызывают чувство тревоги. Что становится триггером, запускающим механизм негативных эмоций?
  5. Не избегайте общения с людьми, точки зрения которых противоречат вашим. В попытке понять иную картину мира вы активизируете рефлексию, которая помогает иначе взглянуть на происходящее, пересмотреть паттерны и стереотипы.
  6. Учитесь видеть ситуацию разносторонне: выделяйте не только минусы, но и плюсы своего состояния, ищите возможности, которые открываются с новыми знаниями и чувствами.

Комментарий эксперта

Аркадий Волков, психотерапевт, специалист сервиса по подбору психологов Alter

Как в индивидуальной, так и в групповой психотерапии рефлексия часто оказывается важной частью более глубокого и масштабного процесса самоосознания. В ходе сессии или тренинга психолог часто задает вопросы: «Что вы сейчас чувствуете?», «Что вы испытываете, когда вспоминаете об этом, когда слышите такие слова в свой адрес?», «Какая мысль стоит за этой эмоцией?» и т. д. Эти и другие подобные вопросы помогают переключить внимание на себя и осознать, что наши мысли иногда не более и не менее, чем мысли, и в наших собственных силах принять решение: верна ли та или иная мысль и нужно ли нам ею руководствоваться. Чем честнее и конкретнее клиент отвечает на эти вопросы, тем эффективнее психологическая работа. Иногда такая рефлексия становится основным содержанием психотерапевтического процесса, в таком случае анализ обоснованности собственных решений и действий, поиск альтернатив сами по себе приближают клиента к поставленным целям. А иногда это части более сложного процесса, наряду с работой с эмоциями, образами и смыслами.

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

Второй, более ситуативный инструмент — направленные вопросы. Например, в отношении завершенного рабочего процесса или проекта, в который вы вовлечены, это могут быть такие вопросы: «Что я вынес из этого опыта? С чем мне было сложно справиться? Что я сделал бы по-другому в следующий раз? Что я могу сделать сейчас, чтобы в следующий раз достичь другого результата?» Это могут быть и вопросы к себе: «Что сейчас важно для меня? Что было важно пять или десять лет назад? Как то, что для меня важно, влияет на мои действия? Могу ли я сделать что-то, чтобы мои действия больше соответствовали моим устремлениям?». Задать вопросы можно к книге или мысли, которая вас зацепила: «Что в этом меня привлекает? Может ли эта мысль или идея стать частью моей жизни? Что для этого нужно сделать?»

Часто поиск подходящей формы для рефлексии позволяет, с одной стороны, снизить ее объем, а с другой — превратить размышление в контролируемый процесс. Выберите для себя время в течение недели или дня, которое вы сможете посвятить только рефлексии. Поэкспериментируйте с оформлением этого процесса: может быть, вам подойдет запись мыслей на бумагу или проговаривание вслух на диктофон. Задавайте себе вопросы, которые помогут направить рефлексию в нужное вам русло. Каких целей вы хотите достичь? Желаете ли вы что-либо изменить? Что для этого нужно?

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

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

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

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

Как извлечь пользу из опыта

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

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

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

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

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

Александра Жирновская

Директор центра корпоративного обучения и развития Theory & Practice

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

Модели рефлексии

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

Описание
  • Что произошло?

  • Когда?

  • При каких обстоятельствах?

  • Кто причастен?

Чувства
  • Что вы чувствовали в этот момент?

  • Как проявлялись эти чувства?

Оценка
  • Что было хорошо/плохо?

  • Как вы повлияли на эту ситуацию?

Анализ
  • Смысл этого события?

  • Почему так произошло?

  • Как вы проявили себя в этой ситуации?

  • Как можно объяснить ваши поступки?

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

Вывод

Что можно извлечь из этой ситуации?

1. Общий вывод
Как поступать в аналогичных ситуациях?

2. Конкретный вывод
Что вы поняли именно в этой ситуации?

План действий
  • Что делать, если это снова произойдет?

  • Как можно предотвратить подобные ситуации?

  • Как вы измените свое поведение и какие навыки будете развивать?

  • Какие пробелы стоит заполнить?

K-AMPUS  — это набор методических инструментов для построения индивидуальных планов развития каждого члена команды. Помогает запустить развитие по собственному пути, пройти обучение по рекомендации руководителя или получить план по итогам диагностики, встроенной в платформу. Полный цикл администрирования обучения от заявки до обратной связи.

В теории двойной петли обучения Криса Арджириса существует четыре шага в развитии теории обучения:

  1. Изучение предшествующих теорий

  2. Введение новых понятий

  3. Создание действий

  4. Обобщение результатов

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

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

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

Блок Assumptions — Предположения и убеждения (Что нас подталкивает на совершение каких-либо поступков)

  • Блок Goals — Цели, стратегии, действия

  • Single Loop Learning — Одинарная петля обучения

  • Results — Результаты и выводы

  • Double Loop Learning — Двойная петля обучения

  • Defensive — Защитная реакция

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

Как превратить негативный опыт в положительный

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

В своей статье «Learning from Mistakes» ученые Данте Чиалво и Пер Бак изменили установку о том, что ошибки — это исключительно негативный опыт. Они показали, что благодаря правильному анализу ошибок наши когнитивные процессы улучшаются: мозг формирует новые синапсы (контакты между нейронами), которые позволяют совершать новые действия во избежание ошибок, и в то же время «исключает» старые. Эти выработанные улучшенные алгоритмы, в свою очередь, строят новые модели поведения.

В своем исследовании «Learning from Errors» профессор департамента психологии Колумбийского университета в Нью-Йорке Джанет Меткал отметила, что студентам необходимо концентрироваться на ошибках, разбирать их в процессе обучения и ни в коем случае не игнорировать, иначе останутся пробелы в знаниях. При этом важно правильно дать обратную связь. Недостаточно просто признать ошибку. Даже если действие невозможно исправить, его необходимо проанализировать.

Если раньше о рефлексии (самоанализе) говорили только психологи, то сейчас, благодаря множеству популярных психологических блогов, этот термин прочно закрепился в лексиконе людей. Но не все понимают, что это такое — а потому многие жалуются на то, что рефлексия приносит не пользу, а огорчение и депрессию.
Что же это такое и как направить рефлексию на пользу себе?

Что такое рефлексия?

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

Зачем нужна рефлексия

Конечно, без рефлексии можно обойтись. Более того, многие люди с переменным успехом живут без особой рефлексии: ну, захотелось поступить так, поступил. Потом захотелось иначе – поступил иначе. Жить так можно, и даже счастливым при этом быть можно.
Но…
Надо понимать, что пока мотивы собственных поступков остаются для человека темным лесом, он похож на путника с завязанными глазами. Шел наощупь, наткнулся на колючку – ой, не туда, пойду в другую сторону… Конечно, колючек на пути может и не попасться, вдруг повезёт? Тогда путь будет лёгким и спокойным… Но от путника это не зависит совсем.
Развитая рефлексия позволяет снять с глаз повязку, увидеть дорогу, по которой вы идёте, и действовать осознанно, идти к цели, не мотаясь из стороны в сторону под воздействием внешних факторов.

Основные ошибки рефлексии

Ошибка рефлексии №1: обдумывать действия, а не мотивы
Рефлексировать – это значит не просто обдумывать, но, в первую очередь, осознавать себя и процессы, которые происходят внутри. Недостаточно подумать: кажется, я поступил глупо, больше так делать не буду. Важно понять, почему ты поступил именно так. Что ты при этом чувствовал? Какие мысли у тебя были? Чего ты хотел в этот момент? – именно эти вопросы позволяют действительно осознать, почему поступаешь так, а не иначе.

Ошибка рефлексии №2: застревать в прошлом
Если вы слишком много внимания уделяете анализу прошлого, вы не можете идти вперед, прошлое держит вас, как якорь. Ваше внимание там, ваши мысли там. А вы — здесь. Далеко ли так уйдёшь?
Нужно понимать свои мотивы, нужно понимать свои ошибки, но вовсе не нужно для этого бесконечно анализировать ситуацию, которая давно осталась позади. Вы не можете изменить прошлое, но можете поменять будущее. Оно в ваших руках — прямо сейчас. Поэтому не цепляйтесь за то, что вы уже не можете изменить – лучше измените то, что действительно можете.

Ошибка рефлексии №3: обвинять себя
Прошлое нельзя изменить, поэтому обвинять себя в неверном решении нет смысла. Совершать ошибки – это нормально, это не провал, а нормальная часть жизни. И винить себя за ошибки не конструктивно – с этим ничего нельзя сделать. Но вот постараться понять, почему так вышло, как ты попал туда, куда попал, чтобы не наступать на те же грабли – действительно нужно и полезно.

Ошибка рефлексии №4: брать на себя ответственность за всё
Всегда есть то, на что мы можем влиять и то, что от нас не зависит. Очень важно отделять одно от другого. В других людях происходят процессы, которые не зависят от нас совсем или зависят очень слабо. Бывает также, что неблагоприятно складываются обстоятельства. Поэтому никто и никогда не может контролировать ситуацию, целиком и полностью. Можно проанализировать и скорректировать собственное поведение, но нельзя повлиять на чужое – это лежит вне зоны контроля, это воля другого человека.

А как надо?

1. Анализируйте свои чувства и ощущения.
Почаще спрашивайте себя: «Что я сейчас чувствую?» Попытайтесь погрузиться в ощущения, прочувствовать их. Даже если ощущения негативные – постарайтесь не выключаться из них сразу. Привычка обращать внимание на свои эмоции, чувствовать и понимать себя – это то, что существенно облегчает существование и взаимодействия с другими людьми.

2. Обращайте внимание на ситуации, в которых вы повели себя неожиданным для вас образом или же на которые вы отреагировали слишком резко/эмоционально.
Если ваша реакция на что-либо стала для вас неожиданной, или если она постфактум кажется вам слишком резкой – значит, присутствует какой-то внутренний триггер, «спусковой крючок», который ушел с уровня сознания, но запустил в вас определенную реакцию. Постарайтесь его найти. Это можно сделать, раскрутив цепочку: почему я так поступил/среагировал – что я при этом чувствовал – откуда пришло моё ощущение.

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

4. Если ощущения стали слишком острыми или неприятными – выныривайте.
Рефлексия даёт возможность заглянуть глубже в себя, но в глубине могут обнаружиться травмирующие вещи. Если в процессе самоанализа вы ощутили острую душевную боль, тоску, тягостные ощущения, которые сложно выносить – лучше выйти из самоанализа и переключиться на что-то приятное, а болевые моменты обдумать позже (и лучше всего это делать с хорошим психологом).

5. Не старайтесь все контролировать.
Рефлексия – не инструмент для управления реальностью, другими людьми или даже своими эмоциями. Она просто помогает лучше понимать себя и меньше раскачиваться под воздействием внешних факторов. Но рефлексия не предназначена для того, чтобы сделать из вас ходячую аналитическую машину без эмоций. Если вы слишком глубоко уходите в анализ, вы не получаете от жизни настоящего удовольствия – ведь жизнь состоит из неожиданностей, и в ней должно быть место спонтанности.
Важно найти баланс между спонтанностью и осознанностью.

Зачем понимать себя?
Пока остаешься для себя малознакомым чужаком, пока не готов осознать себя и свои мотивы – твоя жизнь от тебя не зависть. А значит, тобой могут рулить другие люди или просто случайные события. Если же понимаешь, кто ты, что ты чувствуешь и почему поступаешь так, а не иначе – контроль над твоей жизнью оказывается в твоих собственных руках. А это – необходимое условие для того, чтобы делать свою жизнь по-настоящему своей.

Неудачная статья про ускорение рефлексии

Время на прочтение
7 мин

Количество просмотров 7.6K

Сразу объясню название статьи. Изначально планировалось дать хороший, надежный совет по ускорению использования рефлекшена на простом, но реалистичном примере, однако в ходе бенчмаркинга выяснилось, что рефлексия работает не так медленно, как я думал, LINQ работает медленнее, чем снилось в кошмарах. А в итоге оказалось, что мной еще и была допущена ошибка в замерах… Подробности этой жизненной истории под катом и в комментариях. Так как пример достаточно бытовой и реализованный в принципе как обычно делается в энтерпрайзе, получилось достаточно интересная, как мне кажется, демонстрация жизни: влияния на скорость работы основного предмета статьи было не заметно из-за внешней логики: Moq, Autofac, EF Core и прочей «обвязки».

Начал я работу под впечатлением от этой статьи: Why is Reflection slow

Как видно, автор предлагает использовать скомпилированные делегаты вместо прямого обращения к методам типов отражения как отличный способ сильно ускорить работу приложения. Есть там еще, конечно, IL эмиссия, но её хотелось бы избежать, так как это самый трудозатратный способ выполнения задачи, который чреват ошибками.

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

Я не редко встречаюсь с наивным использованием рефлексии в энтерпрайзе. Берется тип. Берется информация о свойстве. Вызывается метод SetValue, и все радуются. Значение прилетело в целевое поле, все довольны. Люди весьма неглупые — синиоры и тимлиды — пишут свои расширения на object, основывая на такой наивной реализации «универсальные» мапперы одного типа в другой. Суть такова обычно: берем все поля, берем все свойства, итерируем по ним: при совпадении имен членов типа выполняем SetValue. Периодически ловим исключения на промахах там, где не нашли какое-то свойство у одного из типов, но и тут есть выход, добивающий производительность. Try/catch.

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

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

Вызов отражения вынуждает CLR обходить сборки в поисках нужной, подтягивать их метаданные, парсить их и т.д. Кроме того, рефлексия во время обхода последовательностей приводит к аллокации большого объема памяти. Расходуем память, CLR расчехляет ГЦ и понеслись фризы. Это должно быть заметно медленно, поверьте. Огромные объемы памяти современных продакшен серверов или облачных машин не спасают от высоких задержек в обработке. Фактически, чем больше памяти, тем выше вероятность, что вы ЗАМЕТИТЕ, как работает ГЦ. Рефлексия – это, по идее, лишняя красная тряпка для него.

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

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

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

В нашем случае так же можно воспользоваться JIT компиляцией и потом использовать скомпилированное поведение с той же производительностью, что и его AOT аналоги. На помощь нам в данном случае придут выражения.

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

Логика в этом есть. Здравый смысл нам говорит о том, что если что-то можно скомпилировать и закешировать, то это следует сделать.

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

Теперь о коде. Давайте рассмотрим пример, который основан на моей недавней боли, с которой пришлось столкнуться в серьёзном продакшене серьёзной кредитной организации. Все энтити вымышленные, чтобы никто не догадался.

Есть некая сущность. Пусть будет Contact. Есть письма со стандартизированным телом, из которых парсер и гидратор создают эти самые контакты. Пришло письмо, мы его прочитали, разобрали на пары ключ-значение, создали контакт, сохранили в бд.

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

Реализуем, создаем тесты. Работает.

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

Логика следующая: шаблонный метод получает пары, сформированные базовой логикой парсера. Уровень LINQ – это парсер и базовая логика гидратора, делающая запрос к контексту бд и сопоставляющая ключи с парами от парсера (для этих функций есть код без LINQ для сравнения). Далее пары передаются в основной метод гидрации и значения пар устанавливаются в соответствующие свойства энтити.

«Быстрый» (Префикс Fast в бенчмарках):

 protected override Contact GetContact(PropertyToValueCorrelation[] correlations)
        {
            var contact = new Contact();
            foreach (var setterMapItem in _proprtySettersMap)
            {
                var correlation = correlations.FirstOrDefault(x => x.PropertyName == setterMapItem.Key);
                setterMapItem.Value(contact, correlation?.Value);
            }
            return contact;
        }

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

        static FastContactHydrator()
        {
            var type = typeof(Contact);
            foreach (var property in type.GetProperties())
            {
                _proprtySettersMap[property.Name] = GetSetterAction(property);
            }
        }

        private static Action<Contact, string> GetSetterAction(PropertyInfo property)
        {
            var setterInfo = property.GetSetMethod();
            var paramValueOriginal = Expression.Parameter(property.PropertyType, "value");
            var paramEntity = Expression.Parameter(typeof(Contact), "entity");
            var setterExp = Expression.Call(paramEntity, setterInfo, paramValueOriginal).Reduce();
            
            var lambda = (Expression<Action<Contact, string>>)Expression.Lambda(setterExp, paramEntity, paramValueOriginal);

            return lambda.Compile();
        }

В целом понятно. Обходим свойства, создаем по ним делегаты, вызывающие сеттеры, сохраняем. Потом вызываем, когда надо.

«Медленный» (Префикс Slow в бенчмарках):

        protected override Contact GetContact(PropertyToValueCorrelation[] correlations)
        {
            var contact = new Contact();
            foreach (var property in _properties)
            {
                var correlation = correlations.FirstOrDefault(x => x.PropertyName == property.Name);
                if (correlation?.Value == null)
                    continue;

                property.SetValue(contact, correlation.Value);
            }
            return contact;
        }

Тут сразу обходим свойства и вызываем напрямую SetValue.

Для наглядности и в качестве эталона реализовал наивный метод, который пишет значения их пар корреляции напрямую в поля энтити. Префикс – Manual.

Теперь берем BenchmarkDotNet и исследуем производительность. И внезапно… (спойлер — это не правильный результат, подробности — ниже)

Что мы тут видим? Методы, победоносно носящие префикс Fast, почти при всех проходах оказываются медленнее, чем методы с префиксом Slow. Это справедливо и для аллокации, и для скорости работы. С другой же стороны красивая и элегантная реализация маппинга с использованием везде, где можно, предназначенных для этого методов LINQ, наоборот, сильно отжирает производительность. Разница в порядки. Тенденция не меняется с разным количеством проходов. Разница только в масштабах. С LINQ в 4 — 200 раз медленнее, мусора больше примерно в таких же масштабах.

UPDATED

Я не поверил своим глазам, но что важнее, ни моим глазам, ни моему коду не поверил наш коллега — Dmitry Tikhonov 0x1000000. Перепроверив мой солюшн он блестяще обнаружил и указал на ошибку, которую я из-за ряда изменений в реализации упустил. После исправления найденного бага в настройке Moq, все результаты встали на свои места. По результатам ретеста основная тенденция не меняется — LINQ влияет на производительность все равно сильнее, чем рефлексия. Однако приятно, что работа с компиляцией Expression’ов делается не зря, и результат виден и по аллокации, и по времени выполнения. Первый запуск, когда инициализируются статические поля, закономерно медленней у «быстрого» метода, но дальше ситуация меняется.

Вот результат ретеста:

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

Код с бенчмарком доступен тут. Все желающие могут перепроверить мои слова:
HabraReflectionTests

PS: код в тестах использует IoC, а в бенчмарках – явную конструкцию. Дело в том, что в конечной реализации я отсек все способные сказаться на производительности и зашумить результат факторы.

PPS: Спасибо пользователю Dmitry Tikhonov @0x1000000 за обнаружение моей ошибки в настройке Moq, которая сказалась на первых замерах. Если у кого-то из читателей будет достаточная карма, лайкните его, пожалуйста. Человек остановился, человек вчитался, человек перепроверил и указал на ошибку. Я считаю, что это достойно уважения и симпатии.

PPPS: спасибо тому дотошному читателю, который докопался к стилистике и оформлению. Я за единообразие и удобство. Дипломатичность подачи оставляет желать лучшего, но критику я учел. Прошу к снаряду.

Понравилась статья? Поделить с друзьями:
  • Как найти силу техническая механика
  • Как найти баллы на мтс
  • Как найти вес дуги графа
  • Как найти работников магазина
  • Найти как лечить щитовидку