Apakah pair programming menyenangkan ?
Tidak terasa sudah 2 tahun saya bergabung bersama KMKOnline/KMKLabs/Vidio/BBM (Btw saya join di KMK pada 11 Januari 2017 ). Artikel dibawah ini adalah pengalaman saya setelah bekerja selama 2 tahun ini, sebenarnya udah ada niat buat refleksi 1 tahun kerja di KMK, tetapi sudah pernah ada yang bikin di sini LOL.
Setiap kali ada orang yang bertanya tentang pekerjaan saya, di mana saya bekerja, apa pekerjaan saya, dan apa yang saya kerjakan. Saya selalu bersemangat untuk menjelaskan tentang pair programming. Salah satu kultur di KMK (pair programming dan TDD, karena KMK memakai XP) yang tidak dimiliki oleh perusahaan lain.
Untuk mempermudah penjelasannya, pair programming adalah 2 orang duduk bersama, memecahkan masalah yang sama, di meja yang sama, dengan 2 keyboard dan 2 mouse. Poin-poin saya di bawah ini adalah murni pengalaman saya setelah 2 tahun melakukan pair programming karena di KMK anda diwajibkan untuk kerja berpasangan, kecuali memang saat itu anggota tim anda ganjil.
Setiap kali saya mengatakan pair programming sebagai salah satu cara bekerja di KMK, reaksi orang-orang rata-rata mengatakan “Wah, enak dong gak capek”, “Enak ya satunya bisa kerja, satunya bisa istirahat gantian”,”Bukannya boros ya, satu masalah yang ngerjain dua orang”. OK ijinkan saya bahas satu — persatu :
“Wah, enak dong gak capek” ~ Kata teman ngobrol saya saat di pesawat
Faktanya, kalau kita benar-benar melakukan pair programming dengan baik dan fokus, kita akan merasa lelah. Pertama, otak kita akan lelah untuk berpikir (Pastinya), kedua mulut kita akan sangat lelah untuk berbicara. Karena di pair programming, komunikasi dan diskusi memegang peranan penting.
Kalau coding sendirian, kita mungkin pusing-pusing sendiri. Tapi kalo kita pair, kita pusingnya berdua dan didalam pair kita akan berdiskusi untuk untuk memecahkan masalahnya. Misal si Andi dan Budi sedang pair, saat si Andi sudah mengetahui penyebab masalahnya, dia harus menjelaskan ke Budi, agar Budi dapat konteks yang sama. Bagian melelahkannya adalah, kadang si Budi tidak langsung paham dan Andi harus menjelaskan beberapa. Belum lagi kalau ternyata si Budi ada pendekatan penyelesaian masalah yang lain, maka diskusi akan terjadi untuk mendapatkan cara pemecahan yang terbaik.
“Enak ya satunya bisa kerja, satunya bisa istirahat gantian” ~ Kata temen saya sesama programmer
Ini tidak boleh terjadi saat pair programming, metode ini menuntut 2 orang untuk fokus dalam bekerja. Peran yang paling umum saat pair programming adalah Driver dan Navigator. Driver adalah yang mengetik sedangkan Navigator biasanya yang melakukan live code review dan mengarahkan driver agar memecahkan masalah berdasarkan standar-standar yang disepakati baik di tingkat bahasa pemrograman ataupun arsitektur yang telah disepakati di tim. Jadi pair programming yang baik harusnya harus sama-sama fokus dengan masalah agar solusi yang dihasilkan berkualitas.
”Bukannya boros ya, satu masalah yang ngerjain dua orang” ~ Kata teman saya saat reuni
Saya kurang yakin dengan ini, karena untuk boros atau tidak boros kayanya bukan ranah saya sebagai engineer. Tapi di KMK dalam 1 pair biasanya ada orang yang lebih berpengalaman dibanding teman pair nya.
Simulasi 1 :
Sebagai contoh misalnya ada Cindy dan Desta. Cindy lebih berpengalaman ketimbang Desta. Dan saat itu sedang ada pembuatan fitur baru yang dulunya Cindy sudah pernah mengimplementasikan. Waktu riset akan ditiadakan karena Cindy sudah mempunyai pengalaman. Saat Desta pair dengan Cindy, secara tidak langsung Desta akan mendapatkan pengalaman dari Cindy, Cindy akan menjelaskan kesalahan yang pernah dia lakukan sehingga Desta tidak perlu melakukan kesalahan yang sama. Disaat yang sama Cindy akan mereview kode Desta agar sesuai guideline dan best pratice. Seperti yang dijelaskan, beberapa proses diatas terjadi dalam rentang waktu yang sama.
Simulasi 2:
Sedangkan kalo Desta bekerja sendiri, dia akan membutuhkan waktu untuk melakukan riset, melakukan implementasi, bisa jadi Desta juga melakukan kesalahan yang Cindy pernah lakukan sebelumnya. Setelah itu Desta akan meminta code review kepada Cindy. Syukur-syukur kalo Cindy segera tersedia untuk mereview, belum lagi karena kode yang dibuat Desta tidak sesuai guideline dan tidak best practice, maka harus dirubah dll.
Dari simulasi diatas sepertinya terlihat bahwa dengan pair, semua proses berjalan dalam satu sequence dan context yang sama. Sedangkan kalau mengerjakan sendiri, maka ada ada gap ketika Desta meminta code review kepada Cindy, karena Cindy mungkin tidak memiliki konteks dari fitur yang dikerjakan oleh Desta.
Selain itu bisa dibayangkan ketika fitur sudah dalam pengerjaan (ditengah-tengah pengerjaan), Desta menginginkan cuti maka proses pengembangan akan tetap dilanjutkan oleh Cindy jika kita menggunakan pair. Tetapi kalau tidak pair, saat Desta tidak masuk maka pengembangan fitur akan berhenti.
Sampai saat ini saya merasa menikmati bekerja dengan menggunakan pair programming, metodologi ini menekankan pada sharing knowledge dan mentoring yang sangat intesif sehingga membuat seorang engineer bisa berkembang dan catch up lebih cepat ke dalam project. Tapi sekali lagi, tidak semua perusahaan mampu melakukan pair programming secara masif seperti yang ada di KMK, banyak pertimbangan biaya dan sumber daya manusia yang tentu menjadi hambatan dan saya merasa beruntung bisa merasakan pair programming, TDD dan bekerja menggunakan XP semenjak saya bergabung dengan KMK.