Bagaimana melakukan tinjauan kode yang efisien selama rilis demam?

17

Batas waktu untuk rilis adalah besok, kolega Anda akhirnya menyelesaikan tugasnya yang penting untuk rilis ini, manajer proyek berdiri di atas bahu Anda dan menekan Anda untuk akhirnya membuat build dan Anda melihat cacat pada kode kolega Anda selama peninjauan. Bukan yang kritis, tetapi sesuatu yang Anda tidak akan lepaskan jika bukan karena rilis besok. Dan untuk membuat segalanya lebih buruk, Anda memiliki pekerjaan Anda sendiri, Anda harus menyelesaikan secepatnya. Jadi apa yang kamu lakukan? Apakah Anda mengajukan keberatan meskipun ada tekanan atau Anda membiarkannya saja?

Salah satu cara yang saya temukan adalah untuk sementara menggabungkan komit ini pada cabang yang berbeda dan meninggalkan ulasan untuk nanti. Ini berfungsi jika masalahnya hanya kosmetik dan jika itu satu-satunya yang masih menunggu tinjauan kode. Namun, apakah ada cara yang lebih efisien untuk menangani ini? Misalnya, akankah Anda merekomendasikan komitmen satu orang untuk hanya meninjau dan menguji kode?

Tidak tahu
sumber
3
Mengapa Anda tidak mengangkat masalah dan membiarkan manajer menanganinya? Sepertinya itu adalah panggilannya, bukan milikmu: apakah dia setuju untuk merilis aplikasi yang berpotensi buggy, atau dia menunda (bagian dari) rilis. Sepertinya membiarkannya tergelincir membuat Anda lebih buruk di kedua dunia: Anda merilis versi kereta, dan Anda menjadi bertanggung jawab untuk itu karena Anda tahu itu cacat dan tidak mengatakan apa-apa.
Vincent Savard
1
Manajer dapat melakukan panggilan ini, bukan Anda. Tentu, sampaikan pengecualian. Lalu biarkan dia yang memutuskan. Dugaan saya adalah dia akan melanjutkan rilis dan membiarkan Anda menangani masalah yang Anda ajukan nanti.
Robert Harvey
"Aliran"? Apakah yang Anda maksudkan cacat?
Doc Brown
3
Ini mungkin akan membuat perbedaan jika tim Anda memberikan satu rilis per minggu, satu per bulan atau satu per tahun.
Doc Brown
Dalam rapat ulasan sesaat sebelum rilis, orang akan jauh lebih siap untuk membiarkan sesuatu lolos tanpa kondisi normal - Dan begitu lulus ulasan, masuk. Anda benar-benar tidak menginginkannya - Pergilah dengan proposal yang menunda tinjau sampai setelah rilis ketika semua orang kembali dalam pikirannya. Akan ada lebih banyak bug daripada itu ...
tofro

Jawaban:

18

Jawabannya di sini adalah berkomunikasi.

  1. Beritahu pimpinan teknis / tim tentang masalah ini
  2. Bicaralah dengan QA tentang dampak potensial
  3. Beri tahu manajemen proyek (siapa yang tepat di belakang Anda) bahwa mungkin ada masalah yang menyebabkan rilis menjadi tertunda, dan Anda akan kembali bersama mereka SECEPATNYA (dalam hitungan menit atau jam)
  4. Mengevaluasi apakah masalah ini adalah penghenti acara untuk rilis

Jika masalah bukan penghenti acara, lanjutkan dengan rilis. Menginformasikan QA, dan pengguna Anda tentang masalah dan berkomitmen untuk tanggal tindak lanjut di mana masalah akan ditambal. Ini hanya menjadi risiko lain untuk produksi.

Jika ini adalah show stopper (artinya ini akan berdampak negatif pada bottom line atau kesehatan seseorang) komunikasikan hal ini ke atas rantai bahwa rekomendasi Anda adalah untuk menunda rilis, dan beri tahu alasannya. Kemudian kembalilah bersama dev dan cari tahu berapa lama waktu yang diperlukan untuk memperbaiki masalah ini, dan beri tahu manajemen bahwa Anda perlu sejumlah X menit / jam / hari.

Peluangnya adalah manajemen tidak akan senang dengan show stopper ini di akhir pertandingan, tetapi tidak ingin itu dirilis untuk produksi.

Berkomunikasi, dan biarkan manajemen menelepon.

Greg Burghardt
sumber
8

Jangan hanya mengomunikasikan masalahnya, dokumentasikan saja

Perhatian besar saya dengan jawaban lain sejauh ini: Apa pun yang Anda katakan di sepanjang baris ini kepada manajer proyek khas yang menghadapi tenggat waktu dekat kemungkinan akan diabaikan atau dilupakan. Kemudian, Anda masih bisa berada di hook untuk mengkomunikasikan risiko secara tidak memadai , jika terjadi kesalahan.

Biarkan manajer proyek tahu tentang masalah yang Anda temukan, dan beri tahu dia bahwa Anda akan mendokumentasikannya . Anda harus bisa menunjukkan uji tuntas Anda.

Tempat mendokumentasikan dan siapa yang akan diceritakan tergantung pada lingkungan kerja Anda, tetapi pasti termasuk atasan Anda.

Identifikasi Risiko dan Dampak

Anda menyebutkan masalahnya bukan yang kritis tetapi tidak benar-benar mendefinisikan apa artinya itu. Menentukan hal itu adalah langkah Anda selanjutnya.

Lakukan dengan cepat analisis risiko dan dampak mengidentifikasi masalah, seberapa besar kemungkinannya menyebabkan masalah (risiko) dan beratnya konsekuensi jika risiko tersebut membuahkan hasil (dampak). Gunakan istilah yang terdefinisi dengan baik (yang seharusnya diketahui oleh manajer proyek Anda) seperti yang ditemukan di tautan di atas, tetapi juga berikan deskripsi yang mendukung analisis Anda.

Dokumentasi Anda juga harus mencakup tindakan yang Anda rekomendasikan. Ya , tidak masalah untuk menyampaikan kekhawatiran dan masih merekomendasikan untuk melanjutkan rilis. Itu benar untuk mengidentifikasi risiko .

Kapan rilis Anda berikutnya?

Jika, setelah menyelesaikan analisis risiko / dampak Anda, Anda masih ragu tentang apa yang harus direkomendasikan, pertimbangkan jadwal rilis Anda. Beberapa kode tidak sempurna boleh dilepaskan jika Anda bisa berharap untuk memasukkan perbaikan dalam dua minggu.

Jika ada kemungkinan bahwa memperbaiki masalah Anda akan menjadi "kehilangan prioritas" (yaitu, diabaikan demi peningkatan mengkilap berikutnya) maka itu adalah satu lagi alasan untuk mendokumentasikan masalah sesegera mungkin setelah Anda menemukannya: jika efektif "dimulai jam ”pada masalah ini.

Tim Grant
sumber
7

Dalam hal ini, cukup beri tahu semua orang dan biarkan mereka yang memutuskan. Itu mungkin bukan bug pertama yang Anda lepaskan.

Batas waktu adalah besok, tetapi Anda menemukan diri Anda dalam situasi ini:

manajer proyek berdiri di atas bahu Anda dan menekan Anda untuk akhirnya membangun

Ini mungkin pengecualian, jadi jangan membuat perubahan drastis pada proses Anda hanya karena satu bug lolos. Yang harus Anda lakukan adalah menerapkan beberapa langkah, sehingga Anda tidak membuat build pada menit terakhir. Mudah-mudahan, Anda membuat build pada frekuensi yang cukup teratur untuk memberi Anda keyakinan itu akan berhasil. Itu masih bukan alasan yang cukup baik untuk menjalankannya di menit terakhir. Memiliki hal-hal yang diuji dengan baik adalah bagian lain untuk meningkatkan kepercayaan diri.

Sampaikan skenario ini kepada siapa pun yang memimpin hal ini.

  • Tentukan jenis masalah apa yang harus disajikan.
  • Identifikasi opsi.
  • Siapa yang membuat keputusan
  • Kapan semua ini harus diputuskan? Itu mungkin akan relatif terhadap tanggal rilis.

Meskipun ini tidak menjawab apa yang harus dilakukan dengan masalah menit terakhir ini, ini memang menawarkan cara untuk memastikan Anda dapat menangani mereka di masa depan. Terutama ketika ada tekanan untuk melepaskan, Anda ingin memiliki cara untuk menangani hal-hal dengan cara yang dipikirkan dan tidak didorong oleh emosi.

JeffO
sumber
1

Jika ada tenggat waktu, dan manajer Anda tepat di belakang Anda melihat dari balik bahu Anda, Anda menyuruhnya pergi. Dia pergi atau kamu pergi. Jelaskan kepadanya bahwa dipaksa untuk meninjau di bawah tekanan, Anda mungkin juga tidak meninjau kode.

Dalam situasi seperti ini, Anda dapat yakin bahwa beberapa bug kritis akan melalui.

Anda mungkin berada dalam situasi yang beruntung, seperti mengirimkan ke App Store Apple, tempat Anda memiliki beberapa hari untuk menarik versi baru. Tetapi jika kode Anda dikirimkan ke pelanggan, itu adalah resep untuk bencana. Lain kali saya berharap manajer Anda merencanakan lebih baik.

gnasher729
sumber
Saya bisa mengerti bahwa seseorang mungkin menurunkan jawaban ini. Namun saya setuju dengan Anda bahwa ini masalah perencanaan dan meninjau di bawah tekanan tidak akan membuatnya lebih baik
Clijsters
Saya pikir cukup jelas OP tidak berarti "melihat dari balik bahu" secara harfiah, dia hanya sedikit melebih-lebihkan untuk memperjelas pendapatnya. Jadi IMHO jawaban ini benar-benar merindukan inti pertanyaan.
Doc Brown
2
@DocBrown, saya tidak setuju dengan Anda bahwa jawaban ini tidak tepat. Namun, PM benar-benar melihat dari balik bahu Anda, bersembunyi di sana pada hari batas waktu adalah kenyataan di banyak tempat.
Tim Grant
1

Jawaban lain fokus pada masalah manajer Anda yang mencoba membengkokkan proses kualitas Anda.

Namun, yang saya pikir Anda tanyakan adalah bagaimana menghadapi fakta bahwa tinjauan kode membutuhkan setidaknya 2 orang, dan karena itu menyebabkan penundaan yang signifikan. Misalnya, jika tugas membutuhkan waktu 2 jam untuk diimplementasikan dan 2 jam untuk meninjau, seringkali ada jeda yang panjang antara kedua kegiatan. Secara real time tugas mungkin membutuhkan 2 atau 3 hari untuk selesai.

Ini adalah masalah klasik dari throughput vs latensi. Dalam mesin penghasil perangkat lunak (manusia), saklar konteks itu mahal, jadi mencegah pekerjaan seseorang untuk segera melakukan tinjauan tidak boleh menjadi praktik yang umum.

Berikut adalah beberapa tips untuk mengurangi masalah:

  • Saat mengerjakan tugas, kirim kode dalam bagian-bagian kecil, sehingga peninjau tidak perlu memesan waktu lama yang berkelanjutan.
  • Promosikan budaya prioritas tinggi untuk ulasan kode. Jangan menghentikan unit kerja Anda saat ini ketika Anda menerima permintaan, tetapi ketika Anda bertanya-tanya tentang apa yang harus dilakukan selanjutnya, selalu pilih review dari antrian Anda.
  • Manfaatkan perbedaan zona waktu di tim Anda, jika ada.
  • Jangan komit satu orang untuk meninjau kode saja. Itu kontraproduktif. Dia tidak akan bisa menangani beban, jika dia akan serius dengan tugasnya. Manajer Anda tidak akan menerima gagasan seseorang sedang menganggur, hanya untuk berpotensi menyelamatkan satu hari.
Mateusz Stefek
sumber