Baru-baru ini saya mulai mengerjakan sebuah proyek di mana aplikasi monolitik yang sangat lama sedang dimigrasikan ke dalam arsitektur berbasis layanan-mikro.
Basis kode warisan sangat berantakan ('kode spageti') dan seringkali fungsi yang tampaknya sederhana (misalnya dinamai "multiplyValueByTen") kemudian mengungkapkan dirinya sebagai "ribuan baris kode validasi yang melibatkan 10 tabel di 3 skema berbeda".
Sekarang bos saya (benar) meminta saya untuk memperkirakan berapa lama waktu yang dibutuhkan untuk menulis fitur X dalam arsitektur baru. Tetapi saya mengalami kesulitan menghasilkan estimasi yang realistis; sering saya sangat meremehkan tugas karena alasan yang telah saya sebutkan di atas dan mempermalukan diri sendiri karena saya tidak dapat menyelesaikannya tepat waktu.
Hal yang masuk akal mungkin tampaknya benar-benar masuk ke dalam kode, catat setiap cabang dan panggilan ke fungsi lain dan kemudian perkirakan biaya waktu. Tetapi sebenarnya ada perbedaan yang sangat kecil antara mendokumentasikan kode lama dan benar-benar menuliskan versi baru.
Bagaimana saya harus mendekati skenario seperti ini?
Sementara saya benar-benar mengerti bagaimana refactoring kode lama bekerja, pertanyaan saya bukan tentang "bagaimana melakukan refactor / menulis ulang?" tetapi tentang memberikan jawaban yang realistis untuk "berapa lama waktu yang dibutuhkan untuk refactor / menulis ulang bagian X?"