Cara membuat pengembang melakukan ulasan kode pada waktu yang tepat

12

Perusahaan tempat saya bekerja mengharuskan semua kode ditinjau oleh pengembang lain sebelum dikomit. Anggota tim saya sering frustrasi karena pengembang lain terlalu sibuk mengkode untuk melakukan review, terutama jika itu sangat panjang. Bagaimana Anda memberi insentif kepada pengembang lain untuk melakukan tinjauan kode tepat waktu?

(Kami menggunakan git-svn sehingga kami dapat melanjutkan pengkodean sambil menunggu tinjauan. Namun, saya masih merasa frustasi ketika saya harus menunggu lama sebelum saya dapat melakukan kode saya.)

titaniumdecoy
sumber

Jawaban:

12

Lihatlah bagaimana facebook melakukannya dengan aplikasi mereka sendiri, yang disebut phabricator: http://phabricator.org/

Mereka pada dasarnya berkomitmen pada basis per masalah, dan untuk setiap masalah, kode ditampilkan, yang harus ditinjau oleh seseorang. Kode tidak masuk ke repositori utama mereka sampai peninjau mengatakan tidak apa-apa untuk melakukannya.

Saya kira itu membuatnya lebih menyenangkan.

Juga, mungkin sebuah kode harus diberikan kepada dua orang: satu yang melakukannya dan satu yang mengulasnya.

Meskipun mungkin rekan tim Anda tidak percaya pada ulasan ini.

Secara pribadi, karena kurangnya pengulas, saya menggunakan unit test untuk fungsi tingkat yang lebih rendah dan "tes petugas kebersihan" untuk semua yang lain: tes petugas kebersihan disebut seperti itu, karena bahkan petugas kebersihan harus dapat memahami kode Anda.

Saya biasanya menghapus beberapa bagian kecil, seperti tanda kurung blok / fungsi, notasi visibilitas, kadang-kadang bahkan mengetik, dan menunjukkannya kepada manajer, pakar domain, teman, siapa pun yang meminta kode: "Inikah yang Anda inginkan?"

Juga, pergi ke sana secara pribadi dan tidak pergi sampai pemeriksaan selesai dapat membantu.

Atau, jika Anda tidak setuju dengan tim, atau mereka tidak setuju dengan Anda, Anda tahu, "jika Anda dapat 'mengubah perusahaan, ganti perusahaan" ...

Aadaam
sumber
9

Saya akan mendasarkan ini pada beberapa asumsi:

  1. Semua orang sepertinya ingin menulis kode (Jika tidak, Anda memiliki orang-orang yang perlu pergi.).
  2. Semua orang ingin kode mereka sendiri diperiksa.

Hanya izinkan mereka yang menyelesaikan ulasannya untuk memeriksa kodenya.

Mungkin blok waktu tertentu dapat didedikasikan untuk ulasan kode dengan harapan menghindari masalah diinterupsi.

Tujuannya adalah untuk memeriksa kode kualitas. Anda tidak ingin menghukum / memaksa ulasan ke titik di mana semua orang hanya memberikan persetujuan "stempel karet".

Jika Anda memiliki level yang berbeda (jr., Sr. Dll), promosi dan mempertahankan gelar harus bergantung pada melakukan pekerjaan Anda.

JeffO
sumber
1

Di beberapa atasan sebelumnya, kami menggilir siapa yang melakukan Peninjauan Kode setiap hari. Biasanya 3 orang berbagi hari CR dan masing-masing CR harus ditandatangani oleh dua pengulas. Ini memastikan bahwa ketika itu adalah hari Anda, Anda tahu bahwa CR diharapkan dari Anda, terlepas dari proyek Anda yang lain. Jadi setiap lima hari atau lebih, giliran Anda dan Anda dapat menyesuaikan tugas pengembangan Anda sesuai.

Saat ini, kami memiliki Ketua Tim melakukan CR sepintas pada kode tim mereka. Bergantung pada area mana dari aplikasi yang telah diperbarui, setelah CR selesai, ia dapat bertemu dengan Tim Peninjau Global, di mana kami memeriksa hal-hal yang memiliki dampak global pada aplikasi, bukan hal-hal yang terkait dengan satu fitur. Ketika ada Tinjauan besar yang harus dilakukan, kami biasanya memecahnya di antara beberapa orang sehingga tidak ada orang yang harus berurusan dengan perubahan di sejumlah file konyol.

Yang mengatakan, kami hanya meninjau kode yang telah berkomitmen untuk cabang / varian Dev saat ini. Kode harus lulus Tinjauan Kode, Tinjauan Global, Tinjauan DB dan Tinjauan UI (masing-masing sesuai kebutuhan) sebelum dapat dipromosikan ke lingkungan berikutnya (misalnya Alpha).

Akhirnya, kami menyetujui SLA tentang seberapa cepat Ulasan dibalik. Hampir tidak ada apa pun dalam antrian selama lebih dari 48 jam dan sebagian besar ulasan dilakukan dalam waktu kurang dari 24 jam.

Adrian J. Moreno
sumber
1

Perusahaan tempat saya bekerja mengharuskan semua kode ditinjau oleh pengembang lain sebelum dikomit. Anggota tim saya sering frustrasi ...

Kecuali jika Anda melakukan perangkat lunak misi kritis atau tambalan penting untuk kode kandidat rilis produksi, tidak ada alasan kuat untuk tetap menggunakan jenis ulasan kode tertentu.

  • Gagasan di balik persyaratan perusahaan Anda terdengar masuk akal di permukaan (kode yang ditinjau 100%) tetapi cara yang mereka putuskan untuk digunakan tidak produktif - karena seperti yang Anda tunjukkan, ini menyebabkan pengembang menjadi frustrasi.

Berjalan di sepatu Anda, saya pertama-tama akan menunjukkan manajemen bahwa ulasan kode pasca-komit dianggap sama terhormatnya dengan yang sebelumnya . Istilah - istilah ini dapat dicari di web - jika perlu, temukan referensi untuk mencadangkan ini. Seseorang tidak perlu ulasan pra-komitmen untuk mendapatkan 100% kode yang ditinjau.

Berdasarkan di atas, saya selanjutnya menyarankan mereka untuk meninggalkan sikap manajemen mikro dan membiarkan pengembang mencoba cara yang terasa lebih nyaman bagi mereka. Ulasan sebelum atau sesudah komit sebaiknya diserahkan kepada programmer untuk memilih. Jika perusahaan lebih tahu daripada programmer, mengapa mereka tidak menulis kode sendiri?

agas
sumber
1
"Jika perusahaan lebih tahu daripada programmer, mengapa mereka tidak menulis kode sendiri?": Komentar yang sangat bagus! Tetapi saya berharap bahwa manajer pengembangan itu sendiri adalah mantan pengembang.
Giorgio
3
Post-commit sangat mengganggu kualitas kode Anda dalam pengalaman saya. Programmer malas, dan mereka akan merasa telah selesai jika dapat dilakukan: "ya, itu tidak sempurna, tetapi siapa yang peduli, apa yang sempurna dalam hidup? Ia melakukan pekerjaan, bukan? " satu-satunya jawaban yang baik adalah TIDAK, dan mungkin para manajer memiliki citra programmer yang lebih realistis daripada yang mereka miliki tentang diri mereka sendiri, itu sebabnya mereka memerlukan tinjauan kode pra-komitmen (atau setidaknya, pra-penggabungan).
Aadaam
@Aadaam pengalaman Anda pasti berbeda dengan saya - tidak hanya berkenaan dengan pasca-komit, tetapi juga (dan terutama) bagian dari "Programmer malas ..." Sedangkan untuk manajer yang memiliki citra yang lebih realistis, saya setuju bahwa biasanya terjadi di tim saya; itu tidak membuat para manajer yang dulu bekerja dengan saya dengan ide-ide tidak masuk akal tentang ulasan seperti apa yang harus dipaksakan
agas
Yah, saya bekerja di outsourcing. Dalam outsourcing, sebagian besar programmer tidak ikut karena pemrograman itu menyenangkan, mereka ada di karena pemrograman memiliki rasio kerja / gaji terbaik, dengan tarif jauh lebih tinggi daripada yang lain ... mereka membencinya seperti pekerjaan lain .. dan mereka coba lakukan segalanya untuk lebih "mengoptimalkan" rasio ini, jika Anda tahu apa yang saya maksud ...
Aadaam
1

Anda memiliki sejumlah masalah untuk diatasi - Anda harus memenangkan hati dan pikiran dan Anda harus memastikan bahwa waktu tersedia untuk ulasan kode.

Bagian kedua mungkin paling mudah - Anda setuju (secara kolektif dan harus memasukkan manajemen) bahwa hal pertama yang dilakukan dev setiap pagi adalah ulasan kode mereka - ini sederhana, dapat dimengerti, efektif dan memberi Anda tongkat yang jelas dan bagus untuk mengalahkan orang-orang dengan jika mereka tidak patuh. Lebih baik, Anda tidak mengganggu apa pun, Anda tidak meminta mereka untuk berhenti bekerja pada kode mereka, Anda tidak meminta orang untuk memasukkan sesuatu ke dalam daftar tugas mereka ...

Bagian pertama adalah masalah sebenarnya - para peserta dalam proses peninjauan harus melihatnya sebagai memiliki nilai jika tidak mereka tidak akan pernah melakukan tinjauan kode (yang dianggap tidak memiliki nilai) ketika mereka bisa menulis kode atau memperbaiki bug (yang pasti lebih penting ...?).

Jika Anda dapat menggabungkan keduanya - pertama memastikan bahwa semua orang percaya (atau memahami) bahwa ada nilai dalam ulasan kode - paling dasar itu berarti lebih sedikit bug yang berarti lebih banyak kode baru yang biasanya lebih menyenangkan - dan kemudian mengatur kedua hal-hal sehingga ada ruang yang jelas dalam jadwal untuk review kode yang harus dilakukan maka semoga hal-hal baik akan terjadi ... itu akan menjadi bagian dari budaya.

Setelah menjadi bagian dari budaya, mungkin tidak perlu lagi mengatakan "hal pertama setiap hari" - tetapi setelah mengatakan bahwa saya pikir itu cocok dengan pola yang mungkin diinginkan seorang dev.

Murph
sumber
Anda tidak dapat sepenuhnya setuju bahwa aturan "hal pertama setiap hari" adalah yang utama. Jika seseorang menemukan bug yang berharga perusahaan X dolar per jam (atau meningkatkan risiko kehilangan tenggat waktu penting dengan poin persentase X per jam), dan mereka melakukannya lima menit sebelum Anda masuk, maka tinjauan kode bukan Anda prioritas utama. Pada dasarnya masalahnya adalah perselisihan antara keinginan untuk menetapkan aturan sederhana, vs kenyataan bahwa prioritas tidak selalu sederhana. Risikonya adalah bahwa setiap orang dengan sepenuh hati akan menyetujui aturan tersebut, dan dalam waktu 24 jam menemukan beberapa alasan mengapa hari ini merupakan pengecualian terhadap aturan tersebut.
Steve Jessop
Dan solusinya rumit, tetapi IME Anda harus menemukan "ruang" yang cukup untuk memperkenalkan praktik kerja baru yang memakan waktu tetapi bermanfaat. Ini membutuhkan tinjauan ke masa depan untuk mengidentifikasi waktu yang kendur, kesediaan untuk membiarkan tenggat waktu tergelincir sebagai harga untuk memperkenalkan perubahan yang berharga, atau keduanya. TANSTAAFL. Seperti yang Anda katakan, begitu semua orang terbiasa dengan pola mereka dapat membuat pengecualian. Semoga mereka melakukannya berdasarkan apresiasi yang tepat terhadap nilai pola umum.
Steve Jessop
Saya mengatakan "biarkan tenggat waktu lewat", saya seharusnya mengatakan "pindah tenggat waktu". "Tergelincir" berarti memindahkan mereka setelah mereka berkomitmen, yaitu gagal, tetapi tidak harus seperti itu. Alih-alih, Anda dapat merencanakan periode produktivitas yang sedikit berkurang karena aturan baru yang tidak fleksibel (dan ketidakefisienan yang tak terhindarkan yang disebabkan oleh orang yang mencoba mengikuti proses baru - jika Anda melakukan peninjauan kode hal pertama, maka Anda akan melewatkan scrum pagi hari) bertemu pada hari-hari peninjauan kode terlalu lama, atau apa pun yang unik yang bisa dilemparkan organisasi Anda ke dalam campuran). Jika itu aturan yang baik Anda akan segera mencapai di atas di mana Anda mulai.
Steve Jessop
@SteveJessop tentu saja Anda benar-benar bisa setuju. Dan tentu saja akan ada pengecualian (Kebetulan saya pikir pengamatan scrum konyol - terutama karena jawabannya jelas (-:). Saya pikir kuncinya adalah bahwa tidak ada "satu ukuran cocok untuk semua solusi" Saya hanya mengusulkan sesuatu yang sederhana dan mudah dipahami dan relatif sulit untuk memenuhi jadwal seseorang (lagi tergantung pada lingkungan)
Murph
1

Di sebagian besar perusahaan tempat saya bekerja, Anda memiliki 3 hari untuk menyelesaikan ulasan. Tidak dapat diterima untuk tidak melakukan ulasan. Itu bagian dari pekerjaan Anda. Jika Anda tidak melakukan tinjauan yang layak tepat waktu, hal itu memengaruhi penilaian kinerja Anda. Dan ya, ulasan sepertinya selalu terjadi pada saat yang paling tidak tepat. Sayang sekali, pelajari waktu untuk memasukkan ulasan dalam perkiraan Anda. Bagaimanapun, jika manajemen benar-benar percaya bahwa tinjauan itu penting (mis. Mereka mengamanatkan bahwa semua kode ditinjau) maka mereka akan mendorong kebijakan serupa. Selain itu, jika orang tidak menyelesaikan ulasan dalam waktu yang ditentukan, itu berlaku sebagai penerimaan mereka terhadap materi.

Celup
sumber
0

Pertimbangkan untuk menggunakan alat seperti Papan Tinjauan . Ini sangat membantu, terutama untuk ulasan panjang.

Anda dapat mengunggah perbedaan Anda dan menunggu hingga peninjau selesai ulasannya. Jika Anda memiliki ulasan terbuka yang mencegah Anda melanjutkan pekerjaan Anda, Anda dapat melaporkan ini selama rapat harian Anda (tim Anda ingin fitur-fitur baru diperiksa sehingga mereka dapat diuji sesegera mungkin, bukan?).

Giorgio
sumber
0

Beberapa poin untuk ditambahkan yang tidak ada dalam jawaban lain.

Kode yang akan ditinjau harus diperiksa

  • sehingga Anda meninjau versi stabil.
  • Itu bisa di cabang pengembangan utama jika rilisnya cukup jauh
  • Itu bisa di cabang jika ada alasan bagus untuk tidak mencemari utama

Tugas pemblokiran diprioritaskan, oleh karena itu tinjauan kode harus diprioritaskan daripada pekerjaan lain (tetapi berusaha untuk tidak memutus aliran Anda). Sebagai pengembang, Anda harus meminta orang lain untuk meninjau kode Anda (karena Anda ingin membuatnya lebih baik). Dalam pengetahuan itu, Anda harus segera melakukan tinjauan untuk orang lain.

Pertanyaan yang lebih sulit adalah kapan dan bagaimana melakukan review kode dengan baik.

Aturan yang telah bekerja untuk kami pada saat itu adalah bahwa kode bersama harus ditinjau karena memiliki dampak yang lebih luas sedangkan dalam kode untuk satu aplikasi (terutama mengingat kami menggunakan pengembangan yang digerakkan pengujian) itu kurang penting.

Bruce Adams
sumber