Haruskah Anda memperbaiki cacat yang sudah ada saat mengerjakan sesuatu yang lain?

15

Teka-teki: Selama bekerja pada fitur baru atau memperbaiki cacat, Anda menemukan masalah warisan dalam kode. Apa yang harus anda lakukan Memperbaikinya dan berisiko mengubah perilaku kode. Entah itu telah bekerja sampai sekarang oleh beberapa kebetulan, atau kalau tidak cacat tidak terdeteksi atau layak waktu siapa pun untuk melaporkan. Jika Anda membiarkannya sendiri dan membiarkan masalah membuat kode lebih sulit untuk dikerjakan nanti? Memperbaiki masalah hanya akan menambah waktu tugas asli Anda dan memaksa Anda untuk melakukan uji regresi. Sedikit yang akan menghargai pekerjaan itu. Namun, memperbaikinya tampaknya benar. Kode dengan lebih sedikit masalah lebih mudah untuk diperbaiki dan dikembangkan.

Saya telah menemukan diri saya dalam situasi ini berulang kali saat kami berupaya memodernisasi aplikasi web. Saya tidak tahu apakah saya bersikap obsesif atau terhormat ketika saya pergi bersusah payah mengerjakan bug lama ini. Bagaimana Anda menangani situasi ini?

Terima kasih, Corey

Corey
sumber

Jawaban:

10

Saya bekerja di tim yang sangat kecil, jadi itu tergantung pada apa perubahannya:

Jika ini adalah perbaikan bug yang kecil dan jelas, saya pasti akan melakukannya. Saya juga memberikan komentar tambahan jika saya harus bekerja melalui kode orang lain dan perbaikan kecil lainnya yang berada di bawah "aturan boyscout" kepada saya.

Jika kodenya terjalin sedemikian rupa sehingga Anda harus bertanya "Apakah mengubah ini akan merusak sesuatu dan memerlukan pengujian" maka tidak, Anda tidak boleh mengubahnya. Bawa itu di sistem pelacakan bug Anda jika itu membuat Anda khawatir.

Ini, kebetulan, itulah sebabnya saya mencoba kode metode yang lebih kecil dengan tipe-tanda tangan yang lebih jelas juga. Jika Anda tahu tidak ada efek samping dan dapat membuat seluk-beluk cocok, Anda dapat memperbaiki, mengatur ulang, atau mengubah kode interior apa pun tanpa risiko.

Tapi jangan merasa kurangnya penghargaan adalah alasan untuk tidak memperbaiki bug yang Anda temukan atau meningkatkan basis kode dengan alasan apa pun. Jika tidak ada yang lain, Anda bersikap baik terhadap masa depan Anda yang pasti akan kembali ke sana untuk memperbaiki sesuatu yang lain.

EDIT: Anda juga perlu mengawasi waktu Anda di proyek. Jelas di bawah tenggat waktu yang ketat, Anda harus fokus untuk menyelesaikan pekerjaan utama, tetapi jika Anda hanya di bawah "beban normal" maka saya pikir sedikit membersihkan di sana-sini membuat semua orang lebih bahagia dalam jangka panjang.

CodexArcanum
sumber
1 untuk menyebutkan aturan pramuka "Tinggalkan perkemahan lebih bersih daripada yang Anda temukan."
Martin Wickman
8

Seperti biasa, itu tergantung.

  • Jika sepele dan Anda yakin dapat memperbaikinya, perbaiki.
  • Jika ada banyak unit test, sehingga Anda bisa yakin tidak merusak apa pun, perbaiki.
  • Kalau tidak, tambahkan // TODO, tambahkan ke pelacakan bug Anda, apa pun

Pada dasarnya Anda melakukan penilaian risiko: apa risiko berubah vs tidak berubah. Jika Anda merasa tidak punya cukup pengalaman (dengan pemrograman pada umumnya, atau sistem khususnya) tanyakan orang lain dalam tim.

Ben Hughes
sumber
5

Programmer Pragmatis menyebutnya 'Windows Rusak'.

Jika Anda tidak memperbaiki jendela yang rusak maka ada kecenderungan mereka membuat spiral kualitas kode yang menurun. Dan semakin banyak dari mereka ada pekerjaan yang lebih besar untuk memperbaikinya, dan oleh karena itu kecil kemungkinan mereka akan diperbaiki.

Apakah memperbaikinya sekarang atau nanti tergantung pada penilaian. Apakah ini perbaikan sederhana? Apakah Anda yakin kode melakukan apa yang Anda pikir itu? Apakah mungkin mengalihkan perhatian dari tugas Anda saat ini? Apakah Anda di bawah batasan waktu? Apakah mungkin akan ada lebih banyak bug?

Paling tidak, tandai item di sistem pelacakan Anda dan pastikan itu diperbaiki nanti. Penting untuk menandainya di sistem pelacakan bahkan jika Anda memutuskan untuk memperbaikinya sekarang, untuk memastikan bahwa itu diuji juga, dan untuk mendokumentasikan perubahan.

Dominique McDonnell
sumber
0

Jika itu adalah bug yang jelas, seperti sesuatu yang akan melanggar keamanan, merusak data, atau meningkatkan pengecualian yang ditampilkan kepada pengguna, maka perbaiki. Jika tidak, tanyakan seseorang yang tahu basis kode lebih baik dari Anda.

Mason Wheeler
sumber
Tampaknya masuk akal. Bagaimana dengan sesuatu yang tampaknya kecil, seperti HTML cacat yang diberikan oleh browser dalam mode Quirks? Bug, dalam hal ini, tidak banyak merugikan, tetapi saya tahu bahwa itu akan membuat hidup semakin sulit jika beberapa konten / plugin baru mengharuskan halaman di-render dalam mode yang sesuai standar.
Corey
@Corey: Ya, itulah yang Anda inginkan untuk berkonsultasi dengan pengembang yang lebih berpengalaman. Anda punya pendapat, dan saya setuju itu mungkin keputusan yang tepat, maka tunjukkan kasus Anda, tetapi ingatlah bahwa mungkin ada faktor-faktor lain yang tidak Anda sadari bahwa pria yang telah mengerjakan ini selama 5 tahun mengerti.
Mason Wheeler
0

Itu tergantung, jika ini adalah bug kecil di mana Anda yakin bahwa perbaikan Anda memiliki dampak rendah maka secara pribadi saya akan memperbaikinya sebagai bagian dari pekerjaan lain dan kemudian memberi tahu PM.

Jika ada risiko terhadap klien, pengguna atau perusahaan membawanya ke Manajer Proyek dan mendiskusikan kursus ke depan. Adalah tugas mereka untuk mengevaluasi risiko sehingga membawanya ke perhatian mereka dan kasus untuk memperbaikinya. Kemudian hormati keputusan mereka.

Thomas James
sumber
0

Penguji kami membenci ini. Kecuali sangat sepele, kami mencatatnya di database bug, kemudian mengalokasikannya untuk rilis dan menulis tes regresi. Jika pengembang hanya akan membuat perubahan yang tidak sesuai jadwal, bagaimana Anda bisa memenuhi tenggat waktu?

Craig
sumber
Terkadang membuat perbaikan bug kecil tidak benar-benar membutuhkan waktu lebih lama daripada mengabaikannya, dan lebih efisien daripada memperbaikinya nanti.
David Thornley
Itulah mengapa saya katakan kecuali itu sepele. Tapi apapun yang akan memakan waktu lebih dari 15 menit saya pikir harus dicatat
Craig
0

Saya pernah berada di tim di mana cacat non-kritis atau pelanggaran standar diajukan sebagai cacat "Kode Lemah". Saya akan mengatakan bahwa orang yang menemukan cacat kritis memiliki tanggung jawab untuk melemparkan semacam bendera

Tim Claason
sumber
0

itu tergantung pada bug. perhatian utama adalah memperkenalkan bug baru. Lebih baik berurusan dengan masalah yang diketahui daripada yang tidak diketahui. Jika sederhana, katakan perubahan teks, atau kesalahan logika sederhana, kami memperbaikinya, jika tidak biarkan saja.

Satu hal yang perlu diperhatikan, kami adalah toko kecil yang terdiri dari 4 dev dan magang dan bug yang saya perbaiki mungkin adalah bug yang saya buat.

Muad'Dib
sumber
0

Jika kodenya jelas salah, perbaikannya cukup mudah dan Anda yakin risiko berdampak pada pengguna rendah, maka lakukanlah. Itu datang ke penilaian profesional.

Anda harus ingat bahwa jika Anda telah menemukannya maka mungkin pengguna belum, atau mereka akan melaporkannya. Daripada menghabiskan waktu memperbaiki masalah yang mungkin tidak pernah ditemui oleh pengguna, Anda mungkin lebih baik menghabiskan waktu itu memperbaiki masalah yang menyebabkan masalah pengguna Anda sekarang.

Jason
sumber
Jika pengguna menemukan bug, seberapa sering mereka terganggu pada produk Anda dan perusahaan Anda, tetapi jangan melaporkannya kepada Anda? Saya menduga persentase yang tinggi.
Craig McQueen
0

Dokumentasikan pengamatan dengan baik, dan putuskan apakah akan memperbaikinya nanti.

Adakan beberapa diskusi formal (misalnya, dalam pertemuan reguler) atau diskusi informal (misalnya, saat makan siang) dengan kolega Anda, dan buat perubahan setelah Anda lebih percaya pada perilaku kode yang akan Anda perbaiki.

Meskipun tampaknya bug / cacat bagi Anda, itu sebenarnya mungkin menjadi "fitur" saat ini. Ini bisa menjadi solusi yang diimplementasikan dengan buruk untuk mengatasi beberapa kasus sudut pada menit terakhir dari rilis sebelumnya, dan "perbaikan bersih" Anda dapat menghidupkan kembali beberapa masalah yang sebelumnya diselesaikan.

YYC
sumber
0

Saya akan melawan tren di sini. Kecuali jika Anda berada dalam fase pengembangan prototipe paling awal, Anda tidak boleh segera memperbaikinya, Anda harus mengajukan laporan bug. Ini memiliki beberapa keunggulan:

  • tim dapat mengevaluasinya. Apakah itu bug nyata, apa risiko memperbaikinya.
  • manajemen harus memutuskan apakah cukup penting untuk mengambil dampak jadwal termasuk dalam rilis ini
  • metode untuk mendeteksinya dapat ditambahkan ke dalam test suite, semoga dengan cara yang cukup umum untuk juga menemukan kesalahan yang sama.
  • ini memberikan metrik berharga tentang berapa banyak bug yang lolos dari fase sebelumnya
ASHelly
sumber