Важным аспектом формирования мастерства является компонентное знание и компонентные навыки. Как можно практиковать такого рода достижения и получать их? Естественно, прежде все, нужно заметить, что разработчики будут работать неэффективно, если они не могут в совокупности осуществлять сложные действия, которые отличают мастера или эксперта от начинающего программиста, начинающего разработчика, начинающего тестировщикам, архитектора и т. д. При этом компонентные навыки изначально слабы или отсутствуют. И для того, чтобы их развивать, необходимо практиковать их сначала по отдельности, а затем пытаться в совокупности обладать этими навыками. Для этого придется в любом случае довести до автоматизма те из них, которые, так сказать, находятся на нижнем уровне. В зависимости от сложности или специфики задачи можно постепенно увеличивать уровень интеграции этих навыков и те самые навыки, которые происходят и прививаются неосознанно, будут все более и более занимать вот эту нишу неосознанного употребления, неосознанного использования в контексте комплексной практики. Важным аспектом мастерства особенно в приложении к экспертам высокого уровня является так называемая когнитивная нагрузка или возможность одновременно сочетать несколько видов деятельности таким образом, что некоторые из них существенным образом выполняются неосознанно или подсознательно. Естественно, для новичков переход к этому уровню достаточно сложный и многозадачность или выполнение параллельно нескольких действий в рамках, так сказать, одного глобального действия требует существенного сосредоточения и высокой нагрузки. Для новичков это тяжело. Каким образом, можно повысить производительность и снизить эту когнитивную нагрузку на первых этапах обучения для того, чтобы более эффективно организовать свою работу и перейти к новому уровню мастерства? Многозадачность, как уже было сказано, снижает производительность и создает когнитивную нагрузку. Естественно, для того, чтобы уменьшить когнитивную нагрузку, нужно практиковать как можно меньше навыков параллельно. При этом какие подходы можно использовать? Ну, во-первых, можно практиковать эти навыки по отдельности, а затем попытаться их объединить. Во-вторых, можно построить обучение или передачу информации таким образом, чтобы сконцентрироваться на главном, а рутинные операции поручить, скажем, выполнять либо другим сотрудникам на этом этапе, либо использовать по максимуму возможности автоматизации, т. е. поручить эти задачи, скажем так, компьютеру. Ну, и наконец, можно использовать так называемые работающие примеры или учиться на полуфабрикатах. Т. е. определенную часть работы выполнить заранее, подготовить себе тот фронт работ, который должен быть выполнен или должен будет выполняться в перспективе неосознанно, подготовить его заранее. И дальше пользоваться им, как справочным аппаратом, как, скажем, списком формул, ключевых показателей деятельности или каких-то других стандартных библиотечных функций, а сосредоточиться опять-таки на главном. Рассмотрим, каким образом можно повышать степень мастерства. Это можно делать за счет того, что называется переходом, т. е. применением базовых навыков вне исходного контекста, в более абстрактной форме, в более общем, так сказать, контексте, в более общем плане, на более высоком экспертном уровне. При этом, естественно, застревание в контексте, сверхспецифичность или зависимость от конкретного контекста, конкретного проекта, конкретной технологии может существенно осложнить повышение уровня мастерства и так называемый переход. Какие подходы можно использовать для того, чтобы избежать такого рода застревания в контексте? Это метафоричность. Метафоры, как мы помним, широко используются в гибких методологиях разработки. Сравнение, абстрактные знания, аналогии, визуальное представление, небольшие подсказки или напоминания. Все это позволяет существенно повысить уровень мастерства как индивидуально, так и в команде.