Salah satu anggota tim saya, seorang programmer junior, memiliki keterampilan pemrograman yang mengesankan untuk tingkat pengalamannya.
Dan selama ulasan kode, saya percaya dalam menekankan pembelajaran, tidak menunjukkan kesalahan.
Tetapi haruskah programmer junior dilibatkan dalam tinjauan kode untuk programmer yang lebih senior? Atau haruskah tinjauan kode dihadiri hanya oleh programmer dengan pengalaman yang sesuai?
teamwork
code-reviews
pair-programming
Md Mahbubur Rahman
sumber
sumber
Jawaban:
Tujuan utama dari tinjauan kode adalah untuk menemukan cacat atau masalah potensial. Peserta yang diminta dalam peninjauan harus orang-orang yang paling cocok untuk mengidentifikasi masalah-masalah ini, terlepas dari jabatan atau senioritas mereka.
Sebagai contoh, jika aplikasi sedang dikembangkan dalam Python dan insinyur junior memiliki lebih banyak pengalaman dengan bahasa Python daripada insinyur senior yang menulis kode, maka mereka mungkin menjadi aset berharga dalam menunjukkan metode alternatif dalam melakukan sesuatu, tetapi mereka mungkin juga kurang memiliki pengetahuan tentang sistem secara keseluruhan.
Selain pengalaman dalam alat dan teknologi, pertimbangkan juga pengalaman dalam domain aplikasi. Seseorang dengan pengalaman 20 tahun tetapi hanya 1 atau 2 dalam industri keuangan dapat dibantu dengan memiliki pengembang yang kurang berpengalaman secara keseluruhan dengan hanya 5 tahun pengalaman, semua dalam industri keuangan meninjau karyanya.
Mengundang anggota staf yang kurang berpengalaman untuk mengamati dan berpartisipasi sebanyak mungkin proses peninjauan kode mungkin juga bermanfaat untuk memungkinkan mereka mempelajari basis kode, mengajukan pertanyaan, dan belajar tentang apa yang diharapkan dari mereka tidak hanya dalam tinjauan kode, tetapi dalam kode yang mereka hasilkan. Namun, Anda mungkin tidak ingin terlalu banyak orang yang terlibat (sebagai gantinya berfokus pada orang-orang yang dapat sepenuhnya mendukung tinjauan kode dan tujuannya) dalam proses.
Ini benar-benar berlaku untuk segala jenis tinjauan - persyaratan, desain, kode ...
sumber
Ya mereka harus. Merupakan pengalaman belajar yang baik untuk membaca kode orang lain. (Dan itu berlaku untuk kode baik dan buruk. Meskipun orang berharap bahwa kode pengembang senior tidak akan buruk ...)
Jelas, tidak bijaksana jika hanya junior yang melakukan tinjauan kode. Dan tidak bijaksana untuk menaruh harapan terlalu tinggi pada junior dalam hal apa yang bisa mereka temukan. Namun, Anda juga bisa dikejutkan oleh wawasan baru yang bisa dibawa oleh para programmer junior ke meja.
Jawaban lain menyebutkan junior sedang / merasa diintimidasi. Itu BUKAN apa kode meninjau harus tentang ... baik ditinjau atau pengulas. Jika itu terjadi, grup Anda perlu mengubah cara melakukan review kode-nya ... dan mungkin para intimidator perlu ditarik ke dalam barisan.
sumber
Saya akan menambahkan bahwa jika seorang programmer "Junior" tidak dapat memahami kode senior maka itu sendiri merupakan ukuran yang baik dari kode tersebut. OK mungkin ada saat-saat ketika itu tidak mungkin untuk menulis kode yang dapat dipahami semua orang, tetapi mudah-mudahan itu adalah pengecualian - jika hanya 1 atau 2 orang yang dapat memahami kode maka apa yang terjadi ketika orang-orang itu tidak tersedia dan ada masalah dengan saya t?
Memberi orang tantangan baru membantu mereka berkembang; mungkin juga bahwa tidak semua orang cocok untuk meninjau kode tetapi tampaknya dogmatis untuk bersikeras seseorang memiliki gelar ( ditentukan oleh politik dan permainan SDM ) sebelum mereka memenuhi syarat untuk membantu dalam ulasan.
Seperti orang lain telah menunjukkan review kode bisa menjadi proses dua arah; ini membantu semua orang memahami basis kode, jadi bagikan pengetahuan, itu membantu junior belajar cara dan teknik baru dan lebih baik dari senior mereka dan itu membantu senior memperbaiki pemahaman mereka dan dengan menulis untuk memastikan semua orang dapat mengikuti kode Anda memiliki lebih banyak mata yang dapat menangkap kesalahan.
sumber
Tujuan dari tinjauan kode adalah untuk menangkap masalah yang tidak dapat ditangkap pengujian, seperti masalah perawatan dan kasus sudut. Saya berpendapat bahwa dalam banyak hal programmer junior lebih cocok untuk tujuan itu:
Itu bukan untuk mengatakan tidak ada cara lain di mana programmer senior lebih cocok untuk melakukan tinjauan, tetapi poin saya adalah Anda melakukan tindakan merugikan jika Anda tidak mengambil keuntungan penuh dari keragaman tim Anda.
sumber
Junior akan sering diminta untuk menjaga kode, sangat penting bahwa mereka dapat memahaminya.
Terkadang junior adalah satu-satunya orang yang tersedia untuk meninjau kode pengembang senior. Haruskah kode menunggu untuk pergi ke QA (kami tidak mendorong apa pun dari dev tanpa ulasan kode dan saya mengasumsikan jenis tinjauan kode ini juga) karena bos senior sedang berlibur?
Saya juga secara khusus meminta junior untuk mengkaji ulang sesuatu ketika saya tahu mereka akan melakukan sesuatu yang serupa untuk klien yang berbeda segera atau jika saya tahu mereka telah mengerjakan sesuatu yang serupa atau bahwa mereka memiliki keahlian tertentu.
Jika kodenya cukup mudah, saya sering meminta orang junior untuk melakukan review. Mengapa menyia-nyiakan waktu manula jika orang junior cukup mampu melakukan pekerjaan itu? Jika junior merasa terintimidasi dengan meninjau kode senior, minta mereka untuk melihat bagian yang lebih mudah pada awalnya. Lagipula kamu tidak bisa melewati menjadi junior sampai kamu berhenti merasa terintimidasi.
Saya sering menemukan bahwa jika saya harus menjelaskan kode kepada orang junior yang tidak memahaminya, saya akan melihat kesalahan yang saya buat (biasanya dalam asumsi) dan bahwa tidak ada pengkaji kode berpengalaman yang akan tertangkap karena kode tersebut berjalan tetapi tidak melakukan apa yang dimaksudkan. Jadi hanya tindakan menjelaskan hal-hal akan sering membantu pengembang melihat masalah tanpa peninjau kode menemukannya. Karena orang yang lebih berpengalaman tidak sering dibawa melalui kode langkah demi langkah, hal-hal seperti ini lebih mudah ditemukan ketika seorang junior melakukan review.
Saya menemukan bahwa melibatkan junior dalam ulasan memiliki beberapa efek yang baik. Pertama itu membuat mereka lebih percaya diri ketika mereka dapat memahami kode orang tua. Itu membuat mereka lebih percaya diri ketika mereka dapat menemukan bug dalam kode itu.
Ini memaparkan mereka pada proses berpikir di luar proses mereka sendiri dan memungkinkan mereka melihat cara-cara lain dalam menangani berbagai hal. Bahkan sebagai orang senior, ini telah terjadi pada saya - melihat cara berbeda dalam memecahkan masalah dapat menjadi pembuka mata terhadap kemungkinan baru.
Ini membantu mereka belajar membaca kode orang lain dan memberi mereka kesempatan untuk bertanya apa yang dilakukan kode tersebut ketika masih segar dalam ingatan penulis. Itu jauh lebih baik daripada harus mempertahankan hal itu enam bulan kemudian ketika penulis sudah lama hilang atau sibuk pada proyek lain dan tidak punya waktu untuk pertanyaan.
Ini baik untuk para senior karena pertanyaan-pertanyaan baik mengekspos daerah potensial di mana junior lemah dan membutuhkan bimbingan (sehingga mereka dapat mengambil lebih banyak tanggung jawab dan memberikan para senior lebih banyak waktu untuk melakukan jenis tugas lain) atau area di mana kode tidak jelas untuk siapa pun kecuali penulis (yang artinya bahkan mungkin tidak jelas bagi penulis satu tahun dari sekarang ketika perlu diubah). Ini juga membantu para manula menyadari bahwa para junior mungkin lebih pintar daripada yang mereka berikan pada mereka. Ini membantu menjaga setiap orang pada pijakan profesional. Lagi pula jika Anda mengecualikan junior maka Anda jelas menyiratkan bahwa Anda tidak berpikir mereka mampu memahami kode yang secara psikologis disayangkan.
Junior yang mengulas kode senior dapat menghasilkan rasa hormat yang lebih profesional di organisasi Anda. Lansia mungkin menyadari bahwa mereka telah meremehkan junior dan junior mungkin menyadari bahwa senior memang tahu lebih banyak daripada yang mereka beri penghargaan. Junior kadang-kadang berpikir mereka memiliki keterampilan yang lebih besar daripada yang mereka miliki. Terkena kode yang tidak dapat mereka tulis baik untuk orang-orang ini karena mereka mulai menyadari bahwa mereka harus belajar lebih banyak. Ini juga akan memacu yang terbaik dari mereka untuk mendapatkan keterampilan. Di sekolah kadang-kadang siswa B tidak mengerti mengapa mereka tidak mendapatkan nilai A sampai seseorang menunjukkan sampel pekerjaan tingkat A kepada mereka. Sama dengan junior hingga senior dalam ulasan kode.
sumber
Jawaban saya adalah: Terkadang . Ini akan bervariasi dari pemrogram ke pemrogram, dan dari tugas ke tugas.
Untuk:
Melawan:
sumber
Saya sangat percaya bahwa setiap orang dalam tim harus terlibat dalam kedua sisi tinjauan kode. Junior harus meninjau kode Senior, dan sebaliknya. Mengapa keduanya? Karena biasanya ini bukan hanya tentang apakah kode "memecahkan masalah". Saya tidak bisa memberi tahu Anda berapa kali saya harus menjelaskan sepotong kode kepada seseorang dan tiba-tiba menemukan cara yang lebih baik untuk melakukannya pada akhir penjelasan. Ulasan kode mungkin melayani 3 tujuan:
Saya seorang junior dan saya biasanya meninjau kode tertulis senior. Ini adalah kebijakan umum perusahaan "semuanya mendapat kode ditinjau oleh seseorang". Saya belajar banyak dari ini meninjau kode mereka dan memiliki kesempatan untuk bertanya tentang mengapa hal-hal dilakukan dengan cara tertentu. Dan kadang-kadang, saya mengusulkan cara yang lebih bersih untuk melakukan bagian tertentu dari kode dan semacamnya. Jauh lebih jarang daripada orang yang mengatakan kepada saya bagaimana meningkatkan kode saya, tetapi itu terjadi setidaknya sekali.
Juga penting seberapa formal ulasan kode Anda. Kami sangat informal dan terdiri dari "hei, maukah Anda melihat kode saya" dikatakan di seluruh bilik atau di saluran IRC pribadi. Saya bisa membayangkan jika Anda meninjau kode dalam pengaturan yang lebih formal, junior mungkin akan lebih terintimidasi tentang meninjau kode senior.
sumber
Tentu saja, insinyur junior harus meninjau kode insinyur senior, setidaknya beberapa waktu.
Dalam pengalaman saya, sangat jarang peninjau dalam ulasan kode satu-satu benar-benar melihat kesalahan yang dilewatkan oleh pembuat kode asli, apakah peninjau itu senior atau junior; Peninjau bahkan tidak harus manusia . Sangat umum, di sisi lain, bahwa pembuat kode asli mengakui kesalahan ketika mencoba menjelaskan kode, dan semakin junior penulis resensi, semakin besar kemungkinan ini, karena diperlukan kedalaman penjelasan.
Beberapa manfaat tinjauan kode yang lebih sering terlewatkan, menurut saya, yang mungkin lebih penting dalam jangka panjang daripada menangkap kesalahan:
Dalam kedua aspek ini, reviewer junior cenderung mendapat manfaat lebih dari yang senior.
sumber
Pemrogram junior harus benar-benar melakukan tinjauan kode untuk kolega senior mereka!
Namun, mereka seharusnya bukan satu-satunya peninjau . Pasangkan dengan pengembang yang lebih berpengalaman per ulasan kode.
Ada banyak sekali manfaat:
Penulis akan dipaksa untuk menjelaskan lebih banyak kode mereka. Membahas kode Anda adalah salah satu cara terbaik untuk menemukan masalah dengannya, atau cara yang lebih baik untuk melakukannya.
Penulis akan menemukan kelemahan dalam kode mereka. Dev junior cenderung bingung oleh beberapa potongan yang lebih maju. Seringkali, ini "terlalu rumit" untuk kebaikan mereka sendiri, dan bisa mendapat manfaat dari penyederhanaan.
Dev junior akan belajar praktik pengkodean yang lebih baik. Ulasan kode adalah kesempatan untuk mengajar dengan contoh.
Dev junior akan menjadi pengkaji kode yang lebih efektif. Peninjauan kode sulit . Semakin banyak orang berpengalaman dengan ulasan kode, ulasan kode menjadi lebih cepat dan lebih efektif.
Dev junior akan memiliki pengetahuan yang lebih dalam tentang basis kode. Mementingkan diri sendiri! Dengan menarik para devs junior lebih awal, Anda akan dapat menyerahkannya lebih cepat kepada mereka.
Dev junior akan merasa lebih terlibat. Dev junior akan mulai melihat kode "senior" (dan kolega mereka) sebagai kurang asing dan mengintimidasi. Ini adalah manfaat ulasan kode yang luar biasa dan sering diabaikan.
Dev junior adalah seperangkat mata baru. Mereka tidak diindoktrinasi seperti seseorang yang telah bekerja pada basis kode untuk jangka waktu yang lama. Dev junior lebih cenderung menunjukkan berbagai cara mencapai hal-hal saat mereka mengajukan pertanyaan. Jangan mengabaikan komentar mereka yang lebih liar tanpa setidaknya pertimbangan!
Para pengembang senior harus bertanggung jawab. Saya sering melihat situasi di mana para dev senior cenderung mengabaikan kode masing-masing (kepercayaan, kemalasan, dll). Satu set mata ekstra membantu mencegahnya.
Kerugian yang harus dipertimbangkan adalah bahwa semua pihak yang terlibat akan menghabiskan cukup banyak waktu untuk melakukan tinjauan kode. Dengan demikian, ini bisa menjadi penjualan yang sulit bagi manajemen. Manfaatnya benar-benar melebihi kecepatan yang lebih lambat.
sumber
Peninjauan kode dibuat untuk meninjau kode, bukan untuk pembelajaran. Jika saya seorang programmer junior, saya akan diintimidasi untuk meninjau kode senior.
Di sisi lain, membaca kode senior adalah cara belajar yang bagus, asalkan Senior tersedia untuk menjawab semua pertanyaan.
Dua alternatif bisa menjadi:
sumber