Sebuah pepatah lama yang dipegang oleh banyak programmer adalah "Dibutuhkan jenis pikiran tertentu untuk belajar pemrograman, dan tidak semua orang bisa melakukannya."
Sekarang saya yakin bahwa kita semua memiliki barang bukti anekdotal, tetapi apakah ini telah dipelajari secara ilmiah?
case-studies
Sistem Down
sumber
sumber
Jawaban:
Studi lain, Investigasi kelayakan model mental yang dipegang oleh programmer pemula :
Juga, lihat penelitian selanjutnya dari penulis yang sama dari studi Sheep vs Goats (yang tidak pernah benar-benar dipublikasikan, menjadi jelas). Studi terakhir dan terbaru mereka pada topik ini dari 2009 adalah Meta-analisis pengaruh konsistensi terhadap keberhasilan dalam pembelajaran awal pemrograman (pdf).
sumber
Ya, ada makalah online yang cukup terkenal yang dirancang untuk sedikit banyak menentukan "Siapa yang cocok menjadi pemrogram."
Sebuah studi kognitif pembelajaran awal pemrograman - Prof Richard Bornat, Dr. Ray Adams
Berikut adalah posting blog oleh Jeff Atwood yang menginterpretasikan hasil dan menempatkan beberapa hal ke dalam konteks.
sumber
Siapa pun bisa menjadi programmer. Pertimbangkan betapa mudahnya orang memahami spreadsheet. Pertimbangkan betapa mudahnya Alan Kay memperkenalkan anak-anak pada pemrograman melalui eksperimen dan eksplorasi dalam lingkungan yang dapat diprogram.
Orang-orang dapat mempelajari kesuksesan dalam kursus tingkat perguruan tinggi dan menyimpulkan "beberapa orang tidak cocok untuk belajar pemrograman". Namun, kesimpulan seperti itu sangat melampaui batas bukti yang diamati. Berapa banyak kegagalan yang bisa dikaitkan dengan bagaimana pemrograman diajarkan (terlalu abstrak?), Atau gaya pemrograman mana yang diajarkan (terlalu imperatif?), Atau lingkungan pemrograman (kompilasi, tidak ada umpan balik langsung?).
Sangat dipahami bahwa orang-orang memahami abstraksi paling mudah setelah mereka bekerja dengan banyak contoh konkret - yaitu bahwa kita tidak dapat mempelajari sesuatu sampai kita hampir sudah mengetahuinya. Dimulai dengan abstrak, oleh karena itu, adalah cara yang sepenuhnya bodoh untuk mengajarkan pemrograman. Banyak orang yang tersandung pada "model mental" yang dipikirkan sebelumnya akan berkembang jika diajarkan dalam lingkungan yang lebih konkret dengan umpan balik waktu nyata (misalnya di Akademi Kahn untuk CS ) kemudian didorong untuk naik tangga abstraksi ketika mereka siap untuk itu. Programming Learnable adalah esai baru-baru ini oleh Bret Victor menarik perhatian pada tantangan lingkungan yang tidak perlu dihadapi programmer dalam belajar.
Dalam beberapa kasus, siswa yang gagal kelas. Kemalasan intelektual dan ketidaktahuan yang disengaja akan ada dalam kelompok besar manusia. Orang pintar tidak terkecuali, karena siapa pun yang berargumen dengan engkol yang brilian dapat membuktikannya. Tetapi, terutama untuk pemrograman dan matematika, seringkali kelas-kelaslah yang mengecewakan siswa.
sumber
x = 1; y = x;
dan pertanyaannya adalah " Apa nilaix
dany
? "Is it true that not everyone can learn how to program?
garis dari pertanyaan, anggota kami yang lebih berpengalaman mengabaikannya, menyadari bahwa itu tidak sesuai dengan pedoman kami, dan memusatkan jawaban mereka pada aspek penelitian / ilmiah dari pertanyaan itu. Bisakah Anda melakukan hal yang sama?Mungkin ini anekdotal, tetapi ketika saya mengajar pemrograman intro ke beberapa ratus siswa seni liberal, saya tidak menemukan "gundukan ganda" semacam itu. Sepertinya saya mereka semua cukup mampu, meskipun beberapa bekerja lebih keras daripada yang lain, dan sangat sedikit yang mencoba untuk menerobos masuk.
Banyak yang berkaitan dengan bagaimana hal itu diajarkan.
Banyak juga yang berhubungan dengan keinginan - beberapa tidak menganggap pemrograman sedikit menarik. Namun demikian, mereka dapat mempelajarinya jika mereka memberikan upaya yang jujur.
sumber
Ketika saya mulai, itu biasa untuk duduk "tes bakat" sebelum Anda mendapatkan pekerjaan pemrograman. Tidak ada begitu banyak lulusan ilmu komputer, jadi itu biasa untuk merekrut dari disiplin ilmu lain.
Tes-tes itu mirip dengan apa yang Anda lihat pada tes IQ (berapakah angka berikutnya dalam urutan, dll.).
Bukti anekdotal adalah bahwa sementara tidak semua orang yang lulus ujian menjadi pemrogram yang baik, tidak ada yang gagal dalam ujian tetapi dipekerjakan karena alasan lain pernah menjadi pemrogram yang baik.
Sayangnya drone SDM tidak mengerti tes ini (dan gagal ketika mereka mengambilnya!), Jadi perekrutan hari ini tergantung pada hal-hal yang dipahami drone SDM - perguruan tinggi yang baik, komunikasi dan keterampilan mengenakan jas.
Ini adalah alasan mengapa departemen TI besar memiliki banyak orang yang hebat dalam pertunjukan PowerPoint dan sangat sedikit programmer yang baik.
sumber
Bagi mereka yang mengutip studi double-hump atau kambing-domba Dehnadi dan Bornat, ada baiknya untuk memeriksa Model Mental dan Pemrograman Aptitude oleh Caspersen et al (2007) di mana mereka berusaha mereplikasi:
sumber
Orang dapat membuat studi tentang kapasitas abstraksi, atau pengetahuan bermanfaat lainnya, tetapi definisi pemrograman tidak jelas, dan saya pikir kutipan itu tidak relevan, karena ada cara yang berlawanan untuk melihat pemrograman:
Jenis pertama: Bahasa pemrograman adalah (atau seharusnya) semacam bahasa manusia yang dibuat untuk menggambarkan tugas yang harus dilakukan oleh komputer, sehingga setiap orang yang berbicara harus dapat memprogram. Ini disebut scripting, BASIC, sistem pengaturan huruf TeX , dll ... Bahasa atau sistem tidak masalah, itu cara para pencipta dan orang-orang melihatnya: "Program / komputer yang terhormat, tolong cetak nama saya" , daripada mencetak "Beri saya ruang ukuran sebelas karakter, lalu beri saya alamat ruang ini, lalu biarkan saya menyimpannya, lalu masukkan sebelas karakter ke dalam memori ini yang dapat Anda ambil dari buffer keyboard saya (tapi jangan lupa untuk membersihkannya , dll. "
Dalam hal ini jelas bahwa penelitian ini lebih suka menjadi "Tidak semua bahasa dapat berasimilasi dengan cepat?".
Di sisi lain, bahasa pemrograman hanyalah cara untuk menggambarkan bagaimana komputer bekerja atau bagaimana seharusnya bekerja, bagaimana ia harus 'terhubung' jika Anda memikirkan komputer tahun 1950-an. Oleh karena itu programmer tidak dapat melakukan apa pun, bahkan jika dia 'berbicara' bahasa pemrograman dengan sempurna, jika kecerdasannya tidak dapat mencapai tingkat abstraksi ini di mana Anda melihat byte yang disimpan dalam memori, string sebagai pointer, dll., Dan kemudian kembali ke bumi untuk menautkannya ke masalah. Karena itu tidak setiap manusia dapat memprogram (dalam bahasa assembly ...).
Terlepas dari ini, Anda akan membutuhkan semua kualitas yang diperlukan untuk bekerja dan menghasilkan sesuatu: tahu betul apa yang Anda inginkan, membuatnya mudah bagi orang lain untuk memahami / menyelesaikan / meninjau, fokus pada tujuan Anda, dll ... Tapi seperti seorang arsitek, seorang penulis, seorang musisi, seorang pelacur .. prothesist aehh, dll
Tetapi kebanyakan manusia memiliki kapasitas abstraksi yang baik, terutama anak-anak. Beberapa sekolah Jerman mengajarkan Haskell kepada pra-remaja (bahasa pemrograman seperti Pascal atau Delphi diajarkan di setiap sekolah Jerman).
Jadi saya akan mengatakan pertanyaan itu sangat sulit dijawab, dan jawaban apa pun (atau studi) kemungkinan tidak relevan.
Anda akan menemukan analisis yang sangat singkat tentang bagaimana orang belajar pemrograman dalam artikel Teach Yourself Programming in Ten Years oleh Peter Norvig. Dia sepertinya berpikir tidak ada programmer yang terlahir.
sumber
Beberapa tahun yang lalu saya melakukan beberapa kursus yang termasuk teori kepemimpinan militer. Bagian dari teori adalah bahwa ada kontinum kepemimpinan, dari mereka yang adalah pemimpin alami hingga mereka yang tidak bisa memimpin anjing dengan tali. Idenya adalah bahwa orang-orang didistribusikan pada kontinum kepemimpinan ini dalam kurva lonceng, dengan sebagian besar orang berada di antara dua ekstrem. Terlepas dari beberapa yang paling ekstrem "tidak bisa memimpin anjing" ujungnya hampir semua orang bisa diajarkan seni kepemimpinan. Jumlah upaya yang diperlukan untuk mengubah seseorang menjadi pemimpin tergantung pada di mana mereka duduk di kontinum.
Saya menduga pemrograman memiliki kontinum dan distribusi yang serupa. Akan ada orang-orang yang mendapatkannya dengan mudah, dan orang-orang yang tidak akan pernah bisa mendapatkannya jika hidup mereka bergantung padanya. Tapi mereka sedikit di ujung kurva lonceng. Kebanyakan orang duduk di antara ekstrem-ekstrem itu dalam kontinum. Mereka dapat belajar memprogram tetapi upaya yang diperlukan untuk mengajar mereka akan tergantung pada di mana pada kontinum mereka duduk.
sumber
Saya tidak yakin itu hanya pemrograman. Saya melihat fenomena yang sama dengan orang yang hanya belajar menggunakan komputer. Kembali di perguruan tinggi, saya adalah asisten lab di lab yang menyelenggarakan komputer melek huruf untuk kelas manula.
Dalam dua minggu saya bisa mengidentifikasi orang-orang yang akan mendapatkannya dan mereka yang pada dasarnya tidak akan 100% akurat. Anda juga menerima bahwa ini adalah cara komputer bekerja atau Anda mengalahkan kepala Anda untuk seluruh kelas. Tidak ada jalan tengah. (Fakta bahwa itu adalah kelas senior berarti kami memiliki banyak pemukul kepala yang membuat polanya jauh lebih jelas.)
sumber