Sepertinya masalah Anda lebih umum.
Masalah refactoring adalah gejala dan kemungkinan bantuan dari sebagian masalah.
Pimpinan Perangkat Lunak dan Tim Mengalokasikan Waktu Tim
Dari pengalaman saya, saya pikir Anda mungkin menghadapi masalah yang saya sebut, "semua orang adalah manajer perangkat lunak." Manajer produk, manajer proyek dan kadang-kadang insinyur sistem dan penguji bisa terkenal karena mencoba mengelola pengembang mikro yang mungkin sudah memiliki manajer perangkat lunak yang berpengalaman. Anda bahkan mungkin memiliki beberapa anggota di tim Anda yang percaya bahwa peran mereka adalah mengelola.
Jika Anda adalah manajer perangkat lunak, buat tugas untuk refactoring yang Anda inginkan, atau lebih baik lagi, minta tim Anda mengusulkan refactoring kepada Anda untuk persetujuan Anda. Agar tidak pengelolaan mikro, Anda mungkin memiliki pedoman tentang usia / penulis / ukuran / konteks kode yang akan di refactored yang dapat di-refactored secara bebas vs membutuhkan persetujuan. Jika seorang anggota tim Anda ingin secara besar-besaran memperbaiki empat kelas kode lama yang rumit yang tidak ia tulis yang bukan bagian dari fiturnya, pengalihan dua minggu adalah masalah Anda, jadi Anda perlu kesempatan untuk mengatakan tidak.
Anda dapat menyelinap, tetapi saya pikir lebih baik hanya membuat perkiraan dengan hati-hati dengan waktu untuk analisis, desain, pengkodean, berbagai bentuk pengujian (setidaknya unit dan integrasi), refactoring, dan risiko yang dinilai secara historis dan oleh kurangnya pengalaman atau kejelasan yang terkait dengan tugas tersebut. Jika Anda terlalu terbuka tentang cara kerja tim Anda (atau memiliki anggota dalam tim Anda), mungkin bijaksana untuk mempersempit saluran komunikasi sehingga mereka menelusuri Anda dan mendiskusikan sumber daya dan hasil, bukan metode.
Pilihan Proyek Awal Membuat Siklus Vicious untuk Refactoring
Pemeliharaan perangkat lunak sulit. Sangat sulit jika orang lain dalam organisasi membuat pilihan dengan biaya Anda. Ini salah, tetapi ini bukan hal baru. Ini telah ditangani oleh Barry Boehm yang merupakan salah satu penulis perangkat lunak hebat kami yang mengedepankan model manajemen yang ia gambarkan sebagai Theory W.
http://csse.usc.edu/csse/TECHRPTS/1989/usccse89-500/usccse89-500.pdf
Seringkali pengembang perangkat lunak dipalu untuk menghasilkan di bawah pendekatan manajemen Theory-X yang mengatakan bahwa pekerja pada dasarnya malas dan tidak akan melakukan kecuali didorong untuk tunduk. Boehm merangkum dan membandingkan model yang diusulkannya sebagai berikut:
"Daripada mengkarakterisasi seorang manajer sebagai otokrat (Teori X), pelatih (Teori Y), atau fasilitator (Teori Z), Teori W mencirikan peran utama manajer sebagai negosiator antara berbagai konstituennya, dan satu paket solusi proyek. dengan kondisi menang untuk semua pihak. Di luar ini, manajer juga merupakan penentu tujuan, pemantau kemajuan menuju tujuan, dan seorang aktivis dalam mencari konflik proyek menang-kalah atau kalah-kalah sehari-hari, menghadapi mereka, dan mengubahnya menjadi situasi win-win. "
Cepat dan Kotor seringkali hanya Kotor
Boehm kemudian menunjukkan alasan mengapa hal itu sangat menyedihkan bagi pengembang di tim pemeliharaan.
"Membangun produk yang cepat dan ceroboh mungkin merupakan" win "jangka pendek yang murah untuk pengembang dan pelanggan perangkat lunak, tetapi itu akan menjadi 'kerugian' bagi pengguna dan pengelola." Harap dicatat bahwa dalam model Boehm, pelanggan lebih merupakan administrator kontrak daripada pengguna akhir. Di sebagian besar perusahaan, anggap manajer produk sebagai pengganti pelanggan, atau mungkin orang yang membeli produk untuk daftar fiturnya.
Solusi saya adalah dengan tidak merilis tim pengembangan asli (atau setidaknya pemimpin asli) sampai kode tersebut di refactored untuk setidaknya memenuhi standar pengkodean.
Untuk pelanggan, saya pikir masuk akal untuk menghitung manajer produk sebagai pengganti pelanggan, dan sekelompok orang yang diberi imbalan karena mengirimkan sesuatu dengan cepat dan kotor tentu dapat diperluas, sehingga ada pemilih besar untuk melakukan sesuatu dengan cara yang salah.
Refactoring tidak dapat dinegosiasikan
Tolong jangan mundur dari peran Anda sebagai manajer perangkat lunak. Anda harus memiliki wewenang dan keleluasaan untuk menggunakan waktu tim Anda dalam proses dan peningkatan produk. Dalam peran itu, Anda mungkin perlu menegosiasikan pilihan Anda untuk membuat tim Anda lebih profesional. Namun, berkenaan dengan proses, jangan bernegosiasi dengan pemasaran, karena dalam pengalaman saya, itu adalah permainan yang kalah. Bernegosiasi dengan manajemen teknik. Itu menunjukkan Anda memiliki visi. Membangun tim perangkat lunak profesional merupakan perpanjangan dari peran mereka, dan jauh lebih mungkin dilihat sebagai win-win.