Bagaimana Engineer di Google Melakukan Code Review

Oni Harnantyo
3 min readDec 19, 2021

--

Software engineering at google book

Beberapa hari yang lalu saya menemukan sebuah ebook yang judulnya cukup menarik yaitu “Sofware Engineering at Google”. Kita semua pasti tahu kalau Google merupakan salah satu perusahaan teknologi terbesar saat ini. Sehingga, kita dapat membayangkan kerumitan proses development dan masalah-masalah yang terjadi. Namun yang lebih menarik lagi adalah bagimana Google menghandel hal-hal tersebut.

Rencananya, saya akan berusaha ringkas beberapa chapter yang menurut saya menarik dari buku ini. Untuk topik pembahasannya mungkin tidak akan urut sesuai di bukunya karena saya skip ke topik yang sedang saya ingin tahu dulu.

Code Review

Code review adalah proses review kode oleh orang-orang yang bukan penulisnya sebelum kode itu digabungkan ke codebase. Semua engineer berhak untuk memberikan review dan menyetujui perubahan yang terjadi. Biasanya, engineer lain akan memberikan tag “looks good to me” atau LGTM ketika sudah memberikan izin.

Alur

  1. Engineer menulis perubahan codebase di workspace masing-masing.
  2. Penulis bisa menggunakan initial patch untuk menerapkan komentar review otomatis atau melakukan review sendiri. Ketika penulis yakin dengan perubahan yang dilakukan, dia akan mengirim pesan ke satu atau beberapa reviewer untuk meminta mereka melihat dan memberikan komentar.
  3. Reviewer melihat perubahan di salah satu code review tool dan memberikan komentar tentang perubahan jika ada.
  4. Penulis memodifikasi perubahan sesuai komentar, melakukan upload perubahan, dan memberikan tahu reviewew. Proses 3-4 bisa terjadi berulang-ulang.
  5. Setelah reviewer senang dengan perubahan yang terjadi, mereka akan menyetujui dengen memberikan komentar “looks good to me”(LGTM). Secara default hanya dibutuhkan satu LGTM.
  6. Setelah semua perubahan ditandai LGTM, penulis diijinkan untuk melakukan commit terhadap perubahan codebase dengan syarat reviewer “resolve” semua komentar dan perubahan disetuji.

Persetujuan

Terdapat tiga aspek review yang terhadap perubahan yang terjadi:

  • Pemeriksaan kebenaran dan pemahaman dari engineer lain bahwa kode sudah sesuai dan berjalan seperti yang diklaim penulis.
  • Persetujuan dari salah satu code owner.
  • Persetujuan dari seseorang yang memiliki “readibility” terhadap bahasa permrograman apakah sudah sesuai dengan style dan best practice, serta mengecek apakah kode ditulis dengan cara yang diharapkan.

Keuntungan

  • Kebenaran kode, dengan banyaknya orang yang mengecek perubahan yang terjadi akan membantu memastikan perubahan itu bekerja sebagaimana mestinya. Reviewer akan melihat apakah terdapat testing yang sesuai, didesain dengan sesuai, dan fungsi berjalan dengan benar serta efisien. Selain itu, pengecekan juga dapat memastikan kode dapat dibaca dan dapat dimengerti dari waktu ke waktu ketika codebase berkembang.
  • Pemahaman kode, test pertama untuk memastikan perubahan mudah dipahami oleh engineer lain.
  • Konsistensi kode, seiring berjalannya waktu, kode yang kita tulis akan dimaintain oleh orang lain. Beberapa mungkin akan perlu membaca dan memahami atau bahkan melakukan refactor. Kode seharusnya sesuai dengan standar, sehingga akan dipahami di kemudian hari. Selain itu, kode juga seharusnya tidak kompleks.
  • Keuntungan psikologikal dan culture, code review dapat memperkuat pemahaman ke engineer bahwa kode yang dibuat merupakan bagian dari perusahaan. Selain itu, hal ini juga dapat membuat penulis memiliki kehati-hatian ekstra dalam membuat perubahan.
  • Sharing pengetahuan, reviewer dapat memberikan umpan balik berupa saran atau teknik baru yang dapat digunakan untuk meningkatkan kualitas kode.

Best practices

  • Sopan dan profesional, jika terdapat beberapa hal yang kurang sesuai atau terdapat cara lain, reviewer sebaiknya bertanya mengapa hal tersebut sebelum berasumsi cara tersebut salah.
  • Membuat perubahan sekecil mungkin, perubahan yang kecil akan memudahkan reviewer untuk mengetahui dan fokus pada satu issue.
  • Menulis deskripsi perubahan dengan baik, sebaikanya baris pertama deskripsi menggambarkan perubahan yang terjadi.
  • Automasi jika memungkinkan, analisi otomatis terhadap perubahan berupa test, linter, dan formatter.

--

--

Oni Harnantyo
Oni Harnantyo

No responses yet