Izinkan saya menambahkan detail: Saya bekerja di tempat kelembagaan dengan banyak coder, penguji, analis QA, pemilik produk, dll. Dan di sini ada sesuatu yang menggangguku:
Kami telah mampu menjual perangkat lunak jelek (walaupun cukup fungsional) selama lebih dari satu dekade. Ini memiliki banyak fitur dan produk ini kompetitif, tetapi ada beberapa bug serius di luar sana, serta ribuan "potongan kertas" - sedikit gangguan yang klien harus terbiasa.
Sangat menyakitkan saya untuk melihat beberapa hal karena saya sangat percaya bahwa jika komputer tidak membantu membuat hidup kita lebih mudah, maka kita tidak boleh menggunakannya. Saya memiliki kepercayaan pada rekan-rekan saya - mereka cerdas, mampu, dan dapat meningkatkan hal-hal ketika fokusnya adalah melakukan hal itu.
Tetapi, mungkin sulit untuk melaporkan bug terhadap beberapa fungsi lama tanpa melihatnya ditutup atau dilupakan. "Berhasil seperti itu selama ribuan tahun" adalah jawaban yang khas. Juga, ketika QA melakukan regresi, mereka cenderung mencari apa pun yang berbeda sebanyak apa pun yang tampaknya tidak benar. Jadi, perbaikan terhadap masalah lama dapat ditulis sebagai bug, karena "sudah seperti itu bahkan sebelum waktu saya".
Penulis kode muda dalam diri saya berpikir: tulis ulang hal aneh ini! Sebagai seseorang yang memiliki kesempatan untuk menjadi dekat dengan penjualan, klien, saya ingin memberikan manfaat dari keraguan terhadap pendekatan ini.
Saya tertarik dengan pendapat / pengalaman Anda juga. Cobalah mempertimbangkan risiko, untung-untung, dan faktor non-teknis lainnya.
sumber
Jawaban:
Aku merasakan sakitmu.
Tetapi memperbaiki sesuatu hanya karena bug bukan alasan yang cukup baik.
Anda harus memastikan perbaikan Anda tidak akan merusak kode lain (bukan hanya milik Anda tetapi kode klien Anda yang menggunakan kode Anda). Jika Anda mendorong perbaikan dan ini merusak setiap sistem pelanggan Anda akan memiliki beberapa pelanggan yang sangat tidak puas.
Ada banyak contoh terkenal di mana kode baru ditulis untuk menggantikan sistem yang lama. Di mana mereka harus secara eksplisit menambahkan fungsionalitas bug di sistem lama karena pengguna bergantung pada bug itu (Tidak akan menyebutkan nama, tetapi saya yakin Anda bisa google itu).
Tes Regresi pada dasarnya adalah tes dari apa yang pelanggan Anda harapkan terjadi Sebelum menghapus tes regresi pastikan itu tidak akan menyakiti seseorang (ini hampir mustahil). Jika Anda dapat memperbaiki bug DAN ini tidak merusak tes regresi maka itu adalah perbaikan yang nyata.
sumber
beberapa hal yang perlu dipertimbangkan ketika memutuskan untuk memperbaiki bug ... tidak termasuk semua cara.
sumber
Tentukan bug. "Spesifikasi mengatakan diurutkan berdasarkan tanggal, tetapi diurutkan berdasarkan jumlah transaksi" tidak selalu merupakan bug dalam kode. Mungkin itu adalah perubahan tidak berdokumen - kadang-kadang, di suatu tempat, seseorang meminta perubahan urutan tetapi spesifikasi, persyaratan, manual (bahkan tombol dan label pada UI) tidak diubah agar sesuai, dan tidak ada yang keberatan. Bagi Anda untuk muncul dan mengubahnya kembali ke "menurut tanggal" akan menyebabkan kekacauan, dan bagi Anda untuk memperbarui ui, spek, manual dll pada dasarnya membuang-buang waktu Anda, dengan kemungkinan pengecualian dari sedikit "teori broken windows" . "
Beberapa hal jelas merupakan bug. Jika Anda mengklik tombol ini, itu meledak. Atau, jika Anda mengklik tombol ini pada hari Senin, itu meledak. Kecuali jika seseorang menugaskan Anda untuk menginvestasikan waktu untuk memahami alasannya, Anda dapat menghabiskan banyak upaya untuk menyelidiki. Dan begitu Anda mengetahui alasannya, bisa jadi Anda tidak dapat mengubahnya, karena itu akan merusak sesuatu yang lebih penting bagi pengguna atau manajemen.
Jika Anda melihat "kecerobohan" - kebocoran memori, kode yang jelas membutuhkan beberapa optimasi, indentasi dan penamaan konvensi yang tidak cocok dengan Anda - itu sangat menggoda untuk memperbaikinya suatu hari ketika Anda tidak memiliki hal lain untuk dilakukan, atau pada waktu Anda sendiri . Namun, "perbaikan" ini mengacaukan sejarah dalam kontrol sumber untuk sedikit atau tanpa manfaat, risiko bencana seperti "kami tidak pernah mengkompilasi modul itu karena biner yang kami gunakan dalam produksi dibangun dari kode yang telah hilang, dan Anda hanya menimpa itu ", dan dapat dengan serius mengecewakan orang yang" kesalahan "Anda" memperbaiki ".
Saya merekomendasikan satu lawan satu dengan atasan Anda. Jelaskan apa yang mengganggu Anda - apakah itu gaya pengkodean, hal-hal yang Anda yakini pasti mengganggu pengguna, angka yang tidak akurat, ketidakkonsistenan, atau bencana yang menunggu untuk terjadi? Kemudian tanyakan arah dan (ini kuncinya) ambil.
sumber
Jika Anda ingin memperbaiki bug yang sudah lama, Anda harus berhati-hati untuk tidak merusak fungsi yang ada. Jika ada unit test, ini lebih mudah, tetapi mengingat usia perusahaan dan perangkat lunak yang tersirat, mereka tidak ada. Saya akan merekomendasikan membaca buku Refactoring oleh Martin Fowler karena ini membahas cara memperbaiki dan memperbaiki bug dengan benar sambil mencoba meminimalkan efek samping. Saya juga merekomendasikan untuk memastikan perusahaan tidak masalah dengan Anda melalui bug lama selama waktu reguler. Mereka mungkin hanya membiarkan Anda melakukan ini jika Anda melakukannya lembur dari waktu.
Juga, jika bug telah menjadi fitur yaitu sebenarnya digunakan oleh klien karena memang memberikan sesuatu, pastikan untuk memberikan pengganti yang sesuai ketika mereka menginginkan perilaku itu (atau hanya mendokumentasikannya sebagai fitur alih-alih bug).
sumber