Saya mewarisi basis kode yang ada untuk produk yang ceroboh. Desain dasar sangat tidak memadai yang sayangnya saya dapat melakukan sedikit tentang tanpa refactor lengkap (kopling TINGGI, kohesi RENDAH, duplikasi kode merajalela, tidak ada dokumentasi desain teknis, tes integrasi bukan tes unit). Produk ini memiliki sejarah, paparan tinggi terhadap klien "cash-cow" yang kritis dengan toleransi minimal terhadap risiko, utang teknis yang akan membuat orang-orang Yunani memerah, basis kode dan kompleksitas SANGAT besar, dan pendekatan pemukul yang lelah terhadap bug oleh tim sebelum saya.
Tim lama melompat kapal ke divisi lain sehingga mereka memiliki kesempatan untuk merusak proyek lain. Sangat jarang saya mengalami Kegagalan Proyek Ketidakmampuan Teknis sebagai lawan Kegagalan Manajemen Proyek tetapi ini memang salah satu dari kasus tersebut.
Untuk saat ini saya sendirian tetapi saya punya banyak waktu, kebebasan untuk mengambil keputusan dan arahan di masa depan dan kemampuan untuk membangun tim dari awal untuk membantu saya.
Pertanyaan saya adalah untuk mengumpulkan pendapat tentang refactoring berdampak rendah pada proyek seperti ini ketika Anda memiliki waktu luang selama fase pengumpulan persyaratan fungsional. Ada ribuan peringatan kompiler, hampir semuanya impor yang tidak digunakan, variabel lokal yang belum dibaca, tidak adanya pengecekan tipe dan gips yang tidak aman. Pemformatan kode sangat tidak dapat dibaca dan ceroboh sehingga sepertinya pembuat kode menderita penyakit Parkinson dan tidak dapat mengontrol berapa kali bilah spasi ditekan pada garis tertentu. Sumber data dan file lebih lanjut biasanya dibuka dan tidak pernah ditutup dengan aman. Argumen metode tidak berguna, duplikat metode yang melakukan hal yang sama, dll.
Sementara saya menunggu persyaratan untuk fitur berikutnya, saya telah membersihkan hal-hal berisiko rendah berdampak rendah saat saya pergi dan bertanya-tanya apakah saya membuang-buang waktu atau melakukan hal yang benar. Bagaimana jika fitur baru berarti merobek kode yang saya habiskan sebelumnya? Saya akan memulai pendekatan Agile dan saya mengerti ini dapat diterima dan normal untuk terus-menerus memperbaiki selama pengembangan Agile.
Dapatkah Anda memikirkan dampak positif atau negatif dari saya melakukan ini yang ingin Anda tambahkan?