Saya terkejut - dan benar-benar terkejut - pada sejumlah jawaban di sini yang mengatakan "jangan perbarui kecuali Anda harus". Saya sudah melakukan itu, dan sementara itu lebih mudah dalam jangka pendek, dalam jangka panjang membakar seperti neraka. Lebih sering, pembaruan yang lebih kecil jauh, lebih mudah untuk dikelola daripada yang besar sesekali, dan Anda mendapatkan manfaat dari fitur-fitur baru, perbaikan bug, dan sebagainya lebih cepat.
Saya tidak membeli gagasan bahwa perubahan pustaka entah bagaimana lebih sulit untuk diuji daripada perubahan kode. Itu sama saja - Anda membuat perubahan pada basis kode, dan Anda perlu memvalidasinya sebelum Anda berkomitmen, dan lebih dalam sebelum Anda merilis. Tetapi Anda harus sudah memiliki proses untuk melakukan ini, karena Anda membuat perubahan kode!
Jika Anda bekerja dalam iterasi, dari dua hingga empat minggu lamanya, saya akan menyarankan membuat memperbarui perpustakaan sekali per iterasi tugas, yang harus dilakukan sesegera mungkin setelah awal, ketika hal-hal sedikit lebih santai daripada sebelum iterasi tenggat waktu, dan proyek memiliki lebih banyak kapasitas untuk menyerap perubahan. Dapatkan seseorang (atau pasangan jika Anda melakukan pemrograman berpasangan) untuk duduk, lihat perpustakaan mana yang telah diperbarui, dan coba bawa masing-masing dan jalankan pembangunan kembali dan uji. Anggaran setengah hari hingga sehari untuk setiap iterasi, mungkin. Jika semuanya berfungsi, periksa perubahannya (saya berasumsi Anda menyimpan pustaka di kontrol sumber, seperti yang kita lakukan; saya tidak yakin bagaimana Anda akan menyebarkan perubahan dengan cara yang terkendali jika tidak). Ini jelas akan jauh lebih mudah jika Anda memiliki tes otomatis daripada jika pengujian sepenuhnya manual.
Sekarang, pertanyaannya adalah apa yang Anda lakukan jika pembaruan merusak - apakah Anda menghabiskan waktu memperbaikinya, atau mengabaikannya? Saya sarankan condong ke arah yang terakhir; jika dapat diperbaiki dalam satu jam, lakukanlah, tetapi jika pembaruan akan mengambil pekerjaan yang signifikan untuk diintegrasikan, kemudian tingkatkan sebagai tugas pengembangannya sendiri, untuk diperkirakan, diprioritaskan, dan dijadwalkan seperti yang lainnya. Kemungkinannya adalah kecuali itu membawa perbaikan atau peningkatan yang sangat penting, prioritasnya akan rendah, dan Anda tidak akan pernah bisa melakukannya. Tapi Anda tidak pernah tahu, pada saat putaran iterasi berikutnya memperbarui putaran hari, masalahnya mungkin telah diperbaiki sendiri; bahkan jika tidak, setidaknya sekarang Anda tahu bahwa ada hambatan di jalur pembaruan, dan itu tidak akan mengejutkan Anda.
Jika Anda tidak melakukan iterasi sejauh itu, saya akan mengatur semacam jadwal mandiri untuk pembaruan - tidak lebih dari bulanan. Apakah ada ritme proyek lain yang dapat Anda ikat, seperti ulasan status bulanan, atau rapat dewan arsitektur? Hari bayaran? Pizza malam? Bulan purnama? Apa pun, Anda perlu menemukan sesuatu yang jauh lebih pendek daripada siklus rilis tradisional, karena mencoba memperbarui semuanya dalam sekali jalan setiap 6-18 bulan akan terasa menyakitkan dan melemahkan semangat.
Tidak perlu dikatakan, jika Anda melakukan cabang stabilisasi sebelum rilis, Anda tidak akan menerapkan kebijakan ini kepada mereka. Di sana, Anda hanya akan memperbarui perpustakaan untuk mendapatkan perbaikan kritis.