Jadi saya mulai bekerja untuk sebuah perusahaan besar, salah satunya dengan 3 huruf dalam nama, dan mereka berusaha untuk menjadi Agile, tetapi memiliki banyak proses, yang saya rasa Agile tidak.
Salah satu yang paling membuat saya berhenti adalah ulasan kode. Pekerjaan terakhir saya adalah dengan startup yang saya akan katakan adalah tim pengembangan Agile yang paling banyak saya lihat, aktif, dan / atau pernah saya dengar.
Lagi pula, argumen saya adalah bahwa Ulasan Kode adalah buang-buang waktu dalam pengembangan berulang atau Agile di mana UX / UI ekstrem / intens (pikirkan kesempurnaan Apple / Steve Jobs). Mungkin seseorang di sini dapat membantu memahami sebelum mereka memecat saya?
Ini adalah proses pengembangan saya dan satu di startup terakhir saya ... sangat Agile.
Kami melakukan pekerjaan fitur awal untuk mengurutkan tugas pengembangan / todos. Kami akan mengejek beberapa versi dan menyajikan kepada pengguna, tim, dan pemasaran untuk mendapatkan umpan balik. Kami kemudian melakukan iterasi mockup lain untuk mendapatkan satu putaran dari para pemangku kepentingan yang sama di atas. Kemudian kami membagi-bagi pekerjaan dan memulai. Kami memiliki tonggak dan tanggal untuk bertemu, tetapi kami terus berusaha. Kami tidak memiliki ulasan kode selama ini. Beberapa kali selama minggu-minggu perkembangan kami, kami mengadakan pertemuan dengan para pemangku kepentingan lagi untuk melihat apakah mereka masih setuju fitur / fungsi / UX / UI masih cocok dan tepat sasaran.
Saat kami mendekati akhir dari siklus iterasi 8 minggu, QA mulai menguji, kemudian beralih ke pengguna alpha, dan akhirnya ke pengguna beta. Tetapi selama pengembang alpha dan beta mempelajari fitur baru dan fitur lama membuat perubahan harian atau jam ke UI untuk meningkatkan UX. Jadi fitur yang sedang dikembangkan rilis ini, mungkin berakhir diubah 3 kali lebih banyak empat minggu terakhir untuk meningkatkan dan menyempurnakannya atau menambahkan beberapa fitur kecil (misalnya membuat komponen sedikit lebih licin atau lebih pintar). Kadang-kadang perubahan mungkin dangkal yang berarti tidak ada operasi CRUD yang diubah atau dimodifikasi, tetapi semua UI hanya berubah.
Jadi dengan jenis proses pengembangan ini, Agile yang ekstrem, bukankah tinjauan kode akan membuang-buang waktu? Berarti jika saya memiliki pengembang lain atau dua meninjau kode saya, tetapi kemudian kode itu berubah 3 kali sebelum keluar dari pintu, karena semua perbaikan UI / UX, apakah kita tidak membuang-buang waktu untuk pertama 3 kali mereka meninjaunya kode karena kode / komponen / UI itu dihapus?
Kami tidak pernah memiliki banyak masalah kualitas dengan proses ini dan ya jika pengembang meninggalkan semua pengetahuan keluar dari pintu, tetapi kami selalu menemukan pengembang pintar untuk mengambil dan mengambil alih.
Dan ya, kami memiliki banyak penguji karena mereka mungkin harus menguji ulang hal 3 atau 4 kali. Juga tolong jangan terpaku untuk bertanya mengapa semua perubahan UI / UX ... itu hanya bagaimana hal-hal dilakukan ... sejak saat itulah mengapa aplikasi memenangkan banyak penghargaan untuk UI / UX dan pengguna akan membunuh untuk aplikasi. Proses pemikirannya adalah jika saya dapat membuat perbaikan bahkan 2% dalam sesuatu karena saya punya jam tambahan maka lakukanlah. Pengguna akan lebih bahagia, yang berarti lebih banyak $ atau pengguna. Dan ya, pengguna kami setuju dengan aplikasi yang berubah terus-menerus karena itulah yang dilakukan sejak hari pertama sehingga mereka tidak melihatnya sebagai buruk atau negatif.
Semoga posting ini tidak terlihat sombong, tapi saya tidak bisa melihat bagaimana Ulasan Kode tidak boros. Mungkin 2% dari semua kode kami dalam kode yang ditinjau memiliki bug. Setiap rilis kami mungkin menemukan 3 bug melalui review kode. Jadi akhirnya menjadi 40 jam ulasan kode per pengembang per rilis (4 x 40 = 160 jam) untuk menemukan 3 hingga 5 bug? Kemungkinannya adalah 50% 3 sampai 5 bug itu akan dijemput oleh QA. Bukankah lebih baik menghabiskan waktu 40 jam per pengembang untuk menambahkan fitur baru atau meningkatkan yang sudah ada?
sumber
Jawaban:
Ada beberapa hal yang dapat dilakukan ulasan kode untuk Anda, dan beberapa hal tidak dapat dilakukan. Argumen yang mendukung ulasan kode:
Banyak proses lincah menangani mereka dengan cara yang berbeda:
Pada dasarnya ada cara lain untuk mengurus potensi keuntungan yang biasanya Anda lakukan dengan melakukan tinjauan sejawat. Pengalaman pribadi saya dengan peer review adalah bahwa mereka adalah mekanisme yang sangat tidak efisien dan tidak efektif dalam menemukan bug atau cacat desain yang lebih besar. Namun, mereka memiliki tempat di beberapa tim, dan pada proyek-proyek di mana tangkas tidak layak (untuk alasan apa pun), mereka sangat diperlukan.
sumber
Apakah ulasan kode hanya untuk menemukan bug saja? Anda sepertinya berpikir itu benar dan saya tidak.
Saya berpendapat bahwa ulasan kode dapat lebih tentang kepemilikan kolektif kode, memastikan bahwa pengetahuan ada di banyak kepala, dan mempersiapkan orang lain untuk mewarisi kode yang bisa untuk fitur baru maupun untuk bug. Saya suka ulasan kode sebagai cara untuk melakukan sedikit pemeriksaan dan keseimbangan ke sistem karena Anda tidak pernah tahu kapan seseorang mungkin memiliki gagasan tentang di mana sesuatu dapat ditulis ulang untuk mempertahankan konvensi.
sumber
Pemrograman pasangan adalah jawaban XP untuk ulasan kode. Intinya, setiap baris kode ditinjau sebagaimana ditulis. Ulasan kode diambil secara ekstrim.
sumber
Ulasan dan pengujian kode seringkali tidak menangkap bug yang sama, dan bug yang ditangkap oleh review kode cenderung lebih mudah untuk diperbaiki, karena lokasi bug diketahui.
Anda tidak dapat mengetahui apakah kode bebas bug hanya karena lolos pengujian tanpa ada yang dicatat. "Pengujian hanya dapat membuktikan keberadaan bug, bukan ketidakhadiran." (Dijkstra?)
Peninjauan kode juga menjaga gaya kode tetap sama, dan mampu menemukan tempat-tempat di mana kode tidak baik tetapi kebetulan berfungsi untuk saat ini. Menghemat biaya perawatan di jalan.
Juga, tuntutan perusahaan besar dan startup berbeda. Startup biasanya gagal, dan harus bergerak cepat. Perusahaan besar mendapatkan lebih banyak nilai dari melakukan sesuatu dengan benar daripada secepat mungkin. Anda mungkin lebih suka bekerja di startup daripada perusahaan besar, tapi itu bukan alasan untuk mencoba memaksakan strategi startup di mana mereka tidak cocok.
sumber
Apakah ulasan kode Anda hanya menampilkan perubahan UI / UX? Saya berpendapat bahwa itu bukan review kode, ini adalah tes kegunaan. Ulasan kode lebih banyak tentang memunculkan masalah yang tidak pernah dilihat pengguna / penguji / bisnis /, karena mereka ada dalam kode. Petunjuknya ada di sana dalam nama.
Sekarang saya akan setuju dengan Anda bahwa ada garis yang harus ditarik di suatu tempat. Apakah Anda meninjau 4 iterasi perubahan UI yang sama? Atau apakah Anda melewati 4 iterasi itu, dengan masing-masing berpotensi membuat kode kurang terawat? Saya akan mengatakan mencoba dan mengukur kedua pendekatan dan menemukan keseimbangan yang tepat untuk tim Anda, tetapi jangan tinggalkan ulasan kode sepenuhnya.
Bahkan jika tinjauan kode tidak pernah menemukan masalah, ada manfaat yang jarang Anda sadari sampai tidak ada: setiap bagian kode dilihat oleh dua pengembang, sehingga dua pengembang tahu apa perubahan itu dan apa yang ingin dicapai . Jadi salah satu dari mereka jatuh sakit keesokan harinya dan libur selama seminggu, yang lain dapat mengambil pekerjaan mendesak yang mereka lakukan.
sumber
Saya cenderung setuju bahwa kepemilikan dan pemasangan kode kolektif bersama dengan TDD dan CI adalah penangkal Agile untuk sesi tinjauan kode formal.
Bahkan di bawah UP / Spiral saya bukan penggemar berat dari langkah proses khusus menjadi "review kode" karena menurut saya jenis masalah yang mungkin ditemukan ditemukan lebih lambat daripada yang mungkin terjadi jika energi yang sama malah diinvestasikan di beberapa muka kolaborasi dan beberapa otomatisasi sederhana.
Saya merasa bahwa karena ada: - beberapa ulasan review tentang desain (biasanya dinyatakan dalam UML setidaknya di papan tulis) berarti masalah desain skala besar atau buruknya penggunaan API, dll. Tertangkap sebelum banyak kode ditulis. - FxCop, CheckStyle, FindBugs (atau serupa) berjalan bersama dengan integrasi berkelanjutan otomatis dibangun untuk menangkap penamaan, gaya, visibilitas, duplikasi kode, dll.
Kami dapat gagal lebih awal dan mendapatkan umpan balik lebih cepat daripada kebiasaan tinjauan kode hilir.
Saya tidak mengatakan itu buang-buang waktu untuk duduk dan melihat basis kode Anda sesekali, tetapi membuat tinjauan kode menjadi langkah gating untuk memanggil sesuatu dilakukan sepertinya itu menciptakan banyak pekerjaan dalam proses yang bisa saja dihindari dengan inspeksi / kolaborasi yang lebih baik di hulu.
sumber
Salah satu tujuan utama yang saya harapkan dari ulasan kode adalah untuk meningkatkan kemudahan pemeliharaan kode. Ulasan kode harus membantu semua orang menulis kode yang jelas sesuai dengan standar pengkodean yang baik. Sebagian besar kode mendapat banyak perawatan terutama di perusahaan besar. Pengembalian untuk kode yang dapat dipelihara harus dimulai sebelum kode dirilis, dan melanjutkan setelah itu.
Ulasan kode dalam dan dari dirinya sendiri tidak boleh menghasilkan perubahan kode. Jika tinjauan kode menunjukkan bahwa perubahan diperlukan, maka penerapan perubahan akan menghasilkan perubahan dalam kode.
Status kode dapat berubah sebagai hasil peninjauan, tetapi yang seharusnya sebagian besar tidak relevan dengan masalah yang Anda sebutkan.
Jika tinjauan kode menghasilkan beberapa perubahan kode maka ada sesuatu yang rusak dalam proses pengembangan Anda. Mengingat jumlah penguji yang Anda miliki mungkin ada lemparan ke dinding dan biarkan penguji menemukan mentalitas masalahnya.
Hal-hal harus pergi ke penguji dalam kondisi lengkap. Sebanyak mungkin pengujian harus dilakukan secara otomatis, sehingga penguji tidak menguji ulang barang yang sama dari waktu ke waktu.
UI / UX memang membutuhkan waktu pengujian, tetapi memiliki ahli desain / pengembangan di ujung depan harus mengurangi itu. Itu juga membutuhkan wajah di depan layar. Namun, dalam semua aplikasi yang saya gunakan, itu adalah bagian yang relatif kecil dari kode.
Biaya untuk menerapkan perubahan (termasuk perbaikan bug) umumnya naik untuk setiap tahap yang dilaluinya. Menemukan bug dalam pengembangan umumnya lebih murah daripada memperbaikinya setelah pengujian menemukannya.
sumber