Topik temu duga representatif

Temu duga tingkah laku: Bagaimanakah anda mengendalikan bantahan semasa semakan kod?

Tingkah lakuSederhana
Pasukan Editorial Offer.ccDiterbitkan Dikemas kini

Soalan

Ceritakan tentang situasi di mana seorang pengarang sangat tidak bersetuju dengan komen semakan kod anda. Bagaimanakah anda menguji sama ada mereka betul, menerangkan bukti, memutuskan sama ada untuk menyekat atau menerima perubahan tersebut, dan mengelakkan perselisihan daripada melambatkan penghantaran?

Maklumat dan konteks

Penemu duga ingin mengetahui cara anda mengendalikan perselisihan teknikal, bukan sama ada anda boleh berkata "Saya menguatkuasakan piawaian saya." Pertimbangkan satu pull request di mana anda percaya kerumitan konkurensi baharu, risiko privasi, atau ujian yang tertinggal akan mengurangkan kesihatan kod; pengarang menganggapnya isu kecil dan meminta untuk menggabungkannya (merge) terlebih dahulu. Terangkan fakta, perbincangan, keputusan dan hasilnya.

Amalan Kejuruteraan Google mengesyorkan untuk menyemak sama ada pengarang mempunyai konteks yang lebih baik, kemudian menerangkan kebimbangan tersebut dari segi kesihatan kod. Jika kerumitan akan kekal dalam pangkalan kod, secara amnya adalah lebih baik untuk menanganinya dalam perubahan semasa; situasi kecemasan adalah satu pengecualian. Jawapan yang mantap menyandarkan prinsip tersebut pada satu peristiwa kerjasama yang boleh disahkan dan bukannya melabel pengarang sebagai seorang yang sukar.

Perkara yang dinilai oleh penemu duga

  • Anda menyemak semula pertimbangan anda sendiri dan boleh mengakui konteks yang dimiliki oleh pengarang.
  • Anda menerangkan kebimbangan dengan risiko, kesan kepada pengguna, ujian, dan kos penyelenggaraan dan bukannya status atau gaya peribadi.
  • Anda memisahkan penghalang ketepatan, keselamatan, privasi, atau regresi daripada tugas susulan dan keutamaan peribadi.
  • Anda mencadangkan perubahan berdaya maju yang paling kecil, menjemput penyemak yang betul, dan menentukan laluan keputusan atau eskalasi.
  • Anda mengukur hasil: kecacatan yang dielakkan, pengurangan rollback, masa semakan, kepercayaan pasukan, dan penambahbaikan proses.

Soalan untuk dijelaskan terlebih dahulu

  • Adakah perselisihan pendapat mengenai ketepatan, keselamatan, privasi, prestasi, kebolehselenggaraan, atau keutamaan gaya pengekodan?
  • Lapisan manakah yang berkaitan dengan komen tersebut: pelaksanaan, ujian, kontrak antara muka, risiko pelepasan, atau dasar pasukan?
  • Adakah pengarang memberikan bukti baharu, kekangan sejarah, atau tarikh akhir? Siapakah yang memiliki keputusan teknikal muktamad?
  • Adakah perubahan itu mendesak, dan bolehkah pelepasan kelabu (gray release), rollback, atau feature flag mengurangkan risiko?
  • Bagaimanakah anda akan melindungi privasi pengarang dan mengelakkan perbincangan umum daripada menjadi pertimbangan peribadi?

Jawapan 30 saat

"Saya terlebih dahulu menghasilkan semula atau mengesahkan fakta dan menyemak sama ada pengarang mempunyai konteks yang saya terlepas pandang. Jika isu tersebut menjejaskan ketepatan, privasi, atau jelas mengurangkan kesihatan kod, saya menggunakan laluan kod, hasil ujian, dan risiko pengguna untuk menerangkan sebab ia perlu diselesaikan dalam perubahan ini, kemudian mencadangkan pembetulan terkecil. Jika ia adalah keutamaan gaya, saya menjadikannya tidak menyekat (non-blocking). Jika kami masih tidak bersetuju, saya menjemput penyemak domain atau ketua teknikal dan merekodkan keputusan serta tindakan susulan. Saya mengakhiri dengan menyemak hasil penghantaran, kualiti, dan hubungan."

Penyelesaian langkah demi langkah

Langkah 1: Ubah pertimbangan peribadi kepada dakwaan yang boleh diuji

Gantikan "kod ini berbahaya" dengan "dua kemas kini serentak boleh menulis ganti nilai yang lebih baharu kerana tiada semakan versi." Sediakan pengesanan semula, log, ujian, atau penanda aras (benchmark). Pastikan komen tertumpu pada kod dan risiko, bukan kebolehan pengarang. Tanpa bukti, tanya soalan sebelum menyekat.

Langkah 2: Semak konteks anda yang terlepas

Tanya tentang kontrak antara muka, keserasian, tempoh pelepasan, pasukan yang bergantung, dan rollback. Panduan Google menyatakan bahawa pengarang mungkin lebih dekat dengan pelaksanaan dan mempunyai maklumat yang lebih baik. Jika bukti baharu menyangkal cadangan anda, akui dan tarik balik cadangan tersebut daripada menganggap kedegilan sebagai kualiti.

Langkah 3: Kelaskan komen dan cadangkan perubahan minimum

Kelaskan maklum balas sebagai penghalang (blocker), cadangan tidak menyekat, atau pengukuhan positif. Penghalang memetakan kepada ketepatan yang boleh dihasilkan semula, keselamatan, privasi, atau risiko regresi berkebarangkalian tinggi; keutamaan gaya boleh menjadi Nit atau konvensyen yang didokumenkan. Tawarkan tampalan kecil, ujian, atau feature flag dan bukannya pemfaktoran semula yang tidak berkaitan dalam pull request yang sama.

Langkah 4: Terangkan sebabnya melalui kesihatan kod

Hubungkan pembetulan dengan kos penyelenggaraan masa hadapan, pencegahan insiden, atau pengalaman pengguna. Jangan tampal pautan peraturan tanpa mengaplikasikannya pada laluan, kesan, dan kriteria penerimaan perubahan ini. Jika pengarang meminta untuk "membersihkannya kemudian", nilaikan sama ada kerumitan itu akan dilupakan atau menyukarkan semakan pada masa hadapan.

Langkah 5: Wujudkan keputusan dan laluan eskalasi

Ringkaskan persetujuan dan soalan terbuka dalam semakan. Jika perlu, jadualkan perbincangan singkat atau jemput penyemak yang mempunyai autoriti domain. Ketua teknikal harus membuat keputusan berdasarkan bukti, kesihatan kod, dan kekangan penghantaran, bukan pangkat. Jejaki item bukan penghalang yang belum selesai dengan pemilik dan tarikh akhir.

Langkah 6: Sahkan hasil dan perbaiki proses

Sebelum penggabungan (merge), sahkan ujian, semakan statik, metrik pelancaran, dan rollback. Selepas penggabungan, perhatikan kecacatan, rollback, pusingan semakan, dan masa penghantaran. Jika bantahan yang sama berulang, perbaiki semakan reka bentuk, templat pull request, atau dokumentasi daripada bergantung pada pemujukan setiap kali. Hadkan semakan untuk kecemasan tetapi rekodkan risiko dan pemulihan.

Contoh jawapan yang mantap

"Semasa migrasi cache serentak, saya memberi komen bahawa operasi menulis tidak mempunyai semakan versi. Pengarang menganggapnya sekadar teori dan meminta untuk menggabungkannya. Saya menghasilkan semula situasi di mana nilai lama menulis ganti nilai baharu dengan dua kemas kini serentak dan mengesahkan bahawa titik akhir tersebut mengubah status pesanan, jadi ia adalah penghalang ketepatan bagi perubahan ini. Saya mengakui bahawa pengarang lebih mengetahui medan keserasian legasi, mengekalkan medan tersebut, menambah penulisan berversi bersyarat, serta menambah ujian konflik dan metrik."

"Kami meminta penyemak storan pesanan untuk mengesahkan reka bentuk dan bersetuju untuk memantau kadar konflik dan rollback semasa gray release. Pengarang menerima tampalan kecil itu, dan pelancaran tidak mengalami sebarang penulisan ganti lagi. Saya menerangkan bukti dalam semakan dan menjejaki pemfaktoran semula cache yang lebih luas secara berasingan. Secara retrospektif, pasukan menambah ujian penulisan serentak pada templat pull request, mengurangkan pertikaian yang serupa."

Kesilapan biasa

  • Menggunakan kekananan atau 'piawaian menyatakan begitu' → pengarang tidak dapat melihat risiko → tunjukkan laluan kod, bukti, dan ujian penerimaan.
  • Menjadikan setiap komen sebagai penghalang → penghantaran dan kepercayaan terjejas → asingkan risiko, cadangan, dan keutamaan.
  • Menganggap pengarang salah → konteks pelaksanaan terlepas pandang → semak semula dan tarik balik apabila bukti berubah.
  • Menganggap 'bersihkan kemudian' sebagai lalai → kerumitan cenderung kekal → betulkan sekarang atau tetapkan pemilik dan tarikh akhir.
  • Menilai seseorang dalam semakan awam → perselisihan pendapat menjadi konflik → bincangkan kod, kesan, dan langkah seterusnya.
  • Melangkau metrik hasil → keberkesanan tidak dapat ditunjukkan → rekodkan ujian, pelancaran, kecacatan, masa semakan, dan perubahan proses.

Soalan susulan dan jawapan

Apakah yang anda lakukan apabila mendapati anda salah?

Nyatakan fakta yang tertinggal, tarik balik sekatan, dan terangkan bukti baharu secara terbuka. Ucapkan terima kasih kepada pengarang atas konteks yang diberikan dan berhenti mempertahankan autoriti; tambahkan rekod ringkas jika ia dapat mengelakkan kesilapan berulang.

Bagaimana jika pengarang mengatakan tarikh akhir memerlukan penggabungan segera?

Nilaikan sama ada risiko menjejaskan ketepatan, keselamatan, atau pematuhan. Kekalkan penghalang berisiko tinggi dan cadangkan skop yang lebih kecil, feature flag, gray release, dan rollback yang jelas. Cadangan berisiko rendah boleh dijadikan tidak menyekat dengan susulan yang mempunyai pemilik dan tarikh akhir.

Bagaimana jika kedua-dua pihak tidak mencapai persetujuan?

Tuliskan dakwaan, bukti, risiko yang boleh diterima, dan alternatif. Jemput penyemak domain atau ketua teknikal untuk membuat keputusan, kemudian rekodkan hujah tersebut dalam pull request supaya pembaca masa hadapan tidak membuka semula pertikaian yang sama.

Bagaimanakah anda mengelakkan semakan daripada menjadi penghalang (bottleneck)?

Bincangkan reka bentuk lebih awal, bahagikan kepada pull request yang kecil, dan automasikan ujian serta semakan gaya. Semak reka bentuk berisiko tinggi terlebih dahulu, kemudian cadangan setempat. Untuk kecemasan, kekalkan semakan minimum dan rekod pemulihan.

Sumber awam

Soalan berkaitan