Critique - Cara Google Mengurangi Derita Code Review dengan Tingkat Kepuasan Pengembang 97%
(engineercodex.substack.com)- Banyak mantan Googler merindukan alat code review Google, "Critique"
- Menurut survei internal Google, 97% pengembang puas dengan Critique
Panduan code review Google
- Mendorong perbaikan berkelanjutan daripada kesempurnaan
- Menjaga atau meningkatkan kondisi codebase
- Mengikuti style guide
- Selalu berbagi pengetahuan: mendorong berbagi pengetahuan tentang fitur bahasa, codebase, dan artefak terkait lainnya melalui code review
- Menulis perubahan dalam ukuran kecil (sekitar 200 baris)
- Standar ketat untuk tetap ringan (meninjau perubahan kode dalam 24 jam, sebisa mungkin cukup satu reviewer)
- Kesopanan dan profesionalisme: penting untuk menjaga budaya kepercayaan dan saling menghormati
Critique: alat code review Google
- Memungkinkan engineer meninjau dan mengirim perubahan kode secara efisien
- Menurut makalah terbaru - Resolving code review comments with ML, mereka menggunakan alat code review berbasis AI yang komprehensif
- Saat reviewer meninggalkan komentar pada kode, Critique menampilkan saran edit berbasis ML
- Penulis code review dapat memperbaiki komentar tersebut secara menyeluruh hanya dengan satu klik tombol
Alur code review
- Langkah 1: menulis perubahan
- CL (atau Pull Request) ditulis di editor kode internal Google, Cider
- Terintegrasi erat dengan Critique dan alat internal Google lainnya untuk meningkatkan produktivitas pengembang
- Alat Prereview: merapikan perubahan sebelum review, serta menampilkan diff, hasil build dan test, serta pemeriksaan style
- Tampilan dan visualisasi diff: syntax highlighting, cross-reference, intraline diffing, mengabaikan whitespace, dan deteksi perpindahan
- Menampilkan hasil static analyzer untuk menyoroti temuan penting dan memberi saran perbaikan. Termasuk "presubmits", yaitu pengujian otomatis yang berjalan di dalam Critique
- Langkah 2: meminta review
- Saat pull request siap ditinjau, penulis kode menambahkan reviewer dan secara resmi mengirimkannya untuk ditinjau
- Ketika PR/CL dikirim untuk review, "Presubmits" akan dijalankan jika belum ada pada snapshot kode saat ini. Artinya, semua orang yang terlibat dalam review dapat mengetahui apakah ada masalah pada kode
- Code review juga dapat dianonimkan sehingga identitas penulis kode tetap anonim bagi reviewer. Namun, Google tidak menemukan perbedaan yang berguna antara code review anonim dan code review 'nyata'
- Langkah 3 dan 4: memahami perubahan dan memberi komentar
- Siapa pun dapat mengomentari perubahan, dan tersedia fitur untuk melacak progres review serta menyelesaikan komentar
- Komentar yang belum terselesaikan menunjukkan item tindakan yang benar-benar harus ditangani oleh penulis perubahan. Komentar ini dapat ditandai sebagai 'resolved' saat penulis kode membalas komentar tersebut secara langsung
- Komentar yang sudah resolved dapat mencakup komentar opsional atau informatif yang mungkin tidak memerlukan tindakan dari penulis perubahan
- Ada dashboard untuk memeriksa status review dan "Attention Set" yang menunjukkan siapa yang saat ini sedang ditunggu oleh orang-orang yang terlibat dalam code review tertentu
- Langkah 5: menyetujui perubahan
- Seperti disebutkan di atas, agar review tercatat, harus ada LGTM (Looks Good To Me) dari setidaknya satu reviewer
- Penulis kode bisa menandai komentar sebagai resolved sendiri saat memberi balasan, tetapi jumlah komentar yang belum terselesaikan harus 0
- Selain itu, diperlukan persetujuan dari pemilik bagian codebase tempat kode tersebut masuk serta persetujuan readability
- Semua ini dapat dilakukan oleh satu reviewer
- Langkah 6: melakukan commit perubahan
- Mengirim dan melakukan commit perubahan langsung dari dalam Critique
- Critique tetap berguna bahkan setelah perubahan dikirim
-
"Para peneliti Google menemukan bukti kuat bahwa kegunaan Critique melampaui sekadar code review. Penulis perubahan menggunakan Critique untuk meninjau diff dan melihat hasil alat analisis. Dalam beberapa kasus, code review menjadi bagian dari proses pengembangan perubahan, di mana reviewer dapat mengirim perubahan yang belum selesai untuk membantu memutuskan cara menyelesaikan implementasi. Selain itu, pengembang juga menggunakan Critique untuk meninjau riwayat perubahan yang sudah dikirim setelah perubahan tersebut disetujui."
Statistik code review terbaru Google
- Frekuensi menulis perubahan:
- Median: 3 perubahan per minggu
- 80% penulis membuat kurang dari 7 perubahan per minggu
- Frekuensi review:
- Median: mereview 4 perubahan per minggu
- 80% reviewer menangani kurang dari 10 perubahan per minggu
- Waktu yang dihabiskan untuk review per minggu:
- Rata-rata 3,2 jam per minggu
- Median 2,6 jam per minggu
- Waktu tunggu untuk feedback awal:
- Perubahan kecil: rata-rata kurang dari 1 jam
- Perubahan yang sangat besar: sekitar 5 jam
- Total waktu proses review:
- Rata-rata latensi untuk semua ukuran kode: kurang dari 4 jam
- Perbandingan dengan perusahaan lain:
- AMD: 17,5 jam (median waktu hingga persetujuan)
- Chrome OS: 15,7 jam
- Proyek Microsoft: 14,7 jam, 19,8 jam, 18,9 jam
- Microsoft (riset lain): 24 jam
Mengapa Googler menyukai Critique?
- Analisis statis: memiliki rangkaian alat analisis statis lengkap yang otomatis memberikan feedback yang dapat ditindaklanjuti terhadap kode. Ini menghemat waktu baik bagi penulis kode maupun reviewer, dan reviewer tidak perlu lagi menunjukkan hal-hal yang sudah jelas satu per satu
- Fokus hanya pada file yang paling baru diubah: dapat fokus hanya pada 'snapshot' terbaru dari kode. Snapshot, commit, dan perubahan kode sebelumnya tidak ditampilkan, sehingga antarmuka pengguna menjadi lebih rapi
- Antarmuka side-by-side diff yang familier: secara default menampilkan "perbedaan dari review terakhir"
- Saran berbasis machine learning: fitur saran berbasis ML baru dari Google sangat mempercepat code review
- Integrasi erat dengan alat Google lainnya: Critique terintegrasi sangat baik dengan alat internal lain seperti IDE dan bug tracker Google, sehingga produktivitas meningkat. Ini termasuk penghubungan yang mudah antara kode, komentar, dan tiket
- Pelacakan 'work set': bisa mengetahui siapa yang harus melakukan tindakan berikutnya
- Gamifikasi yang memuaskan: Critique memang tidak dirancang untuk digamifikasi, tetapi para Googler mengatakan terasa menyenangkan saat Critique 'berubah hijau' dan PR siap dikirim (semua test lulus, reviewer memberi persetujuan LGTM)
- Komentar-komentar yang muncul di Reddit
- Shortcut keyboard luar biasa untuk mereview banyak sekali kode dengan sangat efisien
- Secara default menampilkan "berbeda dari review terakhir"
- Ada fitur "deteksi perpindahan kode" sehingga bisa fokus pada perubahan dalam kode
- Menyediakan fitur luar biasa yang memberi tahu siapa yang perlu mengambil tindakan, baik reviewer maupun penulis
- Jika digunakan bersama ekstensi Chrome, notifikasi mudah diterima dan antrean review mudah diperiksa
- Secara internal, siapa pun dapat menjalankan query terhadap data code review untuk mengumpulkan insight
- Penghubungan otomatis antara kode dan komentar (termasuk tiket serta perpindahan/tautan)
- Analisis dan riwayat PR beserta komentar dapat dilihat dalam bentuk tabel, sehingga jauh lebih mudah memahami progres PR yang berisi beberapa putaran kode
- Terminologi/tag komentar seperti opsional, catatan, dan lainnya sangat konsisten
Pemikiran dan implikasi
- Banyak dari fitur ini kini juga tersedia di alat lain, tetapi menurut saya alasan alat ini begitu disukai adalah karena integrasi yang sangat erat dan tingkat 'personalisasi' yang ekstrem terhadap workflow dan codebase khas Google
- Pada saat yang sama, ini juga berarti hampir mustahil bagi semua perusahaan untuk menyalin Critique dan alat terkait secara persis. Misalnya, beberapa alat dioptimalkan untuk masalah yang muncul karena struktur monorepo
- Critique sendiri mungkin tidak akan dirilis sebagai open source, tetapi Gerrit adalah alat yang mirip dengan Critique. Ini juga merupakan alat code review open source yang dibuat dan dipelihara oleh Google
- Namun saya pikir Google benar-benar mencurahkan banyak upaya dan pemikiran untuk produktivitas pengembang. Mereka mempublikasikan riset mereka secara terbuka, dan kita bisa mendapatkan implikasi yang berguna dari pekerjaan mereka
5 komentar
Sepertinya memang ada upaya untuk menempelkan ChatGPT ke Gerrit
https://github.com/xielong/chatgpt-code-review-gerrit-plugin
Hal yang paling terasa adalah bahwa di Critique, kita bisa me-review serangkaian CL yang berurutan. Di GitHub, ketidaknyamanan utamanya adalah PR chain tidak didukung secara langsung. Akibatnya, PR jadi satu PR besar, atau kita harus menunggu sampai PR sebelumnya di-merge.
GitHub juga punya yang mirip, tinggal menunggu kapan akan dirilis
> https://githubnext.com/projects/copilot-for-pull-requests
Belum ada analisis statis dan saran berbasis ML, tetapi dari artikelnya terlihat sangat mirip dengan fitur review GitHub. Sebagai pengguna yang sering memakai review GitHub, akan bagus kalau lebih banyak fitur lain yang disediakan di Critique juga diadopsi.
Panduan code review Google [terjemahan bahasa Korea]