Anda tidak bisa tahu apa itu CI kecuali Anda tahu apa yang dulu kami lakukan. Bayangkan sebuah sistem dengan 3 bagian. Ada UI yang mengumpulkan data dan memasukkannya ke dalam basis data. Ada sistem pelaporan yang membuat laporan dari database. Dan ada semacam server yang memonitor database dan mengirimkan peringatan email jika kriteria tertentu dipenuhi.
Dulu ini akan ditulis sebagai berikut:
- Setuju pada skema untuk database dan persyaratan - ini akan memakan waktu berminggu-minggu karena harus sempurna karena Anda akan segera melihat alasannya
- Tetapkan 3 devs, atau 3 tim devs independen, ke 3 bagian
- Setiap pengembang akan mengerjakan karya mereka dan menguji karya mereka menggunakan salinan basis data mereka sendiri, selama berminggu-minggu atau berbulan-bulan.
Selama waktu ini para devs tidak akan menjalankan kode masing-masing, atau mencoba menggunakan versi database yang telah dibuat oleh kode orang lain. Penulis laporan hanya akan menambahkan sekumpulan data sampel. Penulis lansiran akan secara manual menambahkan catatan yang mensimulasikan acara laporan. Dan penulis GUI akan melihat database untuk melihat apa yang telah ditambahkan GUI. Seiring waktu, para pengembang akan menyadari bahwa spesifikasi itu salah dalam beberapa hal, seperti tidak menentukan indeks atau memiliki panjang bidang yang terlalu pendek, dan "memperbaikinya" dalam versi mereka. Mereka mungkin memberi tahu yang lain, yang mungkin menindaklanjutinya, tetapi biasanya hal-hal ini masuk daftar nanti.
Ketika ketiga bagian sepenuhnya dikodekan, dan diuji oleh devs mereka, dan kadang-kadang bahkan diuji oleh pengguna (menunjukkan kepada mereka laporan, layar atau peringatan email) maka akan datang fase "integrasi". Ini sering dianggarkan pada beberapa bulan tetapi masih akan berakhir. Itu perubahan panjang bidang oleh dev 1 akan ditemukan di sini, dan akan membutuhkan devs 2 dan 3 untuk membuat perubahan kode besar dan mungkin perubahan UI juga. Indeks tambahan itu akan mendatangkan malapetaka sendiri. Dan seterusnya. Jika salah satu devs diberi tahu oleh pengguna untuk menambahkan sebuah field, dan memang demikian, sekaranglah saatnya kedua lainnya harus menambahkannya juga.
Fase ini sangat menyakitkan dan sangat sulit untuk diprediksi. Maka orang-orang mulai berkata, "Kita harus lebih sering berintegrasi." "Kita harus bekerja sama sejak awal." "Ketika salah satu dari kami mengajukan permintaan perubahan [itulah cara kami berbicara kemudian] yang lain harus mengetahuinya." Beberapa tim mulai melakukan tes integrasi sebelumnya sambil terus bekerja secara terpisah. Dan beberapa tim mulai menggunakan kode dan output masing-masing setiap saat, sejak awal. Dan itu menjadi Integrasi Berkelanjutan.
Anda mungkin berpikir saya melebih-lebihkan cerita pertama itu. Saya pernah melakukan beberapa pekerjaan untuk sebuah perusahaan di mana kontak saya membuat saya keluar untuk memeriksa beberapa kode yang menderita dari kekurangan berikut:
- layar yang tidak dikerjakannya memiliki tombol yang belum melakukan apa-apa
- tidak ada pengguna yang menandatangani desain layar (warna dan font yang presisi; keberadaan layar, kemampuannya, dan tombol apa yang ada dalam spesifikasi 300 halaman.)
Pendapatnya bahwa Anda tidak memasukkan hal-hal ke dalam kontrol sumber sampai selesai. Dia biasanya melakukan satu atau dua checkin setahun. Kami memiliki sedikit perbedaan filosofi :-)
Juga, jika Anda merasa sulit untuk percaya tim akan terputus di sekitar sumber daya bersama seperti database, Anda benar-benar tidak akan percaya (tapi itu benar) bahwa pendekatan yang sama diambil untuk kode. Anda akan menulis fungsi yang bisa saya panggil? Itu hebat, silakan dan lakukan itu, saya hanya akan hardcode apa yang saya butuhkan sementara itu. Berbulan-bulan kemudian saya akan "mengintegrasikan" kode saya sehingga memanggil API Anda dan kami akan menemukan itu meledak jika saya lulus nol, saya meledak jika mengembalikan nol (dan itu banyak) ia mengembalikan hal-hal yang terlalu besar bagi saya, itu tidak dapat menangani tahun kabisat, dan ribuan hal lainnya. Bekerja secara mandiri dan kemudian memiliki fase integrasi adalah normal. Sekarang kedengarannya seperti kegilaan.