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