Старая поговорка, которой придерживаются многие программисты, гласит: «Для изучения программирования требуется определенный тип ума, и не каждый может это сделать».
Теперь я уверен, что у всех нас есть своя собственная история неподтвержденных данных, но было ли это изучено с научной точки зрения?
case-studies
Система не работает
источник
источник
Ответы:
Другое исследование « Исследование жизнеспособности ментальных моделей, проводимое начинающими программистами» :
Кроме того, см. Более поздние исследования тех же авторов исследования «Овцы против коз» (которое никогда не было опубликовано, чтобы быть ясным). Их последним и самым последним исследованием по этой теме с 2009 года является Мета-анализ влияния последовательности на успех в раннем изучении программирования (pdf).
источник
Да, в Интернете есть довольно известная статья, разработанная для того, чтобы более или менее определить, «Кто исключен из числа программистов».
Когнитивное исследование раннего обучения программированию - профессор Ричард Борнат, доктор Рэй Адамс
Вот запись в блоге Джеффа Этвуда, которая интерпретирует результаты и помещает некоторые вещи в контекст.
источник
Любой может быть программистом. Подумайте, как легко люди понимают электронные таблицы. Подумайте, с какой готовностью Алан Кей знакомит детей с программированием с помощью экспериментов и исследований в программируемой среде.
Люди могут изучать успехи на курсах на уровне колледжа и делать вывод, что «некоторые люди не подходят для изучения программирования». Однако такой вывод сильно выходит за рамки наблюдаемых доказательств. Сколько неудач можно было бы отнести к тому, как преподается программирование (слишком абстрактно?), Или какой стиль программирования преподается (слишком императивно?), Или к среде программирования (компиляция, без немедленной обратной связи?).
Хорошо известно, что люди постигают абстракции наиболее легко после того, как они уже работают с несколькими конкретными примерами - то есть, что мы не можем чему-то научиться, пока мы почти не знаем это. Поэтому начинать с абстракции - совершенно глупый способ обучения программированию. Многие люди, которые спотыкаются о предвзятых «ментальных моделях», преуспели бы, если бы преподавали в более конкретной среде с обратной связью в реальном времени (например, в Академии Кан для КС ), а затем поощряли подниматься по лестнице абстракции, когда они готовы к этому. Learnable Programming - недавнее эссе Брета Виктора, в котором обращается внимание на ненужные экологические проблемы, с которыми сталкиваются программисты в процессе обучения.
В некоторых случаях это студенты проваливают свои занятия. Интеллектуальная лень и преднамеренное невежество будут существовать в любой большой группе людей. Умные люди не исключение, как может засвидетельствовать любой, кто спорил с блестящим чудаком. Но, особенно в программировании и математике, часто ученики терпят неудачу.
источник
x = 1; y = x;
и вопрос " Каковы значенияx
иy
? "Is it true that not everyone can learn how to program?
строку из вопроса, наши более опытные участники проигнорировали ее, осознав, что она не соответствует нашим рекомендациям, и сосредоточили свои ответы на исследовательских / научных аспектах вопроса. Не могли бы вы сделать то же самое?Может быть, это анекдотично, но когда я преподавал интро-программирование нескольким сотням студентов гуманитарных наук, я не нашел такого «двойного горба». Мне показалось, что они все вполне способны, хотя некоторые работали усерднее других, и очень немногие пытались обмануть их.
Многое связано с тем, как этому учат.
Многое также связано с желанием - некоторым не нравится программирование. Но даже в этом случае, они могут изучить это, если они приложат это честное усилие.
источник
Когда я начинал, было обычным проходить «тест на способности», прежде чем ты получил работу по программированию. Выпускников по информатике было не так много, поэтому было принято набирать сотрудников из других дисциплин.
Тесты были похожи на то, что вы видите на тестах IQ (каков следующий номер в последовательности и т. Д.).
Неподтвержденным свидетельством было то, что, хотя не каждый, кто прошел тест, стал хорошим программистом, никто, кто не прошел тест, но был нанят по другим причинам, никогда не становился хорошим программистом.
К сожалению, HR-дроны не поняли эти тесты (и потерпели неудачу, когда их взяли!), Поэтому набор в эти дни зависит от того, что понимают HR-дроны - хорошие навыки обучения в колледже, общения и ношения костюмов.
Это в значительной степени причина того, что в крупных ИТ-отделах есть много людей, которые великолепно выступают в PowerPoint, и очень мало хороших программистов.
источник
Тем, кто ссылается на исследование «Двойной горб» или «Козел против овец» Дехнади и Борната, стоит проверить умственные модели и способности программирования, сделанные Касперсеном и др. (2007), в которых они пытаются воспроизвести его:
источник
Можно изучать возможности абстракции или другие полезные знания, но определение программирования неясно, и я думаю, что цитата не имеет значения, потому что существуют разные способы взглянуть на программирование:
Первый тип: языки программирования (или должны быть) неким человеческим языком, созданным для описания задачи, которую должен выполнить компьютер, поэтому каждый, кто говорит, должен иметь возможность программировать. Это называется сценарием, бейсиком, системой набора текста TeX и т. Д. Язык или система не имеют значения, это то, как их создатели и люди смотрели на это: «Уважаемая программа / компьютер, напечатайте мое имя» , а не «Дайте мне пробел размером одиннадцать символов, затем дайте мне адрес этого пробела, затем позвольте мне сохранить его, затем введите одиннадцать символов в эту память, которую вы можете извлечь из моего буфера клавиатуры (но не забудьте очистить его» , и т.д."
В этом случае ясно, что исследование скорее будет «Не каждый язык может быть быстро ассимилирован?».
С другой стороны, языки программирования - это просто способ описать, как компьютер работает или как он должен работать, как он должен быть «связан», если вы думаете о компьютерах 1950-х годов. Поэтому программист ничего не может сделать, даже если он «отлично» говорит на языке программирования, если его интеллект не может достичь этого уровня абстракции, когда вы видите, что байты хранятся в памяти, строки как указатели и т. Д., А затем вернуться на землю, чтобы связать это с проблемой. Поэтому не каждый человек может программировать (на ассемблере ...).
Кроме того, вам понадобятся все качества, необходимые для работы и производства чего-либо: очень хорошо знайте, чего вы хотите, чтобы другим было легко понять / выполнить / пересмотреть, сосредоточиться на ваших целях и т. Д. Но как архитектор, писатель, музыкант, простит..аэхх протезист и пр.
Но у большинства людей хорошие способности к абстракции, особенно у детей. Некоторые немецкие школы преподают на Haskell дошкольников (языки программирования, такие как Pascal или Delphi , преподаются в каждой немецкой школе).
Поэтому я бы сказал, что на этот вопрос очень сложно ответить, и любой ответ (или исследование), вероятно, будет неуместным.
Вы найдете очень краткий анализ того, как люди учатся программированию, в статье Питера Норвига « Научите программировать за десять лет ». Кажется, он думает, что нет прирожденного программиста.
источник
Много лет назад я прошел несколько курсов по теории военного лидерства. Часть теории заключалась в том, что существует лидерский континуум, от тех, кто является естественными лидерами, до тех, кто не может вести собаку на поводке. Идея заключалась в том, что люди были распределены по этому континууму лидерства по кривой колокола, и большинство людей находилось где-то между этими двумя крайностями. За исключением немногих в крайнем крайнем случае «не может вести собаку», почти всех можно научить искусству лидерства. Количество усилий, необходимых для превращения кого-либо в лидера, зависело от того, где он сидел в континууме.
Я подозреваю, что у программирования есть подобный континуум и подобное распределение. Будут те, кто просто получит это без особых усилий, и те, кто никогда не сможет получить его, если от этого зависит их жизнь. Но они немногие в хвосте кривой колокола. Большинство людей сидят между этими крайностями в континууме. Они могут научиться программировать, но усилия, необходимые для их обучения, будут зависеть от того, где они находятся.
источник
Я не уверен, что это просто программирование. Я видел такое же явление, когда люди просто учились пользоваться компьютерами. Вернувшись в колледж, я был лаборантом в лаборатории, где проводилась компьютерная грамота для старшеклассников.
В течение двух недель я мог определить тех, кто получит его, и тех, кто не получит с 100% точностью. Вы либо согласились с тем, что компьютер работает именно так, либо били себя по голове всем классом. Там не было никакого среднего уровня. (Тот факт, что это был класс для пожилых людей, означал, что у нас было много тех, кто выбивал головы, что делало схему намного более очевидной.)
источник