Meningkatkan Kualitas Software Development Dengan Code Review

“Jika engkau ingin berjalan cepat, berjalanlah sendirian. Tapi jika engkau ingin berjalan jauh, jalanlah bersama-sama.”

Benarkah? Semua programmer yang pernah bekerja bersama-sama dalam 1 tim, setidaknya minimal akan pernah mengalami ‘WTF moment’. Saat membaca dan menggabungkan code-code hasil dari masing-masing kepala, bisa jadi akan muncul sekian WTF per second.

http://commadot.com/wp-content/uploads/2009/02/wtf.png

Saat ini, proses Code Review adalah suatu keharusan yang dilakukan dalam setiap fase/sprint. Sebelum semuanya terlambat menjadi bubur: kode-kode berantakan, tidak beraturan, dan ujung-ujungnya susah untuk maintenance. Susah maintenance artinya kualitas software menjadi buruk.

Kenapa perlu Code Review?

  1. Masing-masing programmer memiliki style dan experience berbeda. Programmer cenderung menulis untuk dirinya sendiri.
  2. Mengkoreksi pekerjaan tim terhadap standar dan quality yang berlaku umum. Banyak bahasa pemrograman memiliki style yang sudah disepakati banyak orang.
  3. Kultur agile, bahwa setiap iterasi menghasilkan delivery berkualitas. Tidak perlu menunggu selesai keseluruhan timeline.

Apa yang perlu di-Code Review?

  1. Logic, struktur, fungsional, optimasi proses, algoritma. Contoh sederhana, konon katanya jika ada sebuah conditional statement IF, seharusnya bisa dibuat tanpa perlu ELSE. Jika masih ada penggunaan ELSE, pasti logic-nya kurang bagus.
  2. Clean code, code style, misal bagaimana penamaan variabel, method, class, dsb. Begitu juga dengan penempatan file-file tersebut.
  3. Automated Test. Jika mempunyai unit/integration testing, pastikan sudah mencakup semua user story/feature.
  4. File/dokumen sampah-sampah yang seharusnya bisa di-ignore.
  5. Performance Test, Strest Test, Load Test. Lakukan test ini secara berkala, sehingga bisa ketahuan adakah code yang membebani banyak resources/waktu?

Siapa yang melakukan Code Review?

Lebih baik sebuah Code Review dipimpin oleh senior/lead programmer, namun tetap melibatkan tim untuk berdiskusi.

http://www.yegor256.com/images/2015/02/kim-jong-un-doing-code-review.png

Bagaimana melakukan Code Review?

Proses ini akan lebih mudah jika menggunakan version control, semacam Git/Svn. Masing-masing programmer bekerja dalam branch masing-masing. Jika ada tim yang sudah selesai, bisa meminta request Lead untuk melakukan proses review.

  1. Programmer yang telah melakukan task-nya, bisa melakukan commit/push ke branch miliknya.
  2. Programmer membuat Merge Request baru, yang artinya “Halo ini saya ada code yang sudah selesai siap direview dan digabungkan. Tolong divalidasi.”
  3. Lead Programmer dan Programmer (Tim) berdiskusi: perubahan mana saja yang dilakukan; apa yang dihapus; apa yang baru ditambahkan; apakah sudah berjalan dengan baik fiturnya; apakah sudah rapi; dsb.
  4. Jika tim merasa tidak oke, maka Lead bisa menolak merge request tersebut, sehingga programmer bisa memperbaiki terlebih dahulu, lalu melakukan submit ulang.
  5. Jika tim merasa oke, maka Lead bisa melakukan Accept Merge dari programmer tersebut ke dalam kode utama. Kode utama ini diharapkan sudah bersih.
Merge/Pull Request di Gitlab

Proses review ini bisa dilakukan dengan atau tanpa meeting khusus. Contoh dengan fitur di Gitlab.com, diskusi tentang merge request ini bisa dilakukan langsung.

Jika sudah memiliki automated testing (unit test, functional test, acceptance/UI end-to-end test), bisa dilakukan terlebih dahulu, baru kemudian code review.

Kesulitan dan Tantangan Code Review

  1. Waktu terbatas. Mindset kita masih sering menganggap proses ini menghambat kerja tim dan akhirnya code review hanya sekedar formalitas dan tidak bisa mendalam.
  2. Proses perbaikan diperlukan bolak-balik. Untuk lanjut atau perbaikan, perlu diskusi-diskusi yang memakan waktu. Ini pentingnya saat code review, benar-benar ditekankan bagaimana sebaiknya.
  3. Pemahaman tidak bisa dipaksakan instan, kadang masih mengulangi kesalahan sama. Programmer senior dengan segala experience-nya, tentu beda dengan Junior programmer.
  4. Sering hanya berfokus ke penulisan kode, dan tidak mencoba sampai mendalam. Misal apakah fitur sudah berjalan dengan baik. Apakah code tersebut mempunyai performa bagus, dsb.
  5. Minimnya penguasaan measurement tools yang bisa dijalankan otomatis. Sebaiknya testing/review bisa dilakukan otomatis untuk menghemat waktu. Misal, untuk Code Style, di PHP bisa menggunakan PHP Code Sniffer. Ada PHP Mess Detector, dsb. Tools ini menghasilkan result test, yang menandakan sudah oke atau belum.
http://memecollection.net/wp-content/uploads//2013/05/my-code-doesnt-work.jpg

Manfaat Code Review

Dengan proses ini, seharusnya kode yang dibangun bersama tim menjadi lebih baik, mengikuti standar dan quality yang sudah disepakati. Kesulitan-kesulitan yang muncul saat maintenance dan berkembang bisa diminimalkan.

Pada akhirnya, semangat yang dibangun adalah kultur tim bekerja dengan bersama-sama, tidak hanya masing-masing mengerjakan tasknya sendiri-sendiri. Juga semangat meningkatkan kualitas komunikasi dalam tim.