Walaupun saya tidak dapat membuat daftar semua jebakan, seringkali, merumuskan pertanyaan dan memasukkannya ke dalam masalah yang mandiri seringkali membutuhkan begitu banyak pekerjaan sehingga pada saat Anda sudah mempersiapkannya dengan cukup, Anda telah menjawab pertanyaan Anda sendiri lebih lanjut waktu daripada yang seharusnya diambil sebaliknya.
Saya mengalami hal yang sama untuk> 75% pertanyaan yang saya posting.
Namun, itu bukan argumen untuk tidak repot-repot melakukannya. Ini adalah debugging bebek karet yang efektif. Anda menemukan jawaban untuk pertanyaan yang menurut Anda mungkin muncul sebagai jawaban atas pertanyaan Anda; yang berarti Anda memikirkan masalah dari sudut pandang orang yang berbeda; yang berarti Anda memikirkan masalah dari semua arah yang mungkin; yang merupakan cara terbaik untuk menemukan cacat.
Paling-paling, Anda telah membuktikan secara meyakinkan bahwa Anda jelas tidak dapat memikirkan jawabannya di sini. Pada "terburuk", Anda akhirnya menjawab pertanyaan Anda sendiri. Pikirkan kutipannya, karena ini tidak buruk sama sekali. Itu mungkin sedikit waktu tidak efisien, tetapi menyelesaikan masalah secara perlahan lebih baik daripada dengan cepat memutuskan untuk tidak mengatasi masalah . Anda akan lebih cepat menyelesaikan masalah pada akhirnya.
Inti masalah:
Ketika saya adalah seorang pengembang pemula, saya berurusan dengan halaman eror ASP.Net banyak kali. Saya perlu Google pesan untuk mencari tahu apa yang salah. mungkin butuh beberapa jam sebelum saya mendapatkan solusi yang tepat. Saya pada dasarnya membuat setiap kesalahan dalam buku ini dan kemudian harus berurusan dengan konsekuensi harus men-debug masalah.
Sekarang, ketika kesalahan muncul, saya sudah tahu "tersangka biasa" apa yang bisa menyebabkan masalah. Daftar mental saya "tersangka biasa" secara efektif didasarkan pada masalah yang paling banyak saya alami selama karier saya. Tanpa terlebih dahulu melakukan pekerjaan kaki yang tidak efisien dari Googling selama berjam-jam, saya tidak akan pernah membuat daftar mental ini . Tetapi sekarang karena saya memiliki daftar mental itu, saya lebih cepat dalam pemecahan masalah.
Selain itu, walaupun saya tidak bisa mengikutinya, respon dari percakapan bebas tidak dapat ditandingi oleh segala bentuk diskusi internet tekstual yang dapat saya pikirkan.
Saya agak tidak setuju di sini. Anda benar bahwa komunikasi internet kurang responsif, tetapi Anda (menurut saya) salah bahwa ini buruk bagi Anda.
Sebagai pengembang tunggal, Anda akan bergantung pada debugging bebek karet. Bahan utama untuk membuat RDD berfungsi adalah bahwa Anda mengantisipasi pertanyaan yang mungkin dimiliki bebek karet untuk Anda. Anda jelas tidak bisa mengandalkan apa yang sebenarnya dikatakan oleh bebek karet.
Ketika berhadapan dengan sistem pesan yang lambat (memposting di StackOverflow atau berkomunikasi dengan menulis surat), Anda secara inheren diberi insentif untuk memastikan bahwa Anda melakukannya dengan benar pertama kali. Karena perlu memperbaiki kesalahan akan menjadi proses yang lambat dan sulit.
Sebagai perbandingan, pertimbangkan sistem pengiriman pesan cepat (percakapan, pengiriman pesan instan), Anda dapat segera memperbaiki sesuatu. Kemampuan untuk mengoreksi sesuatu dengan cepat membuat orang kurang mendapat insentif untuk memastikan bahwa itu benar.
Empat kasus dalam poin:
- Ketika saya membuat daftar analisis / catatan pribadi saya sendiri sebagai pengembang, saya masih menggunakan pena dan kertas. Saya perhatikan bahwa saya mengabaikan asumsi dan kepalsuan ketika saya mengetik catatan saya, karena pikiran saya berpikir bahwa "Saya dapat dengan mudah memperbaikinya nanti". Namun, harus mengoreksi sesuatu yang Anda tulis di kertas itu menjengkelkan, Anda harus mencoret hal-hal dan menulis yang tersirat dan dokumen terlihat jauh lebih buruk ketika ada tulisan di atasnya. Menulis di atas kertas membuat saya memeriksa fakta sendiri sebelum saya berkomitmen untuk menulisnya. Ini menangkap banyak kesalahpahaman awal, sebelum saya bahkan menulis kode yang akan menghasilkan bug.
- Nenek saya adalah seorang sekretaris (usia mesin tik). Membuat kesalahan ketik pada dokumen formal berarti harus mengetik seluruh halaman lagi. Bibiku adalah seorang sekretaris (usia pengolah kata). Dia dapat mengandalkan pemeriksa ejaan otomatis, dan kesalahan dapat diperbaiki dengan mudah dan dengan sedikit usaha. Tidak mengherankan, nenek saya membuat kesalahan pengetikan dan kesalahan pengejaan yang jauh lebih sedikit dibandingkan dengan bibi saya.
- Video game dulu dicetak pada kartrid. Memperbaiki bug setelah rilis tidak mungkin dilakukan. Anda perlu mencetak ulang semua kartrid, mendistribusikannya ke semua vendor, dan berharap vendor entah bagaimana dapat menghubungi pelanggan yang sudah membeli permainan. Itu akan menelan biaya banyak uang (dua kali lipat dari biaya produksi fisik) dan masih belum menjangkau beberapa pelanggan. Sekarang, di usia patch internet, pengembang game telah terbukti jauh lebih diinvestasikan dalam pengujian permainan mereka sehingga mereka dapat menghindari bug rilis hari, karena itu jauh lebih mudah untuk hanya mendorong perbaikan untuk setiap pelanggan secara langsung. Dampak dari membuat kesalahan diminimalkan ke titik di mana lebih baik untuk memperbaiki beberapa masalah setelah fakta, dibandingkan dengan harus menguji semua kemungkinan kesalahan yang bisa terjadi.
- Saya dulu tinggal di apartemen lantai tiga, tidak ada lift, dan harus sering memarkir satu atau dua jalan dari gedung saya. Saya hampir tidak pernah lupa untuk mengambil sesuatu dari mobil saya. Sekarang, saya tinggal di sebuah rumah dengan mobil saya tepat di sebelah saya di jalan masuk. Saya lupa mengambil barang-barang dari mobil saya sepanjang waktu .
Gagasan yang mendasari di sini adalah bahwa sistem pertukaran yang sulit mendorong orang untuk melakukan pertukaran yang benar dan diperiksa fakta . Beratnya hukuman (= proses koreksi yang sulit) mengajarkan Anda untuk tidak membuat kesalahan.
Selain itu, menyembunyikan detail untuk mengajukan pertanyaan yang jelas menghilangkan kemungkinan seseorang menemukan masalah yang tidak Anda pikirkan.
Saat Anda membuat MCVE , Anda tidak harus membuatnya dan mempostingnya di pertanyaan. Pertama-tama Anda harus membuatnya sendiri , sehingga Anda dapat mengisolasi masalahnya. Dan kemudian, ketika Anda berpikir masalahnya tidak dapat dikurangi lagi, dan Anda masih tidak melihat penyebabnya; maka Anda memiliki pertanyaan yang valid untuk StackOverflow.
Inti masalah:
Saya selalu memiliki Visual Studio kedua yang berjalan dengan aplikasi konsol sederhana bernama Sandbox. Setiap kali saya mengalami masalah teknis, saya menyalin kode yang menyinggung ke dalam kotak pasir dan mulai bermain-main dengannya.
- Apa yang terjadi ketika saya mengubah pengaturan ini?
- Bisakah saya mereproduksi masalah jika saya mempersingkat kodenya?
- Pengaturan mana yang memungkinkan / tidak mungkin mereproduksi masalah?
Dalam 90% kasus, saya menemukan penyebab masalah karena kotak pasir membantu saya melihat kode yang menyinggung tanpa terganggu oleh konteks sekitarnya (atau, misalnya, ketidakpastian tentang nilai yang datang untuk bagian kode yang berbeda.
Dalam 10% kasus lainnya, saya memiliki kode minimal untuk mereproduksi masalah, yang berfungsi sebagai contoh cuplikan sempurna untuk diposkan di StackOverflow.
Terakhir tetapi tidak kalah pentingnya, saya tidak ingin memposting seluruh proyek saya untuk dunia untuk melihat sisa kekekalan, untuk alasan yang jelas.
Ketika Anda sudah memiliki MCVE, Anda seharusnya tidak memiliki banyak informasi pribadi (atau perusahaan) di dalamnya. Jika ya, karena kodenya minimal, mudah untuk mengubah nama menjadi contoh foo / bar / baz yang lebih mendasar.