Joel Spolsky: Cara mengajukan pertanyaan programmer yang lebih berpengalaman dengan benar

Usenet yang Bertingkah Aneh dan Cuci Otak, Manusia yang Membakar, dan Aturan Overflow


gambar


Joel Spolsky, April 2018

Ada sepeda populer di kalangan pengembang bahwa jika kode Anda tidak berfungsi, maka Anda perlu mengambil bebek karet dan memberi tahu dia - ya, bebek - bagaimana kode ini bekerja: jelaskan setiap baris apa yang harus terjadi, apa yang keluar pada akhirnya, dll. Para pengembang, yang telah menguji hack kehidupan ini pada diri mereka sendiri, berpendapat bahwa dalam proses pembahasan rinci masalah, objek mati sering berhasil menemukan solusinya.

Ini adalah salah satu trik yang dapat membantu menyelesaikan masalah Anda sendiri selama proses pemrograman. Cara lain adalah dengan mempelajari cara men-debug suatu program (debugging) dengan dasar “divide and conquer”.. Tidak mungkin memecah seribu baris kode untuk satu kesalahan. Tetapi Anda dapat membagi kode menjadi dua bagian dan melihat apa yang terjadi di babak pertama, dan apa yang terjadi di bagian kedua. Lakukan lima hingga enam kali dan Anda akan mencapai garis dengan kesalahan.

Berdasarkan uraian di atas, menarik untuk membaca daftar periksa John Skeet untuk menulis pertanyaan yang sempurna . John bertanya: "Sudahkah Anda membaca pertanyaan dengan hati-hati untuk menghargai kejelasan dan pengertiannya bagi seseorang yang belum melihat informasi yang Anda miliki di mata Anda?" Pada umumnya, ini adalah tes dengan bebek karet. Pilihan lain: "Jika kode dimasukkan dalam pertanyaan, apakah Anda memasukkannya dalam program yang lengkap namun singkat?" Penekanan pada program singkat itu, pada kenyataannya, merupakan ujian apakah Anda mencoba untuk “memecah belah dan menaklukkan” atau tidak.

Secara kasar, daftar periksa John menunjukkan bahwa orang pertama-tama mencoba melakukan apa yang sudah dicoba oleh programmer berpengalaman, dan kemudian meminta bantuan orang lain.

Sayangnya, tidak semua orang pernah mendengar daftar periksa ini. Atau mungkin dia mendengar, tetapi memilih untuk mengabaikan. Orang tersebut memiliki masalah dengan kode tersebut, dia tahu bahwa ada sistem tanya jawab Stack Overflow yang dapat membantunya, dan dia tidak punya waktu untuk membaca protokol beberapa kutu buku tentang cara mengajukan pertanyaan.

Seringkali ada diskusi tentang apakah Stack Overflow harus memungkinkan pertanyaan dari pendatang baru ke pemrograman.

Ketika Jeff dan saya membahas desain awal sistem, saya bercerita tentang grup tentang bahasa pemrograman C, populer di tahun 80-an di jaringan Usenet. Itu disebut comp.lang.c .

C adalah bahasa pemrograman yang sederhana dan terbatas. Anda dapat menemukan kompiler C hanya 100Kb , jadi, seperti yang Anda duga, jika Anda membuat diskusi khusus untuk C, maka topik untuk percakapan berakhir dengan sangat cepat.

Dan satu hal lagi. Pada tahun 90-an, C adalah bahasa untuk siswa yang baru mulai terlibat dalam pemrograman. Dan siswa yang sama ini paling sering memiliki masalah paling primitif dengan C.. Dan mereka segera berlari dengan pertanyaan di comp.lang.c.

Dan orang-orang tua itu bosan di sana. Sangat membosankan. Mereka muak dengan mual siswa yang memasuki grup setiap bulan September dan bertanya mengapa mereka tidak dapat mengembalikan array karakter dari suatu fungsi, dll. Setiap. September.

Orang-orang tua ini juga menemukan konsep FAQ (Pertanyaan yang Sering Diajukan). Dengan demikian, mereka tampaknya mengatakan "demi Tuhan, berhenti bertanya apa Usenet telah dijawab seratus kali", yaitu, orang-orang jompo ingin menjawab hanya pertanyaan yang paling menakjubkan dan esoterik yang 99% dari programmer C biasa umumnya tidak dibutuhkan. Grup berita memudar karena, pada kenyataannya, itu hanya melayani sekelompok kecil orang yang telah berkeliaran selama sekitar satu dekade.

Itulah yang saya dan Jeff bicarakan. Apa yang harus kita lakukan dengan pertanyaan dari pemula?
Pada akhirnya, diputuskan bahwa pendatang baru seharusnya. Stack Overflow tidak memiliki konsep pertanyaan "terlalu sederhana" ... Tapi tetap saja, yang terbaik adalah menemukan sendiri jawabannya sebelum pergi ke orang lain untuk meminta bantuan.

Kami memahami bahwa beberapa programmer yang lebih “maju” mungkin merasa bosan membaca pertanyaan sederhana yang sama dan mereka tidak akan menghubungi kami lagi. Tidak apa-apa - Stack Overflow tidak mengharuskan siapa pun duduk di sana seumur hidup. Bosan membaca pertanyaan pemula tentang fakta bahwa mereka tidak mengembalikan array karakter lokal ("itu bekerja untuk saya!"), Dan apakah Anda lebih suka menghabiskan sisa hidup Anda menyortir album musik? Terserah Anda, kan.

Fakta bahwa Anda baru saja bergabung dengan pemrograman tidak berarti bahwa pertanyaan Anda tidak memiliki tempat di Stack Overflow. Saya bahkan secara khusus mengajukan pertanyaan “Tapi bagaimana cara memindahkan kura-kura di LOGO ? ”Untuk menunjukkan bahwa perancang situs web senang melihat pemula absolut di rumah.

Tetapi seperti biasa, menurut hukum konsekuensi yang tidak disengaja, pertanyaan ini hampir menyebabkan skandal - dan tidak sama sekali karena kesederhanaannya. Masalahnya adalah saya mendekati masalah ini dengan itikad buruk. Jeff Atwood mengatakan dengan baik dalam hal ini : “Pertanyaan sederhana tidak buruk. Itu buruk ketika tidak ada upaya untuk menemukan jawaban. " ( Ah, well, itu ).

Untuk pemula, jumlah poin yang harus diisi sebelum mengajukan pertanyaan sepertinya tidak perlu, dan terkadang aneh. Ini seperti festival Burning Man. Apakah Anda berpikir bahwa Anda akan pergi ke pesta pembakar di suatu tempat di padang pasir, dan pada saat kedatangan mereka berteriak di wajah Anda tentang sekitar 10 prinsip, “Ekspresi diri yang radikal” dan dalam nada yang sama, oleh karena itu, setelah mencuci piring, Anda perlu mengumpulkan setiap tetes air dari danau kering dan dibawa pulang - untuk diserahkan jika perlu. Setiap komunitas memiliki aturannya sendiri, dan pada awalnya mereka mungkin terlihat aneh dan menyenangkan, atau, jika Anda hanya mencoba membuat beberapa kode berfungsi, aneh dan musykil.

Banyak aturan Burning Man yang membuat festival itu begitu sukses tampak sangat abstrak, tetapi itu masuk akal. Biro Administrasi Tanah A.S., yang memungkinkan untuk festival gurun, mensyaratkan bahwa tidak ada air yang terkontaminasi dituangkan ke tanah karena tanah liat tidak menyerap dengan baik, yang dapat menyebabkan pertumbuhan mikroba dan penyakit, tetapi mengapa menjelaskan semuanya jika Anda hanya bisa untuk mengatakan bahwa jika pengunjung tidak mengambil air, maka festival tidak akan terjadi lagi?

Hal yang sama dengan Stack Overflow. Kami tidak mengizinkan pertanyaan yang terlalu abstrak untuk dipublikasikan ("Bagaimana cara menyusun program?"). Aturan umum kami adalah: jika jawaban atas pertanyaan Anda adalah ukuran seluruh buku, maka Anda ingin terlalu banyak. Seperti jika Anda menulis, “Ginjal saya sepertinya sakit. Bagaimana cara memotongnya? ” Pertanyaan seperti itu kedengarannya tidak memadai dan bahkan menyinggung ahli bedah yang telah belajar bagaimana melakukan ini selama sepuluh tahun.

Apa yang menggangguku adalah bahwa dalam mencoba mendidik generasi pengembang baru, mengandalkan keberagaman dan inklusivitas, kami juga membangun hambatan bagi mereka yang ingin belajar pemrograman. Memang, dalam banyak hal, aturan spesifik Stack Overflow hanyalah sebuah hambatan. Namun yang lebih buruk adalah pengabaian dan kekasaran para pendatang baru di forum.

Saya sangat khawatir tentang ini. Sebagai pengembang, Anda memiliki peluang yang belum pernah terjadi sebelumnya untuk membuat skenario masa depan . Dan keterbatasan yang dilemparkan Stack Overflow di hadapan programmer muda tidak hanya merugikan mereka, tetapi sistem Stack Overflow itu sendiri, menakuti anggota potensial masyarakat. Pemrograman bukan tanpa masalah; tujuan kami adalah untuk membuatnya lebih mudah.

Tahun depan kami berencana untuk bekerja keras di bidang ini. Kita tidak bisa mengubah orang lain, membuat mereka lebih ramah. Tapi saya pikir kita bisa meningkatkan beberapa aspek dari antarmuka pengguna Stack Overflow yang akan memotivasi orang untuk lebih berbudaya; misalnya, kita dapat mengubah petunjuk pada halaman "Ajukan Pertanyaan" atau bekerja pada moderasi reaktif sehingga anggota komunitas sendiri dapat menandai dan mengeluh tentang komentar kasar, yang tidak terjadi saat ini.

Kami juga sedang mengerjakan fitur baru, berkat itu Anda dapat mengirim pertanyaan Anda ke sekelompok kecil orang dari tim Anda sendiri, yang dapat membantu menciptakan suasana ramah tertentu di kota metropolis besar, yaitu Stack Overflow.

Terlepas dari kenyataan bahwa kami berusaha untuk membuat Stack Overflow lebih nyaman, tujuan utama kami adalah menciptakan sumber daya terbaik di dunia untuk pengembang program.

Programmer statis rata-rata memanggil kami 340 kali. Itu adalah kekuatan kita. Ada sumber informasi lain tentang program penulisan, tetapi hanya ada satu situs yang sangat dipercaya pengembang dan perlu dijaga - seperti Perpustakaan Kongres untuk programmer.



gambar
Pelajari detail tentang cara mendapatkan profesi yang dicari dari awal atau Tingkatkan keterampilan dan gaji dengan mengambil kursus online SkillFactory:



Baca lebih banyak



All Articles