Uji kecakapan programer [ditutup]

14

Saya punya banyak teman yang melihat apa yang saya lakukan, merasa menarik dan bertanya kepada saya

Do you think I could be a programmer?

Tanggapan saya adalah

...   ummm  ...  do you like math?

Saya ingin mendapat respons yang membantu, jadi saya tidak tahu apakah ada yang tahu tes bakat yang cukup baik untuk seseorang yang akan dimulai dari awal, tetapi memiliki pemikiran kritis dan keterampilan memecahkan masalah?

jondavidjohn
sumber
Saya mengusulkan BuzzFizz: Diberikan tiga executable yang berbeda, dapatkah mereka menjalankannya dan mengidentifikasi mana yang "FizzBuzz"?
Macneil
15
Jangan mencampur matematika dan pemrograman. Saya bekerja sebagai programmer selama bertahun-tahun. Aku benci matematika. Contoh lain: Jeff Atwood adalah programmer yang sangat baik. Dia membenci matematika (lihat codinghorror.com/blog/2007/01/… , point 3).
Arseni Mourzenko
2
@ MainMa Saya tidak bisa menekankan betapa benarnya ini. Saya berada di kapal yang sama persis . Matematika tidak pernah menjadi gairah saya, atau bahkan titik kuat, dalam hal ini. Yang sedang berkata, banyak yang mengenal saya akan membuktikan bakat ekstrim saya (baca: obsesi) untuk pemrograman. Matematika bisa menjadi bagian utama dari pemrograman, tetapi yang satu tidak harus menghasilkan yang lain.
Nathan Taylor
1
mungkin ketika saya berkata, "apakah kamu suka matematika?", maksudku mengatakan "apakah kamu menghormati matematika?", aku benar-benar payah dalam matematika dengan tangan, itulah sebabnya aku suka membuat komputer melakukan matematika untukku, tapi aku menghormati dan memahami prinsip-prinsip matematika yang terbatas yang saya percaya membantu saya dalam proses berpikir logis saya.
jondavidjohn
2
"apptitude" adalah kesalahan ketik yang sangat keren dalam konteks ini :-)
Ferruccio

Jawaban:

12

"Menyukai matematika" adalah ujian yang buruk. Saya tidak pernah menyukai matematika (kebanyakan karena 90% guru matematika di sekolah menengah mengisap).

Ketika Anda mengatakan "matematika", kebanyakan orang berpikir maksud Anda "dengan hati-hati menyelesaikan persamaan menurut seperangkat aturan yang sangat ketat". Pemrograman tidak seperti itu sama sekali.

Pemrograman lebih seperti menggambar, karena apa yang dapat Anda capai hanya dibatasi oleh apa yang dapat Anda bayangkan.

Yang penting adalah kemampuan untuk membayangkan suatu sistem dan melihat cara kerjanya.

  • Apakah Anda berpikir tentang bagaimana segala sesuatunya bekerja?
  • Apakah Anda memikirkan cara untuk meningkatkan hal-hal sehari-hari?
  • Bisakah Anda memvisualisasikan cara membangun sesuatu dari blok bangunan yang lebih sederhana?
Hasen
sumber
Apakah lebih seperti geometri?
Gulshan
itu adalah ilmu terapan, sehingga tidak benar-benar memiliki ilmu murni "equivilent" per se.
jondavidjohn
1
Pemrograman lebih seperti pertukangan, pertama-tama Anda memvisualisasikan solusi, pilih alat Anda, terapkan kerajinan Anda dengan hati-hati menggunakan kayu TDD terbaik. Yesus akan menjadi seorang programmer jika komodor 64 ditemukan sedikit lebih awal.
Will
2
Sebenarnya apa yang Anda gambarkan sangat mirip matematika - berbeda dengan apa yang dianggap lulus untuk sekolah matematika.
uman
1
@ Briannan: Satu-satunya matematika yang saya temukan mirip dengan pemrograman adalah Matematika Diskrit di universitas. Sebagian besar matematika lain yang kami pelajari adalah tentang menerapkan aturan dan formula tanpa berpikir untuk menyelesaikan semacam persamaan. Anda bisa berargumen bahwa itu bukan matematika yang benar, tetapi tidak masalah dengan diskusi ini.
Hasen
8

Saya ingat dari belakang ketika masih anak-anak melakukan Tes Kemampuan Otak ; Saya masih menyimpan sertifikat di suatu tempat ...

Garis uji:

Abstract Thinking
    Process Flow
    Spatial Manipulation
Analytical Reasoning
    Inductive Reasoning
    Logic Application
    Word Problems
Attention to Detail
    Following Instructions
    Reading Comprehension
    Rule Interpretation
    Writing Analysis
Mathematical Problem-Solving
    Word Problems
Process Mapping
    General Processes
    Letter Manipulation Processes
    Number Manipulation Processes
    Shape Manipulation Processes
Dan McGrath
sumber
1
Itu tes yang sangat rumit. Jika seseorang mengatakan kepada saya untuk mengikuti tes sebelum mempelajari pemrograman saya akan takut. Oke, mungkin saya tidak akan peduli, tetapi siapa pun yang akan mengikuti tes dengan serius akan takut.
hasen
2
Begitu? Pemrograman bisa menjadi bidang yang rumit (seperti yang lainnya). Jika Anda takut dengan mudah, mungkin itu bukan untuk Anda. Bayangkan jika Anda ditanya apakah seseorang ingin menjadi Dokter, apa yang harus mereka lakukan dengan baik? Saya tidak berpikir Anda akan peduli bahwa itu membuat takut beberapa orang ... Hidup ini keras & kompleks, mereka harus terbiasa.
Dan McGrath
2
Nah, ini bidang yang rumit, jika Anda mendekatinya langsung, Anda akan gagal. Setiap orang yang memulai pemrograman mulai dengan hal-hal yang mudah, dan percaya bahwa itu sangat mudah. Keyakinan itu kemungkinan akan dipertahankan melalui pengalaman belajar mereka. Anda tidak pernah menyadari betapa rumitnya sampai Anda melihat ke belakang, atau menonton seseorang bergumul dengan sesuatu yang Anda temukan sangat mendasar.
Hasen
Maaf, dengan daftar di atas adalah keterampilan penting yang akan Anda gunakan sebagai programmer. Saya pikir Anda takut dengan nama mereka, daripada pertanyaan yang akan jatuh di bawah mereka. Ini tidak seperti menanyakan konsep kompleks yang digunakan dalam pemrograman. Dengan kata lain, tes bakat tidak ada hubungannya dengan seberapa banyak Anda memahami konsep pemrograman yang dapat Anda pelajari, ini tentang bakat , jadi komentar tentang "memulai dengan hal-hal mudah" tidak benar-benar relevan di sini
Dan McGrath
7

Ada kemungkinan sudah ada yang bagus di luar sana.

Lihat misalnya diskusi tentang Memisahkan Pemrograman Domba dari Kambing Non-Pemrograman :

Semua guru pemrograman menemukan bahwa hasil mereka menampilkan 'gundukan ganda'. Seolah-olah ada dua populasi: mereka yang dapat [memprogram], dan mereka yang tidak bisa [memprogram], masing-masing dengan kurva loncengnya sendiri. Hampir semua penelitian dalam pengajaran dan pembelajaran pemrograman berkonsentrasi pada pengajaran: mengubah bahasa, mengubah area aplikasi, menggunakan IDE dan mengerjakan motivasi. Tidak ada yang berfungsi, dan punuk ganda tetap ada. Kami memiliki tes yang memilih populasi yang dapat memprogram, sebelum kursus dimulai. Kita bisa memilih punuk ganda. Anda mungkin tidak mempercayai ini, tetapi Anda akan setelah Anda mendengar ceramah. Kami tidak tahu persis bagaimana / mengapa itu bekerja, tetapi kami memiliki beberapa teori yang bagus.

Yang diidentifikasi oleh tes adalah seberapa konsisten orang dengan mengoperasionalkan urutan instruksi. Artinya adalah mereka dapat membangun model (abstraksi) dalam pikiran mereka dan bekerja bersama mereka.

Macneil
sumber
2

Saya pikir "tes" yang lebih penting adalah menunjukkan kepada mereka bahasa pemrograman sederhana / lingkungan yang bisa mereka mainkan. Misalnya, pemrosesan atau python . Jika mereka dapat belajar dan menikmati menggunakan bahasa seperti itu - mungkin sambil menyelesaikan satu atau dua tugas sederhana - maka itu mungkin merupakan "tes bakat" terbaik yang bisa Anda minta.

Justin Ethier
sumber
2

"Apakah kamu suka matematika?" bukan awal yang buruk. Matematika itu penting, setelah itu ...

Dianjurkan untuk melihat apakah mereka dapat mengambil masalah dan mulai memecahnya menjadi balok-balok, hanya dalam pidato, apakah mereka dapat berjalan langkah demi langkah melalui masalah dasar adalah awal yang baik.

  • Bagaimana Anda memberi tahu robot cara membuat secangkir teh? Buat sespesifik mungkin.
  • Memesan makanan di McDonalds, langkah-langkah apa yang terlibat dalam menangani pesanan, dari yang semula disuruh sampai memberi uang receh / makanan.
  • Bagaimana cara kerja sistem telepon?

Jika mereka dapat menjawabnya dengan baik, dengan cara analitis dan mendalam yang harus dilakukan seorang programmer hari demi hari, mereka mungkin dapat mengatasinya.

Orbling
sumber
1

Setelah Anda terpapar kode, Anda memiliki keharusan untuk melakukannya atau tidak. Aptitude hanyalah salah satu faktor apakah Anda akan pandai atau tidak. Paparan dengan contoh yang baik, instruksi, waktu untuk tugas, usaha adalah hal lain. Benar-benar ingin / perlu melakukan sesuatu membuatnya lebih mudah untuk mengambil keuntungan dari faktor-faktor lain.

JeffO
sumber
1

Pertanyaan yang lebih baik daripada "Apakah Anda suka matematika" adalah "Apakah Anda suka memecahkan teka-teki logis"? Ini adalah hal-hal seperti Sudoku, dll, atau mencari tahu jawaban atas teka-teki seperti "John, Anne, Peter, Mary dan Brittany adalah tetangga. John memiliki mobil putih, Brittany tinggal di sebelah kiri Anne, blah blah, di mana pesanan untuk mereka hidup? "

Karena itulah pemrogramannya: Satu teka-teki logis yang sangat besar.

Lennart Regebro
sumber
1
Saya (agak) suka matematika, tetapi teka-teki hanya membenturkan kepala seseorang ke dinding. Saya pikir Anda perlu motivasi untuk menciptakan sesuatu yang berguna - berlawanan dengan senam mental untuk tujuan memamerkan seberapa pintar Anda.
Omega Centauri
Baiklah, Anda tidak perlu menyukainya, cukup pandai. :-)
Lennart Regebro
1

Saya pikir pertanyaan yang lebih baik adalah "Apakah Anda suka membangun sesuatu dengan balok-balok lego?"

davidk01
sumber
1

Sama seperti Gusteau, seorang karakter dari film Ratatouille berkata:

Siapa pun bisa memasak.

Dengan cara yang sama, siapa pun dapat memprogram. Tapi, tidak semua orang akan hebat dalam hal itu. Kebanyakan pekerjaan pemrograman membutuhkan tingkat kemampuan dan kompetensi yang rata-rata.

Jawab saja ya. Mengapa? Karena kebanyakan orang hanya ingin merasa dihargai oleh seseorang yang mereka anggap cerdas.

Pablo
sumber
2
Saya sangat tidak setuju bahwa siapa pun dapat memprogram. Itu menyebalkan, tapi itu hidup.
uman
0

Saya pikir matematika yang disukai itu penting. Bukan dari sudut pandang Anda menikmati hal-hal yang membuktikan dengan keras, yang akan diperlukan untuk menjadi ahli matematika yang serius. Namun, mengingat masalah yang penting bagi Anda, dapatkah Anda merumuskan masalah yang terlibat dalam menyelesaikannya secara matematis. Saya mengklaim, semua yang dilakukan komputer adalah matematika, dibutuhkan data simbolis dari beberapa jenis, dan melakukan semacam operasi di atasnya. Itulah esensi matematika. Jadi, Anda harus dapat mengabstraksikan sesuatu menjadi semacam struktur matematika, dan alasan tentang langkah-langkah ke depan. Karena itu, Anda hanya meretas, membuang beberapa kode, dan berharap itu melakukan apa yang Anda inginkan. Mampu memecahkan aljabar yang rumit tanpa membuat kesalahan ketik dan tersesat, mungkin tidak begitu dibutuhkan. Tetapi mampu merumuskan rencana, penting. Saya sering menulis sepuluh program baris untuk memverifikasi bahwa matematika saya yang tidak terlalu rumit sudah benar. Menggabungkan komputer dengan matematika, untuk keperluan verifikasi, penemuan, dan ya untuk mengetahui perinciannya, ketika ada banyak dari mereka, adalah kunci sebenarnya.

Omega Centauri
sumber