Saya pikir kita semua pernah melihat ini. Para pemula mengajukan pertanyaan tentang Stack Overflow yang mengikuti garis besar dasar ...
Saya coba lakukan (deskripsi tujuan yang sangat samar) tetapi tidak berhasil / saya mendapatkan kesalahan / pengecualian. Tolong bantu!
Bukankah ini aneh bahwa banyak dari mereka menganggapnya tidak perlu untuk menempel pesan kesalahan?
Saya ingin tahu apa psikologi ini. Ada apa dengan pesan kesalahan yang membuat orang awalnya menganggap bahwa mereka tidak berguna dan tidak layak untuk diperhatikan?
Jawaban yang saya cari bukanlah "mereka tidak mengerti pesan kesalahan". Itu tidak menjelaskan mengapa mereka tidak mempertimbangkan untuk memberi tahu orang lain yang mungkin memahaminya.
Saya pikir jika itu adalah pemula sejati, ada peluang bagus mereka tidak tahu ada pesan kesalahan sama sekali. Mereka hanya tahu itu tidak berjalan dan ada kesalahan. Misalnya di Visual studio mereka mungkin tidak melihat bagian layar itu.
Pada dasarnya mereka tidak tahu bagian mana dari informasi yang mereka miliki yang berguna untuk mencari tahu apa masalahnya. Jika mereka melakukannya akan ada kesempatan yang lebih baik mereka bisa memperbaikinya sendiri dan tidak menanyakannya sejak awal.
sumber
Saya pikir mengajukan pertanyaan dan pemecahan masalah adalah keterampilan yang perlu dipelajari, dan untuk pengembang profesional, ini adalah keterampilan penting yang tidak cukup sering diajarkan.
Sama seperti kode yang Anda tulis saat pertama kali memulai dalam profesi ini akan mengerikan dibandingkan dengan kode yang Anda tulis hari ini, pertanyaan yang Anda ajukan akan menjadi mengerikan dibandingkan dengan cara Anda menanyakannya hari ini.
Ketika Anda mulai, mudah untuk kewalahan oleh semua informasi yang Anda pelajari dan ketika hal-hal tidak akan direncanakan, sulit untuk mengetahui informasi apa yang relevan dan apa yang tidak. Ini adalah bagian besar alasan mengapa pemula tidak bisa menyelesaikan masalah sendiri sejak awal!
sumber
Ini berlaku lebih pada IRC daripada situs web online seperti Stack Overflow, yang jauh lebih jarang.
Saya pikir alasan di balik itu adalah bahwa orang merasa lebih baik jika mereka tahu bahwa seseorang secara khusus tertarik pada masalah mereka dan bersedia membantu mereka. Jadi mereka mulai dengan mengatakan bahwa mereka memiliki masalah, tetapi mereka tidak masuk ke detail sampai seseorang bertanya kepada mereka, karena mereka takut kalau tidak mereka tidak akan mendapatkan jawaban sama sekali.
Kadang-kadang (tidak dalam kasus kesalahan kompiler) perilaku ini sebenarnya masuk akal. Jika saya memiliki masalah rumit yang besar saya akan memastikan ada seseorang yang mendengarkan terlebih dahulu sebelum menulis penjelasan panjang yang tidak akan ada yang membaca.
sumber
Karena kesalahan / pengecualian kompiler mengharuskan Anda tahu apa yang Anda lakukan salah untuk memperbaikinya. Itu untuk programmer yang mengabaikan hal-hal, bukan untuk orang yang tidak mengerti mereka.
Mereka juga tidak selalu yang paling jelas. Kesalahan seperti "tak terduga jika" tidak intuitif. "Tapi itu kalau harus ada" adalah jawaban dari seorang pemula. Seorang programmer yang lebih berpengalaman tahu bahwa itu berarti dia lupa tanda titik koma di baris sebelumnya .
sumber
Saya tidak berpikir itu hanya pemula. Saya memiliki rekan kerja dengan pengalaman bertahun-tahun yang tampaknya hanya melihat nomor baris ketika mereka mendapatkan kesalahan kompiler, kemudian mencoba untuk mencari tahu sisanya (sering dengan mencoba voodoo seperti "mari tambahkan tanda kurung" atau "mari kita hentikan ini menjadi dua pernyataan ").
Kecurigaan saya adalah bahwa ini berasal dari tidak benar-benar memiliki pemahaman yang mendalam tentang aturan-aturan bahasa, sehingga deskripsi kesalahan yang umumnya padat tidak memiliki banyak makna.
expression must be a modifiable lvalue
Sepertinya informasi yang cukup berguna jika Anda benar-benar tidak tahu apa itu nilai .sumber
Bagi saya, itu adalah seorang pemuda yang penuh dengan perangkat lunak Windows 95 yang menabrak dengan pesan kesalahan yang benar-benar tidak dapat ditembus yang biasanya berakhir dengan sekitar 150 baris hexadecimal.
Saya menghidupkan kembali pengalaman yang sama setiap kali saya mendapatkan jejak Java stack cryptic yang bagus yang akan berisi 40 baris dari kompiler omong kosong dan kesalahan Hibernate, dan disembunyikan dengan sangat baik di antara mereka adalah referensi aktual di mana dalam aplikasi saya kesalahannya.
Alasan orang mengabaikan pesan kesalahan dan jejak tumpukan sering kali pesan kesalahan dan jejak tumpukan tidak proporsional rumit dibandingkan dengan kompleksitas masalah. Tidak ada alasan untuk menyapu 150 baris omong kosong melalui layar saya ketika saya kehilangan titik koma.
sumber
Saya mengajar beberapa kursus di Linux untuk Junior Sysadmin, dan Pemrograman dengan PHP dan Mysql. Sebagian besar siswa di PHP tahu ada kesalahan karena mereka melihat pesan jelek di layar. Tapi mereka sepertinya tidak bisa membacanya. Biasanya saya pergi ke layar mereka ketika mereka mengatakan ada sesuatu yang tidak berfungsi, saya membaca kesalahan di layar, memberitahu mereka untuk membacanya, menekankan file dan baris yang dicatat pada kesalahan dan memberitahu mereka untuk melihat di sana. Mereka memperbaiki kesalahan, tetapi ketika kesalahan lain muncul, prosedur yang sama berlaku ... sigh ...
Untuk kursus Linux, kadang-kadang mereka bahkan tidak melihat kesalahan. Mereka memasukkan beberapa perintah, beberapa baris muncul di layar, dan melanjutkan dengan perintah berikutnya. Ketika beberapa perintah kemudian mereka melihat ada sesuatu yang tidak berfungsi dan mengangkat tangan mereka, saya datang, gulir ke atas konsol dan arahkan ke perintah yang keluar dengan kesalahan karena parameter buruk atau apa pun. Wajah mereka: terkejut. Jadi bagian yang mudah bagi siswa linux saya adalah membuat mereka memperhatikan ketika kesalahan terjadi, menggunakan beberapa modifikasi dari bash prompt untuk membuatnya berbeda ketika kesalahan muncul, seperti ini . Sekarang, suruh mereka membaca pesan kesalahan begitu mereka melihatnya, itu pertarungan yang berbeda (sama seperti dengan siswa PHP) ...
sumber
Saya percaya bahwa mereka tidak terbiasa berpikir tentang kode kesalahan, dan pada saat mereka mencapai tempat di mana mereka harus memberi mereka, mereka sudah merasa seperti mereka sepenuhnya menjelaskan masalahnya, dan karena itu bahkan lebih kecil kemungkinannya untuk berhenti dan memikirkan apakah mereka harus memberikan informasi tambahan.
Mengajukan pertanyaan melibatkan beberapa tahap, dan semuanya diatur secara logis dalam urutan ini:
Laporan post mortem adalah tempat pesan kesalahan akan berada, dan itu di bagian paling akhir. Pada saat pemula mencapai titik ini, mereka berada di ujung tantangan mental untuk menjelaskan masalah mereka dan lebih mungkin untuk melewatkan sesuatu (untuk pemula, ada masalah informasi yang berlebihan). Lebih jauh, pada titik ini mereka sudah merasa seperti mereka menggambarkan semua aspek masalah, dan mereka memiliki kebiasaan masa lalu yang mencegah mereka mengingat kode kesalahan: lagipula, bidang kehidupan lain tidak memiliki kode kesalahan, sehingga mereka tidak terbiasa untuk pikirkan tentang mereka.
Mungkin juga bahwa bahkan jika mereka ingat tentang kode kesalahan, mereka tampaknya terlalu samar untuk digunakan sebenarnya. Hanya apa kesalahan 034982? Apakah ini benar-benar berarti bagi siapa pun? Dan apakah itu benar-benar menambah sesuatu pada deskripsi terperinci tentang apa yang saya lakukan, bagaimana saya melakukannya, dan bagaimana itu gagal? Tentunya informasi ini berdiri sendiri.
sumber
Karena untuk sebagian besar bahasa, sebagian besar pesan kompiler / runtime tidak masuk akal. (C ++ dan Java khususnya, saya melihat Anda!) Melakukan kesalahan dengan benar cenderung agak rendah pada daftar prioritas perancang bahasa. Mendapatkan hal-hal yang bekerja dengan baik untuk bekerja dengan benar biasanya merupakan prioritas yang lebih besar, dan banyak waktu mereka tidak repot-repot memoles detail kecil.
Itulah salah satu alasan mengapa saya senang bekerja di Delphi. Seluruh bahasa penuh dengan perhatian pada detail kecil, termasuk kesalahan. Pesan kompiler masuk akal. Pesan kesalahan runtime masuk akal. Jejak tumpukan masuk akal. Ini adalah salah satu hal yang membuatnya, sejauh ini, bahasa yang paling mudah untuk di-debug yang pernah saya gunakan.
sumber