Kita semua memiliki pengalaman ini. Anda mendatangi seseorang yang Anda tahu memiliki jawaban atas sebuah pertanyaan, tanyakan pertanyaan itu kepada orang itu dan mereka menjawab dengan respons khas: "mengapa?" Anda menjelaskan mengapa Anda perlu tahu, dan mereka berusaha menyelesaikan masalah Anda.
Dibutuhkan waktu, lengan memutar dan kesabaran untuk mengarahkan kembali percakapan ke pertanyaan awal dan hanya mendapatkan jawaban sialan itu.
Mengapa programmer terus-menerus melakukan ini, dan mengapa perilaku semakin buruk semakin senior programmer menjadi?
Bagaimana Anda bisa mengajukan pertanyaan pada programmer dengan cara yang paling efisien dalam mengekstraksi jawaban untuk pertanyaan asli?
self-improvement
Reactgular
sumber
sumber
How do I walk on water?
Why?
I want to cross the river
Build a boat.
Jawaban:
Karena itu memerlukan lebih banyak pengetahuan untuk mengevaluasi apakah suatu solusi tepat daripada yang sebenarnya untuk mengimplementasikan solusi.
Sangat sulit untuk memercayai seseorang ketika mereka berkata, "Saya tidak tahu bagaimana melakukan ini, tetapi saya tahu pasti itulah yang harus saya lakukan." Pemrogram terus-menerus bersikeras untuk menyelidiki lebih dalam karena orang terus-menerus bersikeras untuk mengajukan pertanyaan yang salah. Ya, terkadang akhirnya kembali ke pertanyaan awal Anda, tetapi tidak selalu.
Sebagai analogi, bayangkan jika seseorang berjalan ke mekanik dan bertanya kepadanya bagaimana cara mengganti aki mobil. Biasanya jika Anda memenuhi syarat untuk mendiagnosis baterai yang rusak, Anda memenuhi syarat untuk menggantinya, sehingga mekanik akan bertanya bagaimana Anda tahu perlu mengganti baterai.
Dia tahu jika dia tidak melakukan ini, dan ternyata Anda tidak perlu baterai, maka Anda akan terus kembali mengajukan lebih banyak pertanyaan sampai akhirnya Anda tahu bahwa Anda harus mematikan lampu ketika mesin menyala. tidak berlari. Dengan bertanya di depan Anda, rasanya seperti dia membuang-buang waktu, tetapi dia benar-benar tahu dari pengalaman bahwa dia berpotensi menghemat lebih banyak waktu bagi Anda berdua.
Jadi, jika Anda ingin menghindari garis pertanyaan, Anda harus meyakinkan dia di muka bahwa Anda tahu apa yang Anda bicarakan.
sumber
"Pertanyaannya secara khusus bagaimana seseorang terlibat dengan programmer lain untuk mengajukan pertanyaan, di mana yang lain memiliki jawabannya dan melewatkan perdebatan tentang mengapa pertanyaan itu diajukan."
Anda tidak bisa, paling tidak secara deterministik. Programmer lain adalah seseorang, bukan komputer, dan bukan pelayan Anda. Jika Anda mengajukan pertanyaan kepada mereka, mereka dapat memilih apa yang menurut mereka merupakan jawaban terbaik. Jika mereka pikir mereka membutuhkan lebih banyak konteks, mereka harus memintanya.
Anda dapat mencoba membuat pertanyaan lebih awal dengan pernyataan bahwa Anda hanya mencari jawaban garis bawah yang pendek, tetapi masih bebas untuk dijawab karena menurut mereka yang terbaik.
sumber
Kamu tidak bisa Pemrogram, terutama yang baik, terhubung untuk memecahkan masalah dan menjadi efisien . Ketika seorang pelanggan atau sesama programmer datang mencari jawaban - mereka akan memastikan untuk mengetahui masalah yang mereka selesaikan, sebelum memberikan solusi. Dengan begitu mereka efisien (mereka tidak menyia-nyiakan waktu Anda dan mereka dengan memberikan jawaban yang tidak akan menyelesaikan masalah Anda) dan mereka memecahkan masalah nyata (dengan memberi Anda solusi / jawaban untuk pertanyaan yang seharusnya Anda tanyakan).
Contoh - ketika klien datang kepada Anda dan mengatakan ia ingin fitur X diimplementasikan. Terkadang klien benar-benar membutuhkan fitur X dan kadang-kadang Anda benar-benar harus menggali dan menginterogasi pelanggan hanya untuk mengetahui bahwa mereka tidak menginginkan X tetapi sesuatu yang sama sekali berbeda. Semakin tua dan berpengalaman programmer, semakin besar kemungkinan mereka dibakar di masa lalu dengan tidak sampai ke inti masalah sebelum memberikan solusi.
Jadi untuk meringkas - jika Anda ingin pertanyaan Anda dijawab dengan tepat, Anda perlu memastikan bahwa Anda:
Kebanyakan manusia yang saya tahu hanyalah manusia dan bukan komputer. Jika Anda hanya ingin jawaban, coba googling saja.
sumber
Sayangnya itu jauh dari kebenaran umum yang didapatnya.
Perilaku itu terbatas pada minoritas yang benar-benar baik. Dan Anda sebaiknya mempelajarinya juga.
Hanya dengan menjawab pertanyaan terkutuk yang melompati mengapa adalah cara yang baik untuk mendorong ke jurang, cepat dan pasti.
Jika Anda benar-benar ingin melewatkan bagian yang berpendidikan, Anda dapat mengawali pertanyaan Anda dengan beberapa kalimat tentang batasan dan keinginan Anda untuk melewatkan pertanyaan - Anda mungkin mendapatkan jawaban atau baru saja dikirim. Menyajikan ringkasan penelitian Anda sendiri adalah ide yang lebih baik.
sumber
Setiap jawaban di sini adalah jawaban yang bagus untuk pertanyaan "mengapa", tetapi tidak ada yang benar-benar menjawab pertanyaan OP.
Jawabannya sangat sederhana: beri tahu mereka mengapa ini perlu dilakukan sebelum Anda bertanya bagaimana caranya.
Hal terbaik yang harus dilakukan adalah memasukkan pengembang dalam beberapa pertemuan tingkat tinggi di sekitar produk - berikan mereka gambaran yang lebih besar sehingga mereka dapat melihat mengapa hal khusus ini perlu dilakukan. Mereka bahkan mungkin mengejutkan Anda dengan datang dengan cara pertama.
sumber
Pemrogram yang baik tidak hanya ingin mengimplementasikan solusi apa pun; mereka ingin menerapkan solusi terbaik untuk masalah spesifik. Ini memerlukan informasi. Pertanyaan adalah cara untuk mengumpulkan informasi. Tanpa semua informasi, programmer tahu dia dalam bahaya mengimplementasikan solusi yang tidak sesuai dengan semua persyaratan dan akan terjebak melakukannya lagi. Jangan sembunyikan informasi dari programmer Anda. Menyembunyikan informasi menghabiskan waktu, menghancurkan moral, dan mengarah ke solusi yang lebih rendah.
sumber
Programmer "terprogram" untuk menyelesaikan masalah.
Pemrogram yang baik akan mencoba memecahkan masalah yang "benar".
Hanya memasok apa yang diminta seseorang adalah [sering] masalah yang salah untuk dipecahkan.
Pada hari-hari ketika otomatisasi MS Office adalah hal yang populer, Anda akan mendapatkan serangkaian pertanyaan, biasanya selama beberapa minggu, menanyakan bagaimana melakukan "ini" dalam satu produk Office, kemudian "itu" pada beberapa produk lain , lalu sesuatu yang lain lagi di yang lain. Masing-masing dengan cepat ditangani, tetapi "masalah" - belum sepenuhnya dinyatakan - tidak terpecahkan. Mereka terus kembali untuk "tautan" berikutnya dalam rantai mereka.
Jika Anda menghentikan mereka dan bertanya kepada mereka, "Mengapa?" kemudian mereka harus mundur dan menjelaskan secara lebih luas apa yang ingin mereka capai dan tidak hanya menggambarkan masalah langsung di depan mereka. (BTW, Programmer menderita dari ini sebanyak (jika tidak lebih dari) orang lain, yang dengannya seperti ini menanggung wasiat).
Rantai pengguna "Mendapatkan data dari Database besar ke Access, lalu ke Excel untuk memijatnya sedikit, lalu menyeberang ke Word sehingga mereka dapat menggabungkan hasilnya dan mengirimkannya melalui email kepada orang-orang setiap minggu" dengan cepat diganti oleh pekerjaan batch yang melakukan semua itu, dengan hasil duduk di kotak masuk orang hal pertama pada hari Senin pagi, tanpa keterlibatan pengguna manual sama sekali.
Pengguna seperti itu.
Kami perlu tahu di mana Anda ingin pergi, sebelum kami dapat menawarkan cara terbaik untuk sampai ke sana.
Sebagai alternatif, (dengan kata lain Monty Python): "Apakah Anda menginginkan jawaban 5 menit atau setengah jam penuh"?
Tidak ada gunanya Programmer mengoceh semua hal kecil dari fungsi tertentu ketika Anda hanya ingin tahu apakah itu akan mengatasinya jika Anda memberinya angka dengan tiga tiga tempat desimal.
Mengetahui perspektif Anda seringkali dapat secara radikal membentuk kembali jawaban yang Anda dapatkan.
sumber
Pertanyaan terakhir Anda adalah "Bagaimana Anda bisa mengajukan pertanyaan kepada programmer dengan cara yang paling efisien dalam mengekstraksi jawaban untuk pertanyaan asli?"
Anda pertama kali bingung "efisien" dan "efektif". Agar paling efisien , cukup tulis "Apa jawabannya?" pada selembar kertas dan menunjukkannya kepada programmer. Itu cara yang sangat efisien untuk mengajukan pertanyaan. Ini juga sangat tidak efektif dalam mendapatkan jawaban.
Dan kedua, Anda berasumsi bahwa pengembang perangkat lunak adalah penjawab pertanyaan. Mereka tidak. Mereka adalah pemecah masalah. Sikap Anda menunjukkan dengan jelas bahwa Anda tidak memahami pemecahan masalah. Cara paling efektif untuk memecahkan masalah adalah dengan memahami masalah tersebut sampai pada titik di mana Anda dapat menggambarkannya ke pemecah masalah, dan kemudian menyajikannya ke pemecah masalah. Metode lainnya adalah memahami masalah secara parsial sejauh yang Anda bisa, kemudian tunjukkan pemahaman Anda yang tidak lengkap kepada seorang pemecah masalah, yang pertama kali akan menanyakan pertanyaan yang Anda takuti untuk mengubahnya menjadi masalah yang sepenuhnya dipahami, dan kemudian menyelesaikannya.
Cara yang sangat tidak efisien adalah metode yang Anda coba: Dapatkan pemahaman masalah yang tidak lengkap, tebak bagaimana masalah ini dapat diselesaikan, dan tanyakan seorang pemecah masalah bagaimana solusi ini dapat dicapai. Pemecah masalah telah melihat perilaku ini sebelumnya. 10 kali jika dia tidak berpengalaman, ribuan kali jika dia berpengalaman. Jadi pemecah masalah tahu bahwa Anda menuju ke arah yang sepenuhnya salah. Dan pemecah masalah melakukan apa yang perlu dilakukan untuk masuk ke arah yang benar, yaitu mengajukan pertanyaan untuk memahami masalah yang sebenarnya. Pertanyaan pertama untuk memahami pemahaman masalah Anda yang tidak lengkap, dan pertanyaan kedua lainnya untuk memahami masalah sebenarnya.
sumber
Mulailah pertanyaan dengan menjelaskan apa yang ingin Anda capai dan dalam konteks apa Anda bekerja. Jika Anda memberikan konteks yang cukup, Anda tidak akan mendapatkan "mengapa?" , Anda akan mendapatkan "apakah ini benar-benar perlu?"
Karena, secara statistik , sebagian besar fitur yang diusulkan menyedot , dan tidak layak untuk diimplementasikan.
sumber