Anda sedang mencari solusi teknis untuk masalah manusia. Itu jarang berhasil.
Berikut adalah beberapa pendekatan yang saya gunakan di masa lalu atau yang ada dalam pikiran tanpa benar-benar memiliki kesempatan untuk mereka dalam praktek. Beberapa mungkin tidak berlaku untuk kasus Anda, tergantung pada posisi yang Anda miliki dalam tim (jika Anda seorang pemimpin tim dengan reputasi yang sangat baik, kemungkinan Anda akan memiliki kesempatan yang lebih baik untuk menegakkan pandangan Anda daripada jika Anda seorang sarjana yang baru saja bergabung dengan tim selama masa magang Anda).
Diskusikan masalah ini dengan rekan kerja Anda dan jelaskan konsekuensi dari komitmen besar. Mungkin mereka tidak mengerti bahwa penggabungan yang rumit adalah konsekuensi langsung dari komit yang jarang, dan dari komit yang kecil dan sering akan membuat penggabungan (relatif) mudah.
Saya tahu banyak programmer yang hanya yakin bahwa penggabungan selalu rumit. Mereka melakukan paling banyak satu komit per hari, menghindari menggunakan alat yang kuat seperti diff Visual Studio dan auto-merge, dan memiliki praktik penggabungan manual yang buruk (kecuali "Ambil milikku" tanpa inspeksi lebih lanjut sebenarnya adalah praktik yang baik). Bagi mereka, ini tidak ada hubungannya dengan mereka , dan merupakan sifat yang melekat dari suatu penggabungan.
Berikan contoh nyata tentang apa yang terjadi di perusahaan lain (terutama yang sangat dihargai oleh rekan kerja Anda). Mereka mungkin tidak menyadari bahwa itu adalah masalah, dan diyakinkan bahwa komitmen maksimum satu per hari adalah apa yang dilakukan oleh setiap tim.
Beberapa orang tidak menyadari bahwa ada tim yang terdiri dari 5-10 anggota yang membuat hingga 50 dorongan untuk produksi, yang berarti rata-rata 5-10 komitmen per hari per orang. Mereka mungkin tidak mengerti bagaimana itu mungkin, atau mengapa ada orang yang melakukannya.
Menurut contoh. Cukup lakukan sedikit diri Anda. Jika memungkinkan, lakukan presentasi singkat yang menunjukkan gabungan mereka dan Anda secara berdampingan selama lebih dari seminggu (saya tidak yakin apakah mengekstraksi informasi semacam ini mudah dari kontrol versi). Tekankan pada kesalahan akhirnya yang telah mereka lakukan selama penggabungan dan bandingkan dengan jumlah kesalahan yang telah Anda lakukan (yang seharusnya mendekati nol).
Gunakan teknik "Sudah kubilang", jika perlu . Ketika Anda melihat kolega Anda menderita karena penggabungan yang menyakitkan, berkomentar keras bahwa komit kecil dan sering dapat membuat penggabungan (relatif) tidak menyakitkan.
Jelaskan bahwa tidak ada durasi minimum untuk membuat komitmen. Komit bahkan mungkin sesuai dengan perubahan kecil yang dibuat dalam beberapa detik. Mengganti nama file, menghapus komentar usang, mengoreksi kesalahan ketik adalah semua tugas yang dapat dilakukan segera.
Pemrogram tidak perlu takut melakukan komit kecil, melainkan menggabungkan banyak perubahan menjadi satu komit besar.
Bekerja dengan individu alih-alih tim, jika perlu. Jika ada seseorang yang secara khusus menolak untuk sering melakukan, melakukan sedikit, berbicara dengan orang ini secara individual untuk melihat mengapa dia menolaknya.
Mereka mungkin memberikan alasan yang benar-benar valid yang dapat memberi Anda petunjuk tentang apa yang terjadi dengan tim. Beberapa alasan saya pernah mendengar sendiri:
“Guru / mentor saya memberi tahu saya bahwa praktik terbaik adalah dengan melakukan satu komitmen per hari.” Itu tidak mengejutkan saya, mengingat apa yang harus saya dengar dari guru-guru saya di perguruan tinggi .
“Rekan-rekan saya mengatakan kepada saya bahwa saya harus membuat lebih sedikit komitmen.” Saya telah diberitahu itu juga di beberapa tim, dan saya mengerti maksud mereka. Kami memiliki catatan yang praktis diisi dengan komitmen saya (tidak sulit untuk dilakukan ketika empat rekan tim bahkan tidak melakukan satu komitmen per hari), yang membuat rekan kerja saya frustrasi.
“Saya pikir komit kecil membuat sulit untuk menemukan revisi.” Entah bagaimana poin yang valid, bahkan ketika tim berusaha menulis pesan log deskriptif.
"Saya tidak ingin membuang terlalu banyak ruang di server kontrol versi kami." Orang itu jelas tidak mengerti bagaimana komit disimpan (atau seberapa murah ruang penyimpanan).
"Saya pikir komit harus sesuai dengan tugas tertentu." Mengingat bahwa sering, tugas sesuai dengan beberapa pekerjaan yang harus dilakukan dalam satu hari (seperti di papan tugas manajemen visual), ini bukan kebetulan. Orang tersebut kemudian harus belajar untuk membuat perbedaan antara tugas dalam tumpukan (2 sampai 8 jam kerja) dan perubahan yang terisolasi secara logis yang harus dilakukan (beberapa detik hingga beberapa jam kerja). Ini juga terkait dengan poin 5.
Cari alasan tim tidak melakukan komitmen lebih sering. Anda mungkin akan terkejut dengan hasilnya.
Baru-baru ini, saya menyebutkan dalam jawaban yang berbeda bahwa kecepatan sebuah komit penting, dan bahkan ratusan milidetik mungkin mendorong pengembang untuk melakukan komitmen lebih jarang.
Alasan lain mungkin termasuk:
Aturan yang terlalu rumit untuk menulis pesan komit.
Aturan yang memaksa pengembang untuk menautkan komit ke tugas dari sistem pelacakan bug.
Ketakutan merusak bangunan.
Keengganan untuk berurusan dengan risiko melanggar pembangunan sekarang: jika Anda melakukan komitmen pada Jumat malam sebelum pergi, Anda dapat menunda berurusan dengan bangunan rusak hingga Senin.
Takut melakukan penggabungan.
Tentukan apakah pengembang memahami bahwa ada manfaat lain yang sering dilakukan . Misalnya, platform Integrasi Berkelanjutan adalah insentif besar untuk sering melakukan , karena memungkinkan untuk menentukan dengan tepat di mana regresi diperkenalkan .
Saya lebih suka platform CI mengatakan kepada saya bahwa saya melanggar build di revisi 5023 yang terdiri dari perubahan dalam dua metode dalam satu file yang saya lakukan lima belas menit yang lalu, daripada di revisi 5023 yang terdiri dari perubahan yang menjangkau empat lusin file dan mewakili 13 jam kerja.