Содержание к диссертации
Введение
ГЛАВА 1. От описательных к операциональным теориям интеллекта . 11
1.1. Мышление и интеллект. Теории интеллекта. 11
ГЛАВА 2. Программирование как профессиональная деятельность . 20
2.1. Место программирования в ит-профессиях 21
2.2. Психология программирования: цели, задачи и методы 23
2.2.1. Основные цели исследований в психологии программирования . 24
2.2.2. Усовершенствование практики программирования. 25
2.2.3. Усовершенствование методов программирования. 25
2.2.4. Разработка методов оценки качества по. 26
2.2.5. Методы оценки и усовершенствование обучения. 26
2.3. Психологические особенности деятельности по созданию программного обеспечения 28
2.3.1. Модели психической деятельности программиста. 34
2.4. Практика отбора программистов 39
ГЛАВА 3. Профессиографическое исследование деятельности по созданию программного обеспечения 44
1. Цели, задачи и методы исследования. 44
1.1. Цель исследования. 44
1.2. Задачи исследования. 44
1.3 Теоретико-методологическая основа исследования . 44
1.4 Методы исследования. 47
2. Структура деятельности по созданию программного обеспечения. 49
2.1 Содержание этапов разработки по 49
2.2 «Отдельные» деятельности в разработке по 58
Схема 2: Взаимодействие отдельных деятелыюстей в рамках создания программного обеспечения 61
2.3 Построение структуры данных как ключевая деятельность в разработке по гипотетическая аналитическая профессиограмма деятельности программиста при построении структуры данных 67 психологический анализ деятельности по построению структуры данных. 70
ГЛАВА 4. Исследование структуры интеллекта программистов 76
1. Организация исследования 76
1.1. Гипотезы 76
1.2. Методики 77
1.2.1. Компьютерный тест интеллекта I-Stayer 77
1.2.2. Компьютерный тест интеллекта Complex 1Q 80
1.3. Испытуемые 81
1.3.1. Основная группа 81
1.3.2. Фоновая группа 1 82
1.3.3. Фоновая группа 2 83
1.3.4. Фоновая группа 3 83
1.3.5. Сравнительная характеристика профессий, участвующих в исследовании 84
1.3.6. Экспертные оценки 87
1.4. Проведение исследования 87
2. Обработка результатов 89
2.1. Линейная стандартизация 89
2.2. Поиск различий между группами 90
2.3 анализ дисперсии в группах 91
3. Результаты 92
3.1. Поиск значимых различий между группами (основная группа и фоновая группа 1)
3.2. Поиск значимых различий между группами (основная группа и фоновая группа 2)
3.3. Поиск значимых различий между группами (основная группа и фоновая группа 3)
3.4 Анализ дисперсии по группам 96
3.5. Сравнение результатов основной группы с экспертными оценками. 98
4. Интерпретация полученных данных 100
4.1. Результаты тестироваі шя профессиональных групп і 00
4.2. Анализ дисперсии по факторам 108
4.3. Сравнение с экспертными оценками 110
5. Обсуждение результатов 111
ГЛАВА 5. Попытка конструирование теста на способность к усвоению искусственного языка у программистов 121
1. Организация исследования 122
1.1. Гипотезы 122
1.2. Методика. 122
1.2.1. Грамматика искусственного языка. 123
1.2.2. Порядок проведения исследования 123
1.3. Испытуемые 125
1.3.1. Основная группа 125
1.3.2. Фоновая группа 1 126
1.3.3. Фоновая группа 2 126
1.4. Проведение исследования І 26
2. Обработка результатов 127
2. Результаты 128
2.1. Сравнение групп программистов и пользователей интернет по уровню усвоения искусственного языка 128
2.2. Сравнение групп программистов и студентов-психологов по уровню усвоения искусственного языка 129
3. Обсуждение результатов
3.1. Динамика усвоения искусственного языка
ГЛАВА 6. Рекомендации практикам и перспективы исследования . 137
1. Рекомендации 137
1.2. Отбор персонала 13 8
1.3. Профориентация. І 41
2. Меры сходства диагностических профилей. 143
3. Перспективы исследования. 145
Заключение 147
Литература
- Основные цели исследований в психологии программирования
- Теоретико-методологическая основа исследования
- Компьютерный тест интеллекта I-Stayer
- Грамматика искусственного языка.
Введение к работе
Актуальность исследования. Информационные технологии - один из самых динамично развивающихся видов человеческой деятельности, и, зачастую, прогресс в этой области влечет за собой бурное развитие других областей, в первую очередь, за счет появления новых возможностей. Группа профессий в области информационных технологий достаточно обширна, и на сегодняшний день насчитывает около десятка различных специальностей. Они характеризуется общностью целей, средств и условий труда, а вот объект труда особенный в каждой профессии. Наиболее характерной для этой группы является профессия программиста, которая и стала объектом нашего исследования.
Психология программирования — наука о действиях человека, работающего с вычислительными и информационными системами [Шнейдерман Б., 1984]. Изучение психологических особенностей программистов началось практически с того момента, как появилась эта сфера профессиональной деятельности. Однако нельзя сказать, что обилие исследований 1970—1980 гг. поставило точку в вопросе об интеллектуальных свойствах, важных для профессионального программиста.
Мнения специалистов по поводу наличия тех или иных способностей, определяющих успешность деятельности программиста, являются предметом дискуссии. [Бабаева Ю. Д., Войскунский А, Е., 2003, Цейтин Г. С, 1979, Ершов А. П., 1972,DijkstraE., 1976].
По общему признанию профессия программиста требует высокого уровня интеллекта. Чаще всего подчеркивается необходимость таких качеств, как способность к абстрагированию и пониманию отношений между элементами, гибкость мышления, критичность, склонность к планированию, анализу и систематической работе, готовность пополнять знания и переучиваться; признаются существенными и вербальные, и невербальные компоненты мышления. На качественно различных этапах работы программиста перечисленные свойства представлены в разных соотношениях [Бабаева Ю. Д., Войскунский А. Е., 2003; Орел Е. А., 2005]. Э. Дийкстра различает логическое рассуждение (reasoning) и неформализуемое обдумывание, или размышление (pondering), т.е. выдвигает тезис о двух типах мышления, которые «работают» на разных этапах решения
профессиональной задачи [Dijkstra Е., 1976]. Тезис о математическом характере знаний, лежащих в основе программирования, очевиден лишь для математических применений ЭВМ; в общем случае можно сомневаться в первичности математического знания по отношению к программированию [Цейтин Г. С, 1979]. А.П. Ершов [Ершов А. П., 1972] также отрицает приоритет математических способностей, а необходимыми считает инженерные навыки. [Ершов А. П., 1972]. В качестве их психологических составляющих выделяют аналитические способности, пространственное мышление, математические способности и пр. [Скрыпник А. В., 1988], т.е. довольно широкий перечень качеств, свойственных профессиям технической направленности.
Разрабатывались также модели психической деятельности программиста [Шнейдерман Б., 1984, Корнилова Т. В., Тихомиров О. К., 1990]. Шнейдерман предлагает практически ориентированную модель, четко описывает структуру мышления, но не выходит за эти рамки. В отличие от нее, модель Т. В. Корниловой и О. К. Тихомирова исходит из структуры и специфики деятельности в диалоге с компьютером и описывает ее когнитивную и мотивационную составляющие, однако не дает четкого представления о том, какие психологические особенности субъекта способствуют его успеху в программировании.
С целью выявления факторов интеллекта, влияющих на успешность в программировании, мы провели исследование особенностей мыслительной деятельности программистов на ключевых этапах решения профессиональных задач.
Цель исследования состояла в том, чтобы выделить особенности мыслительной деятельности программистов, влияющих на эффективность решения профессиональных задач, а также разработать адекватный предмету исследования методический аппарат для решения прикладных задач отбора и подготовки кадров в этой области.
Объектом исследования является профессиональная деятельность программиста.
Предметом настоящего исследования является структура мыслительной деятельности профессиональных программистов, которая трактуется в данной работе, прежде всего, как соотношение уровня развития различных способностей.
Основные гипотезы исследования:
В структуре мыслительной деятельности программиста преобладают вербальные способности и логическое мышление.
По этим параметрам программисты значимо отличаются от представителей других профессиональных групп.
Программисты решают вербальные задачи, связанные с усвоением и использованием искусственных языковых систем лучше, чем представители других профессиональных групп.
Различия в результатах и динамике усвоения искусственного языка в разных профессиональных группах объясняется спецификой требований к интеллектуальным способностям профессионала.
Реализация поставленной цели и проверка выдвинутых гипотез осуществлялась в процессе решения следующих задач исследования:
Выделить и описать основные этапы деятельности по созданию программного обеспечения, составить ее аналитическую профессиограмму и на основе профессиограммы описать особенности мыслительной деятельности программистов.
Провести поисковое эмпирическое исследование особенностей мыслительной деятельности программистов и сравнить его результаты с результатами для других профессиональных групп.
На основе выделенных особенностей целенаправленно разработать специализированную методику экспресс-диагностики способностей программистов.
Предложить рекомендации по оценке, подбору и профориентации персонала в сфере информационных технологий, основанные на полученных экспериментальных результатах.
Методологической базой данного исследования служит теория деятельности, различные подходы к которой освещены в трудах А.Н.Леонтьева, Б.Г.Ананьева,
Б.Ф.Ломова, К.К.Платонова, Г.М.Зараковского, О.А.Конопкина, В.П.Зинченко и др.; на методику изучения трудовой и профессиональной деятельности, развитую Е.А.Климовым, Г.В. Сухо дольским, В.Д.Шадриковым, А.Р.Карповым, К.М.Гуревич, Е.М.Ивановой и др.; теорию способностей (С.Л.Рубинштейн, К.К.Платонов, В.Н.Мясищев и др.); концептуальный аппарат психологии мышления (О. К. Тихомиров, В. В. Петухов) различные теории интеллекта (М. А. Холодная, В. Н. Дружинин, Г. Айзенк, Ч. Спирмен, Р. Кеттелл, и др.) и традиционная психометрика (А. Г. Шмелев, А.А. Бодалев, В. В. Столин, Л. Ф. Бурлачук и др.).
Методы исследования. В работе был применен арсенал методов, принятых в психологии труда и психодиагностике, позволяющих исследовать объективные и субъективные составляющие профессиональной деятельности.
Для решения поставленных задач нами использовался целый арсенал:
Метод аналитического профессиографирования использовался для выявления структуры профессиональной деятельности программистов. При сборе материала для построения аналитической профессиограммы применялись также методы интервью и анализа продуктов деятельности.
Компьютеризированное тестирование интеллекта применялось для выявления структуры мыслительных операций специалистов в области информационных технологий и их сравнительного анализа с результатами других профессиональных групп.
Экспериментальный метод использовался в исследовании способности усвоения искусственных языков. Тест усвоения искусственного языка ALMT был специально разработан в ходе данного диссертационного исследования.
Статистические методы обработки данных применялись для обработки результатов исследования.
Достоверность и обоснованность полученных результатов обеспечиваются применением методов получения и обработки данных, адекватных предмету и задачам настоящего исследования, организацией экспериментов в соответствии со стандартами экспериментальной психологии, психологии труда,
системностью исследовательских процедур, тщательностью качественного анализа материалов, а также использованием при обработке результатов современных статистических методов, отвечающих специфике эмпирических данных. Научная новизна работы заключается в следующем:
Выявлена полная психологическая структура деятельности по созданию программного обеспечения, описаны ее ключевые особенности, влияющие на эффективность решения профессиональных задач.
Проведено исследование структуры мыслительной деятельности программистов, включающее в себя диагностику всех основных когнитивных способностей.
Впервые обозначена роль вербального компонента мышления в профессиональной деятельности программиста.
Впервые на русскоязычном материале была сконструирована методика работы с искусственными языками, моделирующую профессиональную деятельность программиста, с одной стороны, и не требующую специальных знаний, с другой.
На основе полученных результатов предлагается система психологических критериев по оценке профессиональных программистов и диагностики способностей к программированию у оптантов.
Теоретическая значимость работы. Исследование, проведенное в рамках психологии профессий, вносит вклад в изучение психологических особенностей специалистов в области информационных технологий. Нами проанализированы некоторые особенности мыслительной деятельности представителей ключевой профессии группы ИТ-специальностей - программиста. Работа освещает ряд особенностей деятельности программиста, которые определяют успешность решения профессиональных задач.
В исследовании деятельность по созданию программного обеспечения рассматривается в парадигме теории деятельности, как сложное образование, состоящее из нескольких этапов, каждый из которых может быть рассмотрен, как отдельная деятельность. В работе дана психологическая характеристика каждого
этапа, и выделена отдельная деятельность, влияющая на результат работы в целом. С помощью метода аналитического профессиографирования выделяются психологические особенности этой отдельной деятельности и обосновывается их ключевое значение в профессиональной деятельности программиста.
Практическая значимость. Результаты исследования могут быть использованы в практике отбора персонала на группу должностей, связанных с программированием, в профессиональной ориентации и переориентации. Сконструированная экспресс-методика, моделирующая особенности мыслительной деятельности программистов, может быть использована для практических и исследовательских целей в рамках диагностической батареи.
Апробация работы проводилась на кафедре психологии труда и инженерной психологии МГУ имени М. В. Ломоносова. Диссертационная работа и отдельные результаты и главы докладывались на Международных научных конференциях студентов, аспирантов и молодых ученых «Ломоносов» (Москва, 2002, Москва, 2004), 9-м Европейском психологическом конгрессе (Гранада, 2005), 5ой Международной научно-практической конференции «Личностно-развивающее профессиональное образование» (Екатеринбург, 2005), межрегиональной научно-практической конференции «Прикладная психология как ресурс социально-экономического развития современной России» (Москва, 2005), а также на заседаниях лаборатории психодиагностики факультета психологии МГУ им. М. В. Ломоносова (Москва, 2004, 2005, 2006) и кафедры психологии труда и инженерной психологии МГУ им. М. В. Ломоносова (Москва, 2004, 2005, 2006). Положения, выносимые на защиту: 1. В работе обоснован подход к анализу мыслительной деятельности программистов, основанный на комплексном профессиографическом исследовании специальности, в котором были выделены этапы деятельности по созданию программного обеспечения, а также мыслительные действия, обеспечивающие их успешное выполнение. Ключевой деятельностью в этой системе, влияющей на все остальные, является деятельность по созданию и описанию структуры данных.
К особенностям мыслительной деятельности программистов относится превосходство (по сравнению с другими профессиональными группами) по вербальным и формально-логическим компонентам мышления, а также по эрудиции, и, вопреки ожиданиям, невысокий уровень развития операций по переработке числовой информации.
Разработан и апробирован новый методический аппарат, предназначенный специально для исследования особенностей мыслительной деятельности специалистов в области информационных технологий, реализованный в форме компьютеризированной психодиагностической методики по усвоению искусственного языка, не требующей специальных знаний в области программирования.
Объем и структура диссертации. Диссертация состоит из введения, пяти глав, заключения с выводами, девяти рисунков, пятнадцати таблиц, библиографии и четырех приложений. Общее количество страниц - 167.
Основные цели исследований в психологии программирования
Опираясь на профессиоведческую литературу (Воробьев, 1988, Элиович, Шинкарук, 2003), можно выделить следующие профессии в рамках информационных технологий:
Программист. Это - базовый класс профессий для информационных технологий. Программист занимается разработкой программного обеспечения. Внутри этого класса можно выделить отдельные профессии, различающиеся по производимому конечному продукту:
Системный программист - в его задачи входит разработка и создание операционных систем, крупных программных пакетов (несколько программ, связанных общими задачами и потоком данных), драйверов (программ для связи с периферийными устройствами), сред программирования, баз данных Прикладной программист - занимается созданием отдельных прикладных программ Метапрограммист (параметрический программист) -создает небольшие программы в рамках программных пакетов, например, макросы для MS Word, базы данных в Access.
Кодер, верстальщик - описывает алгоритм работы программы на каком-либо языке программирования, или верстает дизайн сайтов с помощью специального языка html. Кодер не создает алгоритмов сам, он описывает процессы, которые были придуманы другими людьми. Разработчик вычислительной техники. Занимается разработкой, созданием и конструированием оборудования. В рамках этой профессии разрабатываются компьютеры, периферия и отдельные электронные устройства.
Тестеры. Отдельная профессия, основная задача которой - найти ошибку в разработанном программистами программном обеспечении. Тестируется не только функционал программы, но и ее устойчивость к нагрузкам, поведение при ошибках, защиты от взлома и пр.
Технические писатели. Составляют техническое задание и документацию к готовому ПО. В их задачи входит тщательное описание всех функций программы с точки зрения пользователя, если это документация, и программиста, если это техническое задание.
Специалисты службы технической поддержки. В задачу этой профессии входят консультации пользователей по вопросам настройки и использования программного обеспечения. Здесь специалист должен владеть полной информацией о продукте, но умение программировать совершенно необязательно.
Системные администраторы. В их задачу входит создание, настройка и поддержание работоспособности компьютерных сетей. Они работают как с оборудованием, так и со специальным программным обеспечением. Но сами программы практически не разрабатывают.
Администраторы баз данных. Они управляют базами данных и поддерживают их связь с другими приложениями. Базы данных управляются с помощью специальных языков, но, в отличие от программистов, администратор баз данных не занимается созданием новых программных продуктов, Управляющие и обслуживающие профессии в ИТ. К этой группе профессий относятся все те, кто организует и создает условия для работы в сфере информационных технологий. К ним относятся менеджеры проектов, занимающиеся контактами с заказчиками и координацией работы группы профессионалов, менеджеры по продажам, в чью задачу входит продажа и лицензирование программных продуктов, аналитики, ИТ-консультанты и пр. У всех этих профессий есть одна общая черта: они должны досконально знать программный продукт, с которым работают, но при этом умение программировать для них совершенно необязательно.
Психология программирования - это наука о действиях человека, работающего с вычислительными и информационными системами (Шнейдерман, 1984). Знания о возможностях и способностях человека как создателя вычислительных систем могут быть углублены с помощью методов экспериментальной психологии, анализа процессов восприятия и мышления, методов социальной и индустриальной психологии, психологии личности и даже психолингвистики. Применение психологических знаний для оценки и конструирования информационных систем, а также знание особенностей, способствующих эффективной деятельности внутри них, позволяет уменьшить затраты времени и расходы на разработку и дает долговременные преимущества благодаря усовершенствованию качества систем.
Однако исследователи в области психологии программирования сталкиваются с трудностями в организации исследования, что, зачастую, является существенным препятствием для решения научных задач. Для того чтобы выполнить качественное исследование в области психологии программирования, необходимо тесное взаимодействие с профессионалами на разных этапах их профессионального пути. До сих пор основные исследования в психологии программирования были направлены на изучение:
В самом широком смысле предметом исследования психологии программирования являются всевозможные способы использования человеком ЭВМ, но основной упор в ней делается на разработку программного обеспечения, применения средств информационного обслуживания и проектирования интерфейса. Часто речь идет о таких предметах, как языки программирования, языки управления операционными системами, средства обращения к базам данных, средства автоматизированного обучения, персональные вычислительные средства, программы редактирования и пр.
Цели, которые преследуют исследования в области психологии программирования, можно условно разбить на две группы. В первую входят работы, посвященные тому, как сделать работу на компьютере наиболее удобной для человека. В конечном итоге, эта ветвь обособилась в самостоятельную область исследований Human-Computer interaction и usability (русский термин пока, увы, является лишь калькой с английского - «юзабилити», так как меньше, чем двумя словами «удобство пользования» по-русски выразиться не удается).
Теоретико-методологическая основа исследования
Мы считаем целесообразным рассматривать ПОСТРОЕНИЕ СТРУКТУРЫ ДАННЫХ как ключевую деятельность в разработке ПО, так как она обладает наибольшим количеством связей с другими деятельностями в рамках этого процесса, и их результаты напрямую зависят от верного построения структуры данных в будущей программе.
В литературе по программированию проработке структуры данных уделяется особое внимание, посвящаются целые фундаментальные труды (Райли, 1993, Вирт, 2001, Браунси, 2002). Обычно первым делом обозначается важность соответствия структуры данных требованиям задачи.
Решая любую задачу, необходимо выбрать уровень абстракции, т.е. определить множество данных, представляющих реальную ситуацию, на основе требований решаемой задачи. Затем выбирается способ представления этой информации, ориентируясь на средства, с помощью которых задача решается. Выбор представления данных часто является достаточно трудной проблемой, т.к. не определяется однозначно доступными средствами. Всегда нужно принимать во внимание операции, которые выполняются над данными: от этого напрямую зависит способ их хранения, обработки и защиты от перезаписи (как со стороны пользователя, так и со стороны программных средств и самой выполняемой программы). В качестве примера авторы работ о структурах данных приводят представление чисел. Числа сами по себе уже являются абстракциями некоторых свойств объектов, которые следует как-то охарактеризовать. Если единственной операцией над числами будет сложение, то хорошим способом представить число п будет просто последовательность из п черточек. В основе римского представления чисел положен тот же принцип простоты, и правила сложения небольших чисел достаточно просты. С другой стороны, «арабское» представление чисел требует далеко не очевидных правил (даже для небольших чисел), эти правила требуют запоминания и заучивания наизусть. Ситуация, однако, меняется, если речь заходит о сложении больших чисел или введении умножения и деления. Разложение таких операций на более простые оказывается значительно проще в случае арабского представления, что объясняется систематичностью представления, основанного на «позиционном весе» цифр числа.
Вопросы представления данных часто разбиваются на несколько уровней детализации. Например, для того, чтобы решить вопрос о виде представления некоторого объекта в системе координат, можно воспользоваться несколькими разными способами. Причем выбор решения о представлении данных зависит, во-первых, от специфики решаемой задачи, а во-вторых, от того, какие средства предполагается использовать для ее решения (тип процессора, характеристики запоминающего устройства). При этом для программиста основным критерием выбора представления данных остаются, все же, требования задачи. Учитывать особенности используемых средств бывает важно в тех случаях, когда это специально оговорено (например, написать ПО под новый тип устройств).
В таком контексте становится ясным значение языков программирования. Любому языку программирования соответствует некоторая абстрактная машина, способная интерпретировать понятия, используемые в этом языке. Это тоже некоторый уровень абстрагирования от реальных устройств, использованных в реальных машинах. Таким образом, программист, использующий язык высокого уровня, освобождается от решения некоторых вопросов, которое осуществляется на элементарном, машинном уровне. Значение использования любого языка, представляющего подходящее множество основных абстракций, общих для большинства задач обработки данных, заключается, главным образом, в том, что это приводит к получению надежных программ.
Легче строить программы, основываясь на таких знакомых понятиях, как числа, множества, последовательности и повторения, вместо разрядов, ячеек и переходов. В реальной машине все данные выглядят как огромные массивы разрядов. Но для программиста в большинстве случаев все это не имеет значения, так как он не беспокоится о деталях выбранной абстракции, так как уверен, что на машине выбрано наиболее уместное представление данных.
Основные действия, выполняемые программистом в рамках деятельности по созданию структуры данных:
Сопоставление характеристик и формата исходных данных и результата ее работы. Необходимо точно установить, в каком формате необходимо получить результат (числовой, текстовый, формат даты, часть кода на более простом языке программирования и пр.), как представлены исходные данные, достаточно ли их для получения результата, или необходимы уточнения.
Поиск математической модели решения задачи. Для большинства простых задач математические модели решения уже существуют, поэтому задача сводится к тому, чтобы найти уже похожую решенную задачу и приспособить модель ее решения под имеющиеся данные. В более сложных случаях возможно разбиение задач на несколько простых и совмещения уже имеющихся моделей. Но бывают случаи, когда перед программистом стоит задача совершенно нового типа, и математическую модель ее решения приходится выстраивать заново. Часто для облегчения представления условий задачи программисты используют разветвленные графические схемы, которые позволяют наглядно представить ход преобразований для решения задачи и учесть все возможные случаи работы программы.
Компьютерный тест интеллекта I-Stayer
Постоянно следить за тем, что происходит в профессиональной области, легче, если у человека развита познавательная активность. То есть, если человек привык интересоваться чем-то сам, за пределами того, чему его учат (или ему говорят), привык задавать вопросы и искать на них ответы, то ему гораздо проще быть в курсе того, что происходит в его профессии.
Эрудиция как свойство интеллекта отражает способность человека проявлять познавательную активность. Причем обычно она распространяется не только на ту, довольно узкую, предметную область, в которой работает человек, но и на окружающий мир в целом. Поэтому общая эрудиция показывает, насколько ему интересен мир за пределами своих жизненных потребностей.
Следовательно, по полученным нами данным, можно сделать вывод о том, что проявления познавательной активности способствует успешности в программировании, так как этот вид активности необходим, чтобы следить за происходящим в своей предметной области.
Отсутствие различий между программистами и студентами-психологами также косвенно подтверждает этот факт. Учебная деятельность постоянно стимулирует познавательную потребность. В процессе учебы, с одной стороны, специально моделируются ситуации, в которых, поощряется самостоятельная познавательная активность студента, стимулируется его желание узнать, «потрогать руками» предмет будущей профессиональной деятельности. А с другой стороны - цена ошибки в такой смоделированной ситуации гораздо ниже, чем цена ошибки в такой же ситуации в реальной работе. Если в процессе учебы студент не справляется с самостоятельной работой, это грозит ему, в худшем случае, низкой оценкой. Тогда как в реальности за выполнение задания профессионал обычно несет, как минимум, материальную ответственность. И, следовательно, в учебной деятельности проявление познавательной активности встречает только положительное подкрепление (Божович, 1985, Маркова, 1990).
Однако довольно большая дисперсия баллов по этому фактору в группе программистов позволяет предположить, что эрудиция не является специфическим условием для успеха в программировании. Анализ данных показал, что среди респондентов есть как те, кто набрал высокий балл по этому фактору, так и те, чей балл был близок к среднему значению по шкале. Но выделить среди этих респондентов группы, которые могли бы объяснить высокую дисперсию по этому фактору, нам не удалось. Помочь прояснить вопрос о том, почему дисперсия именно по этому фактору оказалась столь высокой, возможно, помогла бы наблюдение за дальнейшей профессиональной судьбой респондентов, однако в рамках нашего исследования это не представляется возможным. Возможно, те, кто показал средние результаты по эрудиции, пока работают успешно за счет знаний, полученных в учебных заведениях, а не самостоятельно, либо также возможно, что эрудиция не является необходимой для программиста особенностью. Визуальная логика
Ни по одному статистическому тесту мы не получили значимых различий по визуальной логике. Это означает, что пространственное мышление никак не сказывается на успешности в программировании. Формальная логика
Результаты сравнения баллов по этой шкале с эталонным значением (среднее по шкале IQ) показывают, что эмпирическое среднее, полученное на выборке программистов выше, чем ожидаемое. К сожалению, мы не располагаем данными о том, значимы ли различия между фоновой и основной группами, из-за артефакта, испортившего результаты бухгалтеров. Однако, некоторые выводы мы сможем сделать и исходя из имеющихся данных. Результаты сравнения программистов и студентов-психологов говорят о том, что у программистов это свойство мышления выражено сильнее.
Выше, в первой главе нашей работы, мы уже давали обзор мнений о том, какие качества являются существенными для программистов. В том числе, упоминалось и логическое мышление (Dijkstra, 1976, Уэзрел, 1982). Полученные нами данные, в принципе, являются подтверждением этого тезиса.
Способность последовательно и логично рассуждать необходима на этапе построения структуры данных, а также при проектировании программы. Без того, чтобы четко описать последовательность команд, переходы между ними и условия, при которых они должны выполняться, работа программиста невозможна. Чтобы успешно справиться с этими задачами, необходимо развитое логическое мышление.
Итак, несмотря на то, что мы можем опираться на результаты только двух статистических процедур из трех, можно сделать вывод о том, что логическое мышление является важным фактором успешности в деятельности программиста.
Грамматика искусственного языка.
Далее эти показатели по каждой шкале суммируются и усредняются. Возможно использование весовых коэффициентов, показывающих значимость каждого фактора.
Однако для всех этих способов не существует критерия определения уровня значимости сходства / различия профилей. По-видимому, меру сходства нужно устанавливать эмпирически и конвенционально, как и для многих других статистик (как, например, для показателя надежности альфа Кронбаха).
Как видно, наше исследование ни в коем случае нельзя считать точкой в вопросе определения профессионально важных качеств и компетенций в работе программиста. Перспективными направлениями дальнейших разработок в этой области являются исследования различий особенностей мышления между разными группами специалистов в информационных технологиях, исследования личностных и мотивационных особенностей этой группы профессий, изучение наиболее успешных когнитивных стратегий решения задач в этой области. К тому же, динамика профессии делает необходимой постоянную перепроверку уже полученных данных, чтобы практические рекомендации, вытекающие из научной работы в области психологии программирования, не устаревали.
В нашей работе охвачена лишь небольшая область психологии программирования. Мы отдаем себе отчет в том, что его результаты никак не претендуют на то, чтобы представить все аспекты мыслительной деятельности программиста. В этом контексте перспективными также можно назвать исследования творческого мышления в этой области - мы уверены, что творчество и возможность создать принципиально новый продукт - это очень важный аспект работы программиста. Программирование - это уникальная специальность, в том смысле, что оно объединяет две вещи, которые в сознании людей обычно являются противоположными -творчество и рутинную работу (Орел, 2003). Уникальный продукт, созданный программистом, не сможет существовать, если каждая деталь, каждая строка кода не будет выверена до последней запятой. И в этом смысле мышление программиста, как нам представляется, несет в себе уникальное сочетание творческой широты, способности выйти за пределы существующей реальности, и точности и скрупулезности по отношению к деталям. Причем наверняка, эта особенность профессии влияет и на другие составляющие личности профессионала - мотивационную и эмоциональную.
Таким образом, перспективы исследования в этой области безграничны, что определяется особенностями самой профессии, и вряд ли когда-нибудь можно будет поставить финальную точку в работах по психологии программирования.
Итак, нами было проведено исследование особенностей мыслительной деятельности программистов. В контексте нашей работы эти особенности понимались, как психодиагностический профиль мыслительной деятельности, и при этом постулировалось, что такой профиль позволит нам сделать вывод о структуре мыслительных операций изучаемой группы специалистов.
По результатам нашей работы были сделаны следующие выводы:
Деятельность по созданию программного обеспечения (основная профессиональная деятельность программиста) обладает сложной многопризнаковой структурой и может быть разделена на отдельные деятельности, связанные между собой, причем каждая следующая деятельность базируется на результатах предыдущих.
Ключевой деятельностью в создании программного обеспечения является построение структуры данных, так как от ее результатов зависит успешная реализация остальных деятельностей в рамках создания программного обеспечения. От успешной реализации этого этапа в наибольшей степени зависит корректная работа программы, являющейся результатом всей деятельности по построению программного обеспечения.
В структуре мыслительной деятельности программиста можно выделить особенности, оказывающие влияние на эффективность работы. К ним относятся вербальные операции (работа с языковыми структурами), логическое мышление (владение формально-логическими операциями) и эрудиция, как показатель общей познавательной активности человека. Определяющая роль именно этих способностей подтверждается как на эмпирическом, так и на теоретическом уровне.
Программисты демонстрируют тенденцию быстрее усваивать новые языковые структуры, чем непрофессиональные пользователи ЭВМ. Эти результаты также говорят в пользу того, что уровень развития вербальных операций делает существенный вклад в успешную реализацию профессиональной деятельности.
Программирование является одной из самых динамично развивающихся областей человеческой практики, и поэтому полученные результаты можно рассматривать только в контексте современного этапа его развития.
Наше исследование ни в коем случае нельзя считать точкой в вопросе определения особенностей мыслительной деятельности программиста. Перспективными направлениями дальнейших исследований в этой области являются исследование различий особенностей мышления между разными группами специалистов в информационных технологиях, исследование личностных и мотивационных особенностей этой группы профессий, изучение наиболее успешных когнитивных стратегий решения задач в этой области. К тому же, динамика профессии делает необходимым постоянную перепроверку уже полученных данных, чтобы практические рекомендации, вытекающие из научной работы в области психологии программирования, не устаревали.