Stare przysłowie, do którego przywiązuje się wielu programistów, brzmi: „Nauczenie się programowania wymaga pewnego rodzaju umysłu i nie każdy może to zrobić”.
Teraz jestem pewien, że wszyscy mamy własne źródło niepotwierdzonych dowodów, ale czy zostało to zbadane naukowo?
case-studies
System wyłączony
źródło
źródło
Odpowiedzi:
Inne badanie, Badanie rentowności modeli mentalnych prowadzonych przez początkujących programistów :
Zobacz też późniejsze badania tych samych autorów badania owiec przeciwko kozom (które nigdy nie zostały opublikowane, żeby być jasnym). Ich ostatnie i najnowsze badanie na ten temat z 2009 r. To metaanaliza wpływu konsekwencji na sukces we wczesnej nauce programowania (pdf).
źródło
Tak, istnieje dość znany artykuł online, który ma mniej więcej na celu ustalenie, „kim jest programista”.
Studium poznawcze wczesnej nauki programowania - prof. Richard Bornat, dr Ray Adams
Oto post na blogu autorstwa Jeffa Atwooda, który interpretuje wyniki i umieszcza pewne rzeczy w kontekście.
źródło
Każdy może być programistą. Zastanów się, jak łatwo ludzie chwytają arkusze kalkulacyjne. Zastanów się, jak łatwo Alan Kay wprowadza dzieci w programowanie poprzez eksperymenty i eksplorację w programowalnym środowisku.
Ludzie mogą studiować sukcesy na kursach na poziomie uczelni i stwierdzać, że „niektórzy nie nadają się do nauki programowania”. Jednak taki wniosek poważnie przekracza granice obserwowanych dowodów. Ile niepowodzeń można przypisać temu, jak naucza się programowania (zbyt abstrakcyjne?) Lub jaki styl programowania jest nauczany (zbyt imperatywny?) Lub środowisku programowania (kompilacja, brak natychmiastowej informacji zwrotnej?).
Jest zrozumiałe, że ludzie najłatwiej chwytają abstrakcje po tym, jak już pracowali z wieloma konkretnymi instancjami - tzn. Że nie możemy się czegoś nauczyć, dopóki prawie go nie znamy. Zatem rozpoczynanie od streszczenia jest całkowicie głupim sposobem nauczania programowania. Wielu ludzi, którzy potykają się z założonymi „modelami mentalnymi”, prosperuje, jeśli będzie nauczany w bardziej konkretnym środowisku z informacją zwrotną w czasie rzeczywistym (np. Jak w Akademii Kahna dla CS ), a następnie zachęca do wspinania się po drabinie abstrakcji, gdy będzie na to gotowy. Learnable Programming to najnowszy esej Bret Victor, który zwraca uwagę na niepotrzebne wyzwania środowiskowe, przed którymi stają programiści podczas nauki.
W niektórych przypadkach to uczniowie nie zaliczają zajęć. Intelektualne lenistwo i umyślna ignorancja będą istnieć w każdej dużej grupie ludzi. Sprytni ludzie nie są wyjątkiem, co może poświadczyć każdy, kto kłócił się z genialną korbą. Ale szczególnie w programowaniu i matematyce uczniowie często zawodzą zajęcia.
źródło
x = 1; y = x;
pytanie brzmi „ Jakie są wartościx
iy
? ”Is it true that not everyone can learn how to program?
linijkę z pytania, nasi bardziej doświadczeni członkowie zignorowali ją, zdając sobie sprawę, że nie pasuje ona do naszych wytycznych i skoncentrowałem swoje odpowiedzi na naukowych / naukowych aspektach pytania. Czy możesz zrobić to samo?Może to anegdota, ale kiedy uczyłem programowania wstępnego kilkuset studentom sztuk wyzwolonych, nie znalazłem takiego „podwójnego garbu”. Wydawało mi się, że wszyscy byli całkiem zdolni, chociaż niektórzy pracowali ciężej niż inni, a bardzo nieliczni próbowali się przedostać.
Wiele ma związek z tym, jak się go uczy.
Wiele ma również związek z pożądaniem - niektórzy uważają programowanie za najmniej interesujące. Ale mimo to mogą się tego nauczyć, jeśli podejmą uczciwy wysiłek.
źródło
Kiedy zaczynałem, często zdawałem sobie sprawę z „testu umiejętności”, zanim dostałeś pracę programistyczną. Absolwentów informatyki nie było tak wielu, więc rekrutacja z innych dyscyplin była powszechna.
Testy były podobne do tego, co widać na testach IQ (jaki jest następny numer w sekwencji itp.).
Niepotwierdzonymi dowodami było to, że chociaż nie wszyscy, którzy zdali test, zostali dobrymi programistami, nikt, kto nie zaliczył testu, ale został zatrudniony z innych powodów, nigdy nie został dobrym programistą.
Niestety drony HR nie rozumiały tych testów (i nie zdały egzaminu, gdy je zdały!), Więc rekrutacja w tych dniach zależy od tego, co drony HR rozumieją - dobrej szkoły wyższej, komunikacji i umiejętności noszenia skafandra.
To jest właśnie powód, dla którego duże działy IT mają wiele osób, które są świetne w programach PowerPoint i bardzo niewielu dobrych programistów.
źródło
Dla tych, którzy powołują się na podwójne garbowanie Dehnadi i Bornata lub kozę kontra owcę, warto sprawdzić Modele mentalne i programowanie zdolności Caspersena i wsp. (2007), w których próbują go powielić:
źródło
Można prowadzić badania dotyczące zdolności abstrakcji lub innej przydatnej wiedzy, ale definicja programowania jest niejasna i myślę, że cytat jest nieistotny, ponieważ istnieją inne sposoby patrzenia na programowanie:
Pierwszy rodzaj: Języki programowania są (lub powinny być) jakimś ludzkim językiem stworzonym do opisania zadania do wykonania przez komputer, więc każdy, kto mówi, powinien mieć możliwość programowania. Nazywa się to skryptowaniem, BASIC, systemem składu TeX itp. Język lub system nie ma znaczenia, to sposób, w jaki patrzyli na to ich twórcy i ludzie: „Drogi programie / komputerze, wydrukuj moje imię” , a nie „Zdobądź mi przestrzeń wielkości jedenastu znaków, następnie podaj adres tego miejsca, pozwól mi je zapisać, a następnie wprowadź jedenaście znaków do tej pamięci, którą możesz wyjąć z bufora klawiatury (ale nie zapomnij go wyczyścić itp. ”
W tym przypadku jasne jest, że badanie raczej brzmiałoby: „Nie każdy język można szybko przyswoić?”.
Z drugiej strony, języki programowania są tylko sposobem na opisanie, jak komputer działa lub jak powinien działać, jak powinien być „podłączony”, jeśli myślisz o komputerach z lat 50. Dlatego programista nie może nic zrobić, nawet jeśli doskonale mówi językiem programowania, jeśli jego inteligencja nie może osiągnąć tego poziomu abstrakcji, w którym widzisz bajty przechowywane w pamięci, ciągi znaków jako wskaźniki itp., A następnie wróć na ziemię, aby powiązać to z problemem. Dlatego nie każdy człowiek może programować (w języku asemblera ...).
Oprócz tego będziesz potrzebować wszystkich cech wymaganych do pracy i tworzenia czegoś: dobrze wiesz, czego chcesz, ułatw innym zrozumienie / uzupełnienie / przegląd, skupienie się na twoich celach itp. Ale tak jak architekt, pisarz, muzyk, prostytutka ... protezista itp.
Ale większość ludzi ma dobre zdolności abstrakcji, zwłaszcza dzieci. Niektóre niemieckie szkoły uczą Haskell dla nastolatków (języki programowania, takie jak Pascal lub Delphi, są nauczane w każdej niemieckiej szkole).
Powiedziałbym więc, że na pytanie jest bardzo trudno odpowiedzieć, a każda odpowiedź (lub badanie) może być nieistotna.
Bardzo krótką analizę tego, jak ludzie uczą się programowania w artykule Naucz się programowania w ciągu dziesięciu lat , Peter Norvig. Wydaje mu się, że nie ma urodzonego programisty.
źródło
Wiele lat temu odbyłem kilka kursów, które obejmowały teorię przywództwa wojskowego. Częścią teorii było to, że istnieje kontinuum przywództwa, od tych, którzy są naturalnymi liderami, po tych, którzy nie mogli prowadzić psa na smyczy. Chodziło o to, że ludzie byli rozmieszczeni na tym kontinuum przywództwa na krzywej dzwonowej, przy czym większość ludzi znajdowała się gdzieś pomiędzy dwoma skrajnościami. Poza nielicznymi w skrajnie skrajnym końcu „nie mógł prowadzić psa” prawie wszyscy mogli nauczyć się sztuki przywództwa. Ilość wysiłku potrzebnego do przekształcenia kogoś w lidera zależała od tego, gdzie siedzieli na kontinuum.
Podejrzewam, że programowanie ma podobne kontinuum i podobną dystrybucję. Będą tacy, którzy po prostu zdobędą go bez wysiłku, i tacy, którzy nigdy nie mogliby go zdobyć, gdyby od tego zależało ich życie. Ale są nieliczni na końcu krzywej dzwonowej. Większość ludzi siedzi między tymi skrajnościami w kontinuum. Mogą nauczyć się programować, ale wysiłek potrzebny do ich nauczenia będzie zależeć od tego, gdzie w kontinuum będą siedzieć.
źródło
Nie jestem pewien, czy to tylko programowanie. Widziałem to samo zjawisko z ludźmi po prostu uczącymi się obsługi komputera. Po powrocie do college'u byłem asystentem w laboratorium, które było gospodarzem umiejętności obsługi komputera w klasie seniorów.
W ciągu dwóch tygodni udało mi się zidentyfikować tych, którzy to dostaną, i tych, którzy nie uzyskaliby dokładności w 100%. Albo albo zaakceptowałeś, że tak działa komputer, albo uderzyłeś się w nią głową przez całą klasę. Nie było środkowej ziemi. (Fakt, że była to klasa dla seniorów, oznaczał, że mieliśmy wielu uderzających w głowę, co sprawiło, że wzór był bardziej oczywisty.)
źródło