Эта статья представляет собой историческое размышление над областью, широко описанной как психология программирования (ПП), как она была разработана за 50 лет существования Man-Machine Studies (MMS), а затем Human-Computer Studies (HCS). Определение сферы охвата психологии программирования в ряде академических и профессиональных сообществ являются ключевыми вопросами.
Поскольку языки программирования и технологии меняются, любой обзор психологии программирования за эти годы должен учитывать, какие виды программной технологии и деятельности следует рассматривать как подпадающие под определение "программирование". В интерфейсах прямого управления действия пользователя оказывают немедленное, инкрементное и обратимое воздействие.
Последние десятилетия исследования включали в себя ряд тем, которые имеют общие характеристики программирования, но в которых ни пользователи, ни исследователи не обязательно использовали бы это слово. Классическим примером может служить изучение использования электронных таблиц, которое является основной темой в психологии программирования, несмотря на то, что многие пользователи не понимали, что электронные таблицы также являются языком программирования.
1970-е годы (1969-1978): когнитивная работа программиста.
Первой работой, непосредственно посвященной психологии программирования в MMS, была "Психологическая оценка двух условных конструкций, используемых в компьютерных языках". Широко признанная классикой, эта статья также стала первой в списке работ, отобранных для повторного издания в MMS. За все десятилетие 14 статей в журнале были посвящены когнитивным процессам программирования и возможностям повышения производительности за счет изменений в языковом дизайне. В них были изучены другие специфические особенности языка, а также новая парадигма структурированного программирования.
Методы исследования и теоретические проблемы этих ранних работ отражали растущий интерес к когнитивной психологии в 1960-х и 70-х годах, который был направлен на достижение более глубокого понимания человеческого обучения и решения проблем, таких как логические головоломки. Разрабатываемая вычислительная теория ума также отражала ранние достижения искусственного интеллекта, среди основных целей которого были общие теории машинного обучения.
Таким образом, проблемы индустрии программного обеспечения предоставили ценную возможность для применения таких исследований, одновременно продвигая новую повестку дня когнитивной науки, которая привлекла многих исследователей с пониманием как психологии, так и программирования.
1980-е годы (1979-1988 годы): когнитивные модели в масштабе
Были разработаны и усовершенствованы когнитивные модели с навыками, необходимыми профессиональному программисту для понимания и обоснования более сложных программ и структур данных. Контролируемые эксперименты все еще сравнивают и оценивают варианты дизайна для специфических особенностей языка, изучая их как с точки зрения семантики, так и синтаксиса.
Более пристальное внимание уделялось пониманию и разложению проблем, а также ментальным моделям и репрезентации. Переходя от доминирующей парадигмы структурированного программирования, были проведены первые эмпирические исследования для сравнения процедурных и декларативных парадигм, а также первые шаги к не функциональным признакам исходного кода, описанным как "программная эстетика". Letovsky определил ключевые типы поведения при проверке кода:
- реконструкция дизайна;
- психологическое моделирование;
- перекрестная проверка документов.
Pennington добавил в литературу по стратегиям понимания при программировании доказательства того, что перекрестные ссылки на мир домена и мир программ облегчают понимание. Spohrer и Soloway проанализировали ошибки, которые делают начинающие программисты, решая вводные проблемы программирования, выявляя высокочастотные ошибки и некоторые из основных проблем, которые способствуют их возникновению. Lewis и Olson рассмотрели барьеры для конечных пользователей и определили две тактики, облегчающие им программирование.
1990-е годы (1989-1998 годы): профессиональные навыки и процессы
В 1990-е годы MMS включала еще 53 статьи по психологии программирования, в которых особое внимание уделялось навыкам, необходимым в более крупных проектах, где программистам требовалось собирать информацию о коде, предоставленном другими, или повторно использовать код, который они сами не писали. Рассмотрение более крупных программных проектов мотивировало повышенное внимание к когнитивным задачам разложения проблем и стратегиям их решения в рамках планов программирования, а также к более тщательным исследованиям экономической эффективности и действенности.
Исследования, проведенные в течение этого десятилетия, распространились на многие другие части жизненного цикла разработки программного обеспечения, включая анализ требований, отладку, отслеживание и обслуживание, а также координацию работы команды, необходимую в более крупных проектах. Многие из этих мероприятий были связаны со специализированными обозначениями, а не с обычным исходным кодом, что привлекло внимание к свойствам таких обозначений, влияющим на удобство использования.
Широкая осведомленность о различных уровнях производительности труда профессиональных программистов в сочетании со спросом на новых сотрудников и стажеров привлекли повышенное внимание к индивидуальным различиям между программистами, включая необходимость оценки или прогнозирования навыков программирования во время найма. Сравнения между экспертами и новичками продолжали предлагать способы понимания профессиональных навыков и направлять образовательные инициативы, включая эмпирическую оценку конкретных стратегий преподавания.
2000-е годы (1999-2008 годы): социальное предприятие кодекса
Число документов, посвященных психологии программирования в 2000-е годы, было меньше, чем в предыдущее десятилетие. В течение этого периода продолжались исследования когнитивных задач, которые были необходимы в более крупных проектах, таких как деятельность по пониманию и сопровождению. Гораздо больше внимания уделялось организационным проблемам в больших проектных группах, учитывая координацию и личную динамику команды, организационную психологию и подходы к взаимодействию с пользователями вне команды разработчиков ПО.
Продолжались сравнительные исследования альтернативных языков программирования, которые теперь выходят за рамки моды объектно-ориентированного программирования и включают в себя логические и функциональные парадигмы программирования, а также оценку синтаксиса визуального языка и визуальных обозначений и диаграмм. Некоторые выводы из таких исследований были также изучены в отношении начинающих программистов, например, для информирования о педагогической практике с использованием анимационных алгоритмов или других представлений.
2010-е годы (2009-2018 годы): кодекс в новом контексте
В последнее десятилетие в HCS появилось всего 10 статей по психологии программирования. Сокращение количества таких документов в целом объясняется главным образом тем, что в настоящее время существует много специализированных сообществ для реализации исследовательских программ, созданных в предыдущие десятилетия, включая крупные сообщества исследователей в области эмпирической разработки ПО и компьютерного образования. Кроме того, многие сообщества сосредоточились на разработке новых языков программирования и инструментов программной инженерии, также включив психологию программирования в свои собственные исследования.
Продолжается углубленный анализ процессов разработки программного обеспечения, выходящих за рамки стандартной бизнес модели, включая сообщества с открытым исходным кодом, изучение языка в социальном контексте. Бизнес инструменты для конечных пользователей, такие как электронные таблицы, рассматриваются в качестве примеров других способов программирования. И в этот период мелкомасштабное программирование также получило все более широкое распространение в домах людей в результате использования интернета.