Что такое поведенческие паттерны
Паттерны поведения в психологии
Слово «паттерн» (от английского pattern, что можно перевести как «шаблон», «модель», «система», «структура») применяется в различных научных дисциплинах и сферах деятельности. В одной только психологии паттерны используются в нескольких разделах, в том числе в когнитивной психологии, гипнологии и некоторых других сферах.
Что понимают под паттерном в психологии
Паттерн в психологии — это определенный набор, шаблон поведенческих реакций или последовательностей стереотипических действий, поэтому относительно любой области, где человек применяет шаблоны (а это почти все сферы), можно говорить о паттернах. Простыми словами паттерн — это повторяющийся шаблон поведения человека.
Надо сказать, что мы применяем намного больше паттернов, чем думаем, – сознательно или бессознательно. В частности, ежедневно нам на выручку приходят словесные паттерны — это речевые приемы (готовые фразы, реакции на те или иные вопросы и высказывания и т.д.), которые мы используем в речи. Также мы активно прибегаем к паттернам мышления — мыслительным шаблонам, в частности обобщениям. В данном тексте пойдет речь об общей характеристике паттернов поведения. Знание, как они функционируют, а также их анализ помогут лучше понять свои действия и действия тех, кто нас окружает.
Как работают поведенческие паттерны
Людям в принципе свойственна стереотипизация поведения: мы вырабатываем определенные способы взаимодействия с окружающим миром. Это объясняется принципом рациональности — вместо того чтобы каждый раз придумывать новые способы реагирования на то или иное явление, проще воспользоваться готовой моделью. Это касается всех паттернов – и мышления, и словесных, и поведенческих, и многих других.
Паттерны поведения формируются в процессе обучения, воспитания, а также наблюдения за окружающими. Этот процесс запускается с самого детства и в детстве же наиболее активен. Мы смотрим, какие модели применяют другие люди в различных ситуациях, и перенимаем (или не перенимаем) эти шаблоны. Этот достаточно удобный и эффективный способ обучения и социализации достался нам в наследство от предков, для которых был одним из средств выживания (надо заметить, что копирование поведения используется не только людьми и весьма распространено в мире животных, однако эта область лежит за пределами нашей статьи).
Возвращаясь к человеку современному, заметим, что детстве шаблоны зачастую просто копируются практически в неизменном виде (именно поэтому говорят, что лучшее воспитание ребенка – демонстрация ему тех или иных особенностей поведения на собственном примере). Когда мы становимся старше и наши модели поведения усложняются, паттерны заимствуются не так явно и не так активно. Кроме того, они, как правило, берутся не в исходном виде, а модифицируются, чтобы «вписаться» в наш характер, другие модели поведения и т.д. Пожалуй, лучшим отражением всего процесса станет поговорка: «С кем поведешься, от того и наберешься». И здесь мы говорим далеко не только об отрицательных качествах – «набраться» можно и положительных моделей.
Что паттерны поведения могут о нас рассказать и как их использовать
Отдельный интерес представляет следующее положение: зная, как определенный человек вел себя в тех или иных ситуациях, какие у него имеются паттерны поведения, вы сможете определить его действия и поступки в схожих ситуациях. Правда, прежде чем делать выводы, надо хорошо изучить саму личность и ее поведенческие паттерны. Самый простой пример — если ваш друг с легкостью раздает обещания направо и налево, но еще ни одно не выполнил (или по крайней мере мало какие), каков шанс, что он сделает то, что пообещает вам? То же касается вечно занимающих и не возвращающих долги знакомых.
Выработанные в детстве паттерны если и меняются, то с трудом. Именно поэтому девушке, выбирающей жениха, стоит обратить внимание на его отношение к матери. Дело в том, что через несколько лет после брака, когда пройдет стадия влюбленности, у мужчин зачастую (но не всегда) проявляются такие же поведенческие алгоритмы к супруге, которые от выработал по отношению к матери.
Важно и то, что, как правило, для близкого общения мы выбираем людей со схожими паттернами поведения. Поэтому про некоторых девушек говорят, что у них, например, талант к поиску подлецов. На самом деле такие дамы просто ищут человека, подходящего под реализацию их паттерна. И, видимо, в данном случае мы имеем дело с моделью поведения, при которой мужчина должен обманывать женщину, не уважать ее, он король — она никто и так далее. Точно так же не мужчине «везет» на чрезмерно ветреных подруг, а он подсознательно ищет девушек-изменниц. И когда его бросит одна из них, он будет искать другую – с таким же поведением, подходящим под его психологический паттерн. Хотя на уровне сознания ему может казаться, что больше он не попадется и следующая дама сердца будет совсем другой.
Почему важно обращать внимание на свои и чужие паттерны
Как правило, на сознательном уровне такие паттерны могут показаться иррациональными даже своему владельцу, однако на подсознательном личность может снова и снова повторять один и тот же путь – потому что это зона его комфорта. Именно поэтому анализ паттернов поможет вам понять, как вести себя с тем или иным человеком и как он будет действовать в различных ситуациях. Причем данный анализ (если он качественно проведен) будет показательнее слов и даже намерений, потому что на словах человек может отрицать (в том числе просто не признавать) за собой таких особенностей и даже вроде бы пытаться действовать по-другому, однако если этот паттерн для него комфортен психологически, никаких активных изменений на самом деле не последует. Один из красноречивых примеров – модель поведения вечной жертвы.
Впрочем, такие шаблоны поведения могут применяться не только для анализа других. У использования паттернов в психологии есть и еще одна сторона, к которой порой прибегают в НЛП, школах успеха и др. Зная модель поведения, при которой несколько людей добились успеха, вы можете повторить ее, чтобы добиться успеха самому. Например, можно скопировать некоторые кажущиеся вам положительными шаблоны, которые, на ваш взгляд, улучшат ваш характер, сделают вас сильнее и гармоничнее, позволят добиться тех или иных целей и т.д. Однако помните, что зачастую поменять модель – не так просто, ведь некоторые из подобных шаблонов буквально являются продолжением вашей личности.
Что такое паттерн, или Почему иногда так сложно вести себя «прилично»?
Александра Иваницкая
Вы поднимаетесь с кровати рано утром, включаете чайник или кофемашину, здороваетесь с соседями по дороге на работу, привычным жестом достаете проездной или ключи от машины. Насколько осознанно вы повторяете эти рутинные действия? Скорее всего, вы даже не задумываетесь о них, потому что они уже стали вашим поведенческим паттерном. Рассказываем, что это такое и как он помогает принимать решения.
Не просто условный рефлекс
Поведенческий паттерн — это набор сценариев «по умолчанию», которые человек может проигрывать на автопилоте. Это может быть сценарий «приличного поведения» при знакомстве с деловыми партнерами или, наоборот, сценарий «бей или беги» при встрече с источником опасности и сильного стресса.
Однако по мере развития психологии и этологии ❓ Область зоологии, посвященная изучению генетически обусловленного поведения у животных. ученые начали добавлять к паттерну новые составные части:
Условный рефлекс
Приобретенные через обучение, поощрение или наказание линии поведения, которые человек может неосознанно пронести через всю жизнь.
Инстинктивное поведение
Этот тип поведения закладывается у человека генетически и наследуется в течение многих поколений. Инстинктивным поведением может быть агрессия в состоянии беспомощности или желание убежать, когда на вас смотрит человек в форме, даже если вы ничего не сделали.
Виды паттернов
Социальные — универсальны для окружения человека (это традиции и ритуалы);
Индивидуальные — личные характеристики человека, такие как чувство юмора или манера общения с друзьями;
Врожденные — инстинкты и безусловные рефлексы;
Приобретенные — шаблоны поведения, полученные в результате обучения;
Позитивные — то, что положительно влияет на жизнь: привычка чистить зубы утром и вечером, не использовать слова-паразиты или приверженность здоровому питанию;
Негативные — обычно к этой группе паттернов относят деструктивное поведение (вредные привычки, необоснованный риск своей жизнью и здоровьем), дисфункциональную коммуникацию, неоправданную агрессию и так далее.
Определять свои и чужие поведенческие паттерны — это навык, который помогает глубже понимать себя и своего собеседника. Таким образом можно строить качественную коммуникацию, выигрывать переговоры и даже найти способ изменить свой образ жизни, понимая его причины.
Что такое паттерны поведения простыми словами и как они влияют на человека
Доброго дня, уважаемые читатели!
Слово “паттерн” пришло к нам с Запада и используется сегодня во многих областях, вследствие чего его смысл варьируется в зависимости от области применения. В рамках раздела о саморазвитии мы рассмотрим, что такое паттерн с точки зрения психологии. Я расскажу, какими они бывают и как влияют на человека.
Значение слова
В переводе с английского pattern означает “образец, шаблон”. В русскоязычную среду этот термин перекочевал из западных дисциплин и технологий. В общем смысле паттерн – это повторяющийся элемент в различных сферах жизни.
В зависимости от контекста слово имеет довольно широкий диапазон трактовок:
Простыми словами паттерн – это то, что часто повторяется и может быть использовано в качестве шаблона.
В психологии есть понятие поведенческого паттерна. Это естественные шаблонные реакции и модели поведения человека, которые сформировались под влиянием жизненного опыта.
Психологи используют этот термин в двух основных значениях:
С точки зрения физиологии мозга паттерн можно сравнить с привычкой. Только механизм работы здесь более сложный. Каждый паттерн имеет “спусковой крючок”, который запускает воспроизведение всего шаблона реакции или поведения целиком. К примеру, когда я чувствую запах мандаринов, то начинаю ностальгировать по предновогодней суете.
О том, что такое ностальгия, вы можете прочесть в отдельной публикации.
Формирование паттернов
Как я уже отметила чуть выше, наш мозг склонен к упрощению, в том числе и в вопросах взаимодействия с окружающим миром. Чтобы не тратить силы на придумывание новых моделей реагирования, он использует уже имеющиеся в “арсенале” и просто дублирует в аналогичных ситуациях. Это касается любых паттернов: поведенческих, словесных, в мышлении и т. д.
Паттерны формируются в процессе воспитания, обучения и наблюдения за другими людьми. Наиболее активно они создаются в детском возрасте, причем зачастую модели просто копируются без изменений. Именно поэтому говорят, что лучшее воспитание – это личный пример. Поскольку дети повторяют все, что делают или говорят их родители.
По мере взросления модели поведения перенимаются уже не в исходном, а преобразованном виде, чтобы вписаться в характер и другие особенности человека. Помните поговорку “С кем поведешься, от того и наберешься”? Речь как раз об этом. Когда мы часто общаемся с тем или иным человеком, мы неосознанно берем от него определенные шаблоны реагирования и поведения.
Избавиться от паттернов нельзя. Их можно только обнаружить, признать, начать отслеживать и попытаться взять под свой контроль.
Есть три классификации, в каждой из которых выделяют по два типа:
Как можно использовать в повседневной жизни
Зная паттерны другого человека, мы можем предугадывать его реакции и поведение, и исходя из этого делать для себя соответствующие выводы. К примеру, если вы хорошо знаете своего коллегу как болтуна и любителя посплетничать, вы не станете доверять ему свои секреты и будете осторожны в высказываниях относительно других людей в его присутствии.
Также стоит помнить о том, что поведенческие модели, сформированные в раннем детстве, с трудом поддаются исправлению. По этой причине многие специалисты утверждают, что при выборе невесты стоит сначала посмотреть на ее мать. Ведь в будущем, когда флер романтики пройдет, супруга может повторять усвоенную модель поведения. Девушкам же, выбирающим жениха, рекомендуют обратить внимание на то, как потенциальный муж относится к своей маме, чтобы понять, как он будет проявляться в семейной жизни по отношению к супруге.
Интересно и то, что все мы ищем для близких отношений людей с подходящими нам паттернами. К примеру, когда женщине попадаются одни альфонсы, она думает, что ей просто не везет. На самом деле она сама неосознанно выбирает мужчин, которые способны реализовать сложившиеся у нее паттерны. Таким образом, жертвы часто привлекают абьюзеров, подозрительные – обманщиков и т. д.
Кстати, маркетологи тоже используют паттерны своей целевой аудитории, чтобы продвигать товары и услуги. Они внимательно изучают, как пользователи ищут продукт, на что в первую очередь обращают внимание, как принимают решение о покупке. Такая информация помогает добиваться более высоких продаж.
Заключение
Мы с вами разобрали, что значит слово “паттерн” и как формируются поведенческие модели.
Зная, как работают паттерны, можно не только разобраться с собственной жизнью, но и улучшить качество взаимодействия с окружающими людьми.
Паттерн
Паттерн – это термин, обозначающий некий повторяющийся шаблон, также им можно назвать образец, модель, схему или образ. Понятие вышло от английского «pattern» и переводится, как пример, форма. Благодаря паттерну создается посредствующее представление, с помощью которого в режиме синхронности процессов восприятия и мышления проявляются закономерности, а также способ их существования в окружающем мире, природе, в обществе.
Паттерн представляет собой повторяющийся образец или шаблон, компоненты которого повторяются предсказуемо. Паттерны могут восприниматься неодинаково, это зависит от органа ощущений, которым они чувствуются.
Существуют разнообразные паттерны поведения. Примеры их можно увидеть в различных сферах жизнедеятельности: от ранних умываний до специальных профессиональных.
Паттерн что это такое
Понятие паттерн имеет широкий спектр его применения. Так, например, оно встречается в таких науках, как психология, физика, информатика, также часто применяется в дизайне, музыке, творчестве. Такая схема поведения воспроизводится человеком автоматически в процессе взаимодействия с окружающим миром. Ежедневные паттерны поведения примеры: утренние умывания, приветствия, манера поведения за столом, способ отвечать на звонки.
В психологии паттерном называется парадигма поведения, свойственная человеку в каких-нибудь ситуациях и обстоятельствах.
В науке, в частности в математике и языкознании, можно выявлять паттерны, путем исследования. С помощью прямого наблюдения можно выявить, как формируются визуальные шаблоны в искусстве и в природе. В природе они чаще всего хаотичны, являются фрактальными и не способны к копированию друг друга, встречаются в виде спиралей, волн, пены или трещины, создаются с помощью явления симметрии и отражения.
Подобные шаблоны включают в себя математически очерчиваемую структуру, выражающуюся через формулы. Сама по себе математика является способом поиска регулярностей и каждый конечный продукт от использования функций и есть математическим паттерном.
Процесс исследования и прогнозирования научными теориями, одновременно существующих регулярностей в природе и обществе есть процессом выявления паттернов.
В архитектуре, дизайне и искусстве для того, чтобы получить определенное стабильное воздействие, декорации и разнообразные визуальные элементы могут сочетаться и повторяться, создавая образы и модели. Шаблоны проектирования в компьютерных науках являются часто употребляемым решением широкого спектра проблем программирования.
В медицинских науках паттерн воспринимается как устойчивая комбинация результатов исследования или иных признаков, симптомов при похожих жалобах больного или больных с одной нозологией. Так, паттерн состоит из нескольких симптомов, признаков. Синдром, в свою очередь, включает один или пару паттернов. Синдром или несколько синдромов составляют болезнь.
Паттерны имеют характерные свойства: они являются постоянной категорией, которую легко определить. Они всё время повторяются; являются бессознательно созданными алгоритмами, которые, как правило, очень сложно скорректировать. Они способны проявляться полностью или частично. Если он выявляется частично, то его называют кодом. Например, человек услышал отрывок из какой-то песни, и у него перед глазами сразу отображаются картины из определенной впечатляющей ситуации из прошлого, его захватывают эмоции и воспоминания, которые связанные с ней. Таким образом, мелодия была кодом, произношение которого запустило весь паттерн.
Врожденный паттерн является отправной точкой, первоначальным шаблоном, на который наслаиваются другие. Такие комбинации паттернов объединяются со стереотипами, привычками и ценностями человека, формируя его характер и образ жизни. Поэтому, такие шаблоны всегда взаимодействуют и не могут существовать по отдельности.
Личность все время находится в развитии, приобретает опыт, знания, самосовершенствуется. И вместе с развитием личности происходит трансформация её паттернов, они совершенствуются или изменяют форму выражения. Можно продемонстрировать пример такой модификации на опыте мужчины, который привык жить холостяцкой жизнью, но соображая, что нужно изменять такой образ жизни и обзавестись семьей, продолжает всё же выражать некоторые поведенческие шаблоны. Отдельные привычки, сохранившееся из холостяцкой жизни, могут преследовать человека еще некоторое время. Например, желание иметь собственное независимое личностное пространство, и проводить время одному или с друзьями, с чем, например, жена может не соглашаться. Спустя время это может пройти, действие такого паттерна ослабеет, и мужчина привыкнет к тому, что он теперь ни один и должен больше посвящать себя семье.
Паттерн в психологии
Психологический паттерн отображает устойчивую модель поведения индивидов. Такие поведенческие паттерны можно увидеть, наблюдая за окружающими людьми. Все ведут себя в разнообразных обстоятельствах по-разному, но всё-таки каждый индивид придерживается собственного стиля.
Если проследить некоторые закономерности поведения, можно легче общаться с другими. Изучая поведенческие паттерны других людей, человек начинает понимать, чего можно ожидать от них, или действовать по отношению к этим личностям, зная наперёд, какую реакцию стоит ожидать.
Например, если человек по своей натуре неразговорчив, достаточно замкнутый, и предпочитает проводить свое свободное время в одиночестве или компании одного друга, то естественно, он будет себя чувствовать очень неловко в большой компании и может даже обидеться, если бы его без предупреждения затянули в большую и шумную компанию, на вечеринку, где все веселятся и знакомятся.
Следует выходить из интересов человека, чтобы предугадать, какая реакция у него может возникнуть, соответственно действовать так, чтобы никто не был обижен. Наблюдать то, как проявляются и меняются паттерны поведения людей очень полезное и интересное занятие.
В психологии существует такой вид паттернов, как гипнотические – это особые повторяющиеся словесные формулы, с помощью которых человека можно погрузить в гипнотическое трансовое состояние. Может случиться так, что человек даже не догадается о том, что его погрузили в гипноз. Такой метод широко применяется в НЛП, также компетентные манипуляторы хорошо им владеют в корыстных целях.
Если у человека случаются такие ситуации, в которых он переживает трудности взаимодействия с внешним миром, он ищет помощи у психолога. Высказав всё наболевшее, пройдя некоторое количество тестов, клиент часто может услышать от психолога, что дело заключается в его негативной модели поведения. В дальнейшем клиенту назначается курс психокоррекции.
Паттерны поведения
Естественно, не все человеческие привычки, стереотипы и способы поведения в обществе являются комфортными и позитивными. Некоторые паттерны поведения людей очень мешают их нормальной жизнедеятельности. Например, есть такой тип людей, которые очень боятся трудностей и по отношению к ним занимают тактику избегания. Существует также противоположный тип людей, которые просто фанатично настроены на поиск сложностей, соответственно, они часто попадают в ситуации с негативными последствиями.
Оба представленные типажа имеют негативные модели поведения, которые только мешают жить и способствуют накапливанию отрицательного опыта. С такими шаблонами поведения можно бороться, даже необходимо, но не всегда это достаточно просто. Намного легче изменить что-то, когда ясно видна причина проблем и когда человек понимает, какими внутренними ресурсами и потенциалом он владеет.
Благодаря, позитивным и комфортным моделям поведения, человек может гармонично развиваться и справляться со сложностями. Их диапазон протягивается от встряхивания рук после умывания до умения искать компромиссы.
Человек сам способен выбирать те шаблоны или стратегии поведения, которыми ему лучше пользоваться. Для кого-то – это саморазрушающие паттерны, кому-то лучше использовать манипулятивные, а кто-то предпочитает модель уверенного поведения.
Отдельного рассмотрения заслуживают паттерны поведения лидера. Лидер – это человек, на которого все хотят равняться, поэтому его модель поведения отображает его сущность, его характер и от нее зависит авторитет лидера в определенной группе.
Лидерские качества можно оценить, если непосредственно наблюдать за успешными руководителями, в частности теми, которые ответственные за всю организацию. Такие люди должны осознавать реальное положение дел и оценивать отношения, как результат взаимодействия их жизненного опыта, заимствования шаблонов от других управленцев и теоретических знаний в области управления и организации труда. Проявление подобных явлений в течение времени можно рассматривать, как повторение шаблонов поведения. Именно эти паттерны обеспечивают эффективность деятельности определенного лидера.
Паттерны поведения лидера отображают те качества руководителя, которыми хочется овладеть каждому подчиненному.
Примеры лидерских качеств, которые отображаются в эффективной модели поведения:
— лидеры стимулируют и применяют самоорганизующиеся процессы;
— самостоятельно овладевают необходимой информацией;
— пользуются моделями или шаблонами с целью, упрощенного отображения реальности;
— применяют в творческом процессе случай;
— развивают особенные необходимые состояния и стратегии доступа к подсознательным процессам;
— думают системно, а не механически;
— оперируют динамическими моделями;
— концентрируются на «глубинных процессах» в противоположность «поверхностным процессам»;
— свои идеи представляют в виде схем, карт, формальных внешних систем;
— их идеи соответствуют уровню их знаний.
Автор: Практический психолог Ведмеш Н.А.
Спикер Медико-психологического центра «ПсихоМед»
Паттерны поведения
(Эта заметка является завершением серии постов, в которую вошли «Технический долг», «Синдром рефакторинга» и «Эффект второй системы»)
В чем польза паттернов проектирования? (*) Это, прежде всего, повторное использование проверенных архитектурных решений, а также упрощение коммуникаций между разработчиками. Но ведь помимо паттернов проектирования существует и масса других паттернов: существуют паттерны кодирования, тестирования, модификации кода (a.k.a. рефакторинг), существуют архитектурные паттерны и многие другие. Поскольку мы, на самом деле, редко делаем что-либо по-настоящему новое, то проверенные типовые решения существуют для огромного количества областей. И поскольку большинство проблем, с которыми сталкиваются команды разработчиков, также не отличаются разнообразием, то и поведение этих людей также весьма однообразно.
«Технический долг», «синдром рефакторинга» и «эффект второй системы» — это типовые ситуации, с которыми периодически сталкивается команда разработчиков. И главная польза от них как раз и заключается в том, чтобы увидеть проблему и доказать ее существование нужным людям. Если вы сами поняли, что технический долг проекта слишком велик, то используя денежную метафору будет уже значительно проще доказать важность этой проблемы менеджеру или заказчику. А затем взвешенно показать ему альтернативные пути развития событий: (1) оставить все, как есть; (2) уменьшить технический долг путем разумного рефакторинга или (3) переписать все нафиг.
Аналогично, если вы будете знать о проблемах ваших разработчиков, типа стремления чрезмерного переписывания или склонность к переусложненным решениям, то вам будет уже значительно легче использовать доступные ресурсы наиболее оптимальным образом. Комбинируя разработчиков таким образом, чтобы плюсы одного разработчика компенсировали недостатки другого, можно снизить риск впадания в крайности.
Помимо использования правильных людей для правильных задач и разумного прагматизма есть еще несколько мыслей, о которых стоит задумываться для снижения всевозможных рисков и принятия неадекватных технических решений.
Управление рисками и инкапсуляция
Джон Роббинс, если вы не знали, прежде чем стать известным bugslayer-ом служил зеленым беретом в армии Соединенных Штатов; и хотя, как он сам признается, в нем сейчас сложно узнать бравого вояку, но некоторые «приемчики», почерпнутые при планировании боевых операций он научился применять и при разработке программных продуктов и управлением рисками.
Да, возможно вопросы, типа «А что будет, если Василий даст дуба до того, как он закончит фазу анализа или сбора требований?» (**) может быть чересчур жесткой и едва ли будет встречена аплодисментами коллег, но вопросы типа «А что если наше текущее решение окажется неверным?» могут быть очень полезными.
Например, вы выбираете, модель взаимодействия с базой данной, библиотеку межпроцессного взаимодействия, СУБД или библиотеку для создания интерфейса пользователя. Каждый раз, принимая подобное решение не лишне спросить себя о том, «А что будет, если это решение окажется ошибочным и нам придется от него отказаться?» Как минимизировать влияние подобной ошибки и во что выльется, если все-таки оно не взлетит?
Основная идея минимизации риска подобных ошибок, заключается в инкапсуляции подобных решений в минимальном числе модулей. Это позволит минимизировать количество модулей, которые придется изменять в случае ошибки и позволит уменьшить как технический долг, так и стоимость последующих изменений.
Например, если вы приняли решение использовать WCF для межпроцессного взаимодействия, то это не значит, что сервисы должны торчать из всех дыр и бизнес-логика должна располагаться прямиком в классах сервисов. Или, если вы используете кастомный протокол взаимодействия, будь-то протокол работы со сторонним оборудованием, ручную реализацию RPC и т.д., то не нужно размазывать информацию об этом тонким слоем по всему приложению. Или вдруг вам еще нравится COM (хотя уже даже Дон Бокс не может на него смотреть), то не стоит каждую фигню заворачивать в СОМ объект.
Это может показаться настолько банальным, что и говорить об этом не стоит (ну или писать тоже), но, к сожалению, такие примеры попадаются слишком часто, чтобы думать, будто все об этом знают.
Инкапсуляция – это не только закрытые поля класса (т.е. сокрытие данных), но это и сокрытие информации и в более широком смысле этого слова. Так что инкапсуляция использования WCF в отдельном модуле является точно такой же инкапсуляцией с архитектурной точки зрения, как и закрытое поле с типом intв вашем классе, с точки зрения дизайна.
Более высокоуровневые абстракции (типа сборок/модулей/любой другой хрени более высокого уровня, чем классы) точно также состоят из публичного интерфейса (абстракции) и реализации (скрытых деталей). Понятие абстракции и инкапсуляции, которые описывают верхушку айсберга – абстракцию, и его подводную часть – инкапсулируя детали реализации, точно также применимы к сборке или модулю, как и к отдельному классу, пусть и применяются они обычно менее формально.
Опять возвращаясь к модулю межпроцессного взаимодействия, мы можем выделить открытый интерфейс этого взаимодействия и максимально спрятать WCF в качестве детали реализации. Я нисколько не сомневаюсь, что из этой затеи на 100% все равно ничего не выйдет и согласно «закону дырявых абстракций» информация о низкоуровневых деталях реализации будет просачиваться в другие уровни или модули. Но хотя бы попытка ответить на простой вопрос «А что будет, если эта хрень не взлетит и придется нафиг отказаться от текущего решения?», должна уменьшить последствия, если вдруг эта хрень и правда не взлетит.
Одна голова хорошо, а две – мутация
Есть масса решений, которые должен принимать один человек. Вряд ли выйдет что-то путевое, если дизайнер будет бегать и спрашивать мнение у всех пятнадцати разработчиков и стараться угодить каждому из них. При этом получится такая хрень, что Windows 3.11 в наши дни покажется верхом дизайнерского искусства и эргономики. Да и если архитектор приложения будет спрашивать совета всех и каждого, у кого есть свое собственное мнение относительно архитектуры системы (а оно, как известно, есть у каждого участника проекта), то результат такой работы тоже не заставит себя долго ждать.
У модели управления типа «колхоз», когда на коллективном собрании принимается решение, какой ORM использовать, есть масса недостатков; но ведь и польза от модели управления, при которой технические решения принимается одним человеком без обсуждений, соплей, слюней и апелляций, тоже весьма сомнительна.
Часто бывает, что в команде есть наиболее опытный «перец», который и принимает единолично все важные архитектурные (и не очень) решения. Эта ситуация полезна для этого самого «перца» (ЧСВ, оно такое ЧСВ), но не так уж полезна для всего проекта, особенно если «перец» не горит желанием спросить совета у других.
Первая проблема связана с тем, что у людей потихоньку вырабатывается привычка, что «перец» прав, при этом у самого «перца» такая привычка появляется тоже. В результате все плывут по течению, никто не оспаривает важные решения, ибо его решениям доверяют. В результате такого отношения качество этих решений падает.
Вторая проблема в том, что есть ряд решений, которые просто нельзя принимать самостоятельно. Я лично не знаю не одного человека, которому я бы доверил проектирование корпоративной библиотеки (себе бы одному я тоже это не доверю) (***). Проблема в том, что понятие повторного использования, хотя и мусолится уже не один десяток лет, все еще остается одной из наиболее сложных задач в нашей области. При проектировании библиотек, которой будет пользоваться даже десяток человек нужно идти на совершенно другие компромиссы и принимать решения, которые вы бы никогда не приняли при проектировании обычного приложения. Тут без «коридорного тестирования» просто нельзя, поскольку то, что тебе кажется простым и понятным в использовании, уж точно не будет таковым для человека, чей мозг находится не в вашей голове.
Если в команде нет полноценного номера 2, то это обязательно приведет к снижению качества решений по очень простой причине. Номеру один (нашему «перцу») тупо не с кем поговорить, чтобы проверить свои решения на вшивость, в результате чего команда может длительно идти не в том направлении, однако поскольку команда варится в своем соку, то заметить это очень сложно.
Кроме того, опытный «перец» может убедить команду и принять откровенно неверное решение, просто благодаря своему опыту. Если собеседники находятся в разных весовых категориях, то более опытному человеку не составит труда переубедить собеседника в своей точке зрения, не зависимо от того, насколько она адекватна. В любом споре, типа что лучше С++ или C#, есть масса аргументов с каждой стороны и более опытный «перец» можно просто называть одни аргументы и умалчивать другие. В результате будет принято решение в интересах «перца», а не в интересах проекта.
В большинстве команд даже ревью чужого кода делается крайне редко, а говорить о ревью спецификации, архитектуры или дизайна вообще не приходится. А ведь даже интуитивно понятно, что чем раньше будет найдена ошибка, тем дешевле ее исправление. Сама мысль о том, что на «мое творение» упадет взор постороннего человека, дополнительно дисциплинирует и повышает качество решения.
Наверняка есть масса других способов, способных смягчить проблемы, описанные в предыдущих заметках, но мне кажется, несколько советов хотя и не избавят от этих проблем, но могут здорово снизить риск их возникновения. Итак, вот они в краткой форме:
1) Прагматизм рулит (не нужно крайностей); этот совет применим всегда и везде, и он же помогает избегать проблем, типа «синдром рефакторинга» и «эффекта второй системы»
2) Не вырубайте свои решения в камне (есть шансы, что вы где-то запороли, и тогда снова придется браться за зубило)
3) Разумно советуйтесь с разумными коллегами, ибо взгляд со стороны всегда полезен
(*) Помимо пользы, от паттернов проектирования может быть и вред. Бездумное и неразумное использование любого даже самого полезного инструмента или технологии приведет к «абсурду и коррупции». Сколько раз вы сталкивались с проблемой “overengineering-а”, когда для реализации простой концепции использовался десяток паттернов проектирования? В общем, это очередной пример того, что прагматизм и здравый смысл, как всегда является лучшим выбором, и паттерны проектирования – не исключение.
(***) Я не говорю о библиотеках аля MiscUtils Джона Скита. Во-первых, его библиотека «выросла» при решении реальных задач, а во-вторых, я просто уверен, что Джон вносил в нее массу изменений на основе фидбека коллег и пользователей. Если хотите хотя бы немного узнать о сложностях проектирования крупных библиотек, полистайте “Framework Design Guidelines” Абрамса и Квалины, там есть масса интересных мыслей по этому поводу.