Pada titik tertentu program sedang dalam pengembangan. Fitur sedang ditambahkan atau dihapus atau diubah sepanjang waktu. Setiap versi hanyalah prototipe. Jadi saya tidak membuang banyak waktu untuk menulis kode super bersih pada saat itu karena saya tidak pernah tahu berapa lama sesuatu berlangsung. Tentu saja saya mencoba untuk menjaga kualitas kode ke standar tertentu, tetapi waktu selalu menjadi masalah.
Kemudian tibalah titik di mana program selesai dan pembuat keputusan mengatakan "itu saja". Saya memang memiliki prototipe yang berfungsi pada saat ini, tetapi kode di dalamnya agak berantakan dari semua bolak-balik selama fase pengembangan. Saya diharapkan untuk memulai pengujian / debugging akhir tetapi nyali saya mengatakan bahwa saya sekarang harus entah bagaimana membersihkan dan atau menulis ulang hal-hal untuk memberikan arsitektur yang tepat yang membuat pemeliharaan dll lebih mudah.
Setelah barang diuji dan disetujui, tidak masuk akal untuk menulis ulang. Secara teratur saya berdiri di sana dengan prototipe 'selesai' yang berfungsi dan saya mendapatkan bug selama pengujian dan saya melihat bahwa itu adalah hasil dari pengkodean yang tidak cerdas yang merupakan hasil dari seluruh proses pengembangan. Saya di tengah pengujian dan perbaikan bug akan menjadi penulisan ulang ... itu berantakan!
Ada cara yang lebih baik / buku teks, saya yakin. Tetapi saya harus bekerja di lingkungan kerja nyata di mana tidak semua buku teks.
Jadi bagaimana cara mentransisikan prototipe kerja saya ke versi rilis dengan basis kode yang stabil? Mungkin saya seharusnya tidak menganggap pengembangan selesai begitu saya lakukan dan benar-benar melihatnya sebagai fase pembersihan ... Saya tidak tahu, saya butuh bantuan di sini.
SUNTING
Saya ingin mengklarifikasi beberapa hal.
Saya 100% di sisi melakukannya tepat sebelum dan tidak setelah, kode bersih dan mudah dibaca. Tetapi saya juga harus menyelesaikan sesuatu dan tidak bisa bermimpi tentang keindahan kode semua bersih dan mengkilap. Saya harus mencari kompromi.
Seringkali fitur baru benar-benar hanya sesuatu yang ingin kita coba dan lihat apakah masuk akal untuk mengimplementasikan sesuatu seperti ini. (khususnya dalam aplikasi seluler, untuk mendapatkan tampilan dan rasa yang nyata pada perangkat yang sebenarnya) Jadi itu adalah sesuatu yang kecil yang (imho) tidak membenarkan terlalu banyak pekerjaan dalam iterasi "mari kita lihat" pertama. Namun terkadang muncul pertanyaan KAPAN saya membayar tech.debt ini? Itulah pertanyaan tentang ini.
Jika saya tahu bahwa setengah dari fitur-fiturnya akan hilang satu hari kemudian (cukup pengalaman di perusahaan kami sekarang), saya benar-benar merasa sulit untuk percaya bahwa cara terbaik untuk mendekati masalah saya adalah dengan menginvestasikan waktu ekstra untuk menulis semuanya dengan bersih bahkan jika sebagian besar akan jatuh segera setelahnya. Rasanya bagi saya bahwa saya akan menghemat waktu jika saya melakukan satu pembersihan besar setelah semuanya padat, maka pertanyaan saya.