Gunakan Sistem Kontrol Versi Terdistribusi seperti git dan gunakan mesin folder bersama Anda untuk menyimpan repositori referensi. Inilah alasannya:
Setiap klon adalah cadangan
Jika hard drive server macet, semua orang memiliki salinan, siap untuk digunakan pada drive atau server baru. Karena perusahaan Anda tidak serius tentang kontrol versi, saya kira itu mungkin hampir sama dengan cadangan.
Referensi umum
Memiliki repositori utama dengan cabang master memungkinkan untuk mengetahui versi yang memiliki kata terakhir. Ini memecahkan "Anda telah menguji perubahan Anda terhadap versi Franck, tetapi apakah Anda juga memiliki versi John? Dan bagaimana Anda menggabungkannya?".
Memberikan lebih nyaman
Pelanggan menginginkan versi alpha hari ini? Nah, Anda dapat menguji apakah master cukup stabil dan mengirimkannya. Jika tidak dan Anda tidak punya waktu untuk memperbaikinya, kembali saja dan dapatkan versi yang lebih lama tetapi lebih stabil. Anda tidak dapat melakukannya jika hanya memiliki versi terbaru.
Kembali ke masa lalu dan perbaiki kesalahan Anda
Penggabungan manual Anda memiliki masalah yang hanya Anda lihat setelah beberapa hari, tetapi Anda telah menimpa konten folder bersama Anda? Tanpa VSC Anda tidak memiliki riwayat sehingga Anda tidak dapat dengan mudah kembali ke titik di mana Anda dapat memeriksa kesalahan yang Anda buat dan memperbaikinya. Kode tidak seperti gambar, itu seperti film: kode itu berkembang seiring waktu. Anda dapat mengekstrak gambar dari film. Anda tidak dapat mengekstrak film dari gambar.
Temukan bug lebih mudah
Bug muncul tetapi Anda tidak benar-benar memperhatikannya saat diperkenalkan, jadi Anda tidak dapat memperbaikinya saat kode "panas". Sekarang Anda tidak benar-benar tahu perubahan mana yang memperkenalkannya, sehingga bisa berasal dari beberapa lokasi berbeda dalam kode. Butuh berjam-jam hanya untuk menemukan di mana mencarinya. Dengan git, Anda bisa saja mengembangkan tes untuk mengatakan jika bug terjadi pada versi tertentu, dan gunakan git bissect
untuk menemukan komit yang tepat yang memperkenalkan bug. Alih-alih mencari ribuan baris kode, Anda sekarang tahu itu terletak di 10 baris yang berubah, dan Anda dapat menyimpan tes di suite pengujian untuk memastikan bug tidak diperkenalkan lagi.
Setiap pengembang bertanggung jawab atas pekerjaannya sendiri
Jika Anda adalah pemimpin tim, dan tidak memiliki VCS, kemungkinan besar Anda harus melakukan pekerjaan kotor, penggabungan. Jika Anda melakukannya sendiri, Anda mungkin tidak tahu segalanya tentang semua perubahan dan dapat menyebabkan kesalahan. Sebaliknya, jika Anda selalu bertanya kepada orang-orang yang menulis kode untuk mengumpulkan dengan Anda setiap kali ada kode untuk digabungkan, maka saat itulah mereka tidak akan menggunakan untuk menghasilkan kode baru.
Dengan VCS, dalam alur kerja sederhana, pengembang hanya perlu mengurus pekerjaannya, dan satu sumber perubahan eksternal: cabang master. Mungkin ada 1 atau 100 orang yang melakukan di cabang utama, itu sama. Untuk dapat mendorong perubahannya, ia harus menyesuaikannya dengan perubahan terbaru yang dilakukan oleh orang lain. Mungkin tampaknya perlu waktu lebih lama untuk mendorong kode, tetapi itu karena Anda juga melakukan penggabungan yang akan memakan waktu.
Perbedaannya adalah bahwa penggabungan dilakukan oleh orang yang melakukan perubahan, siapa yang tahu kode itu paling baik karena dia telah menulisnya.
Siapa yang menulis kode itu?
Ada bug di sini, tetapi siapa yang telah menulis baris kode tertentu? Sulit untuk diingat, terutama jika proyek itu berlangsung beberapa bulan. git blame
akan memberi tahu Anda siapa dan kapan kalimat itu ditulis, sehingga Anda dapat bertanya kepada orang yang tepat, dan tidak ada "Saya tidak ingat menulis itu".
Proyek ini semakin besar
Pelanggan menginginkan lebih banyak fitur dan Anda tim yang terlalu kecil, Anda memerlukan pengembang lain. Bagaimana Anda mengelola peningkatan kompleksitas gabungan tanpa VSC?
Perubahan mendesak
Pelanggan menelepon dan meminta perbaikan bug penting untuk produksi, tetapi Anda saat ini sedang mengerjakan fitur baru. Hanya git stash
untuk mengesampingkan perubahan Anda, atau mengkomitnya di cabang baru dan mendorong perubahan dan Anda siap untuk mulai bekerja pada perbaikan yang mendesak, tanpa takut kehilangan pekerjaan Anda yang tertunda.
Itu bekerja 10 menit yang lalu
Anda melakukan beberapa perubahan secara lokal dan sesuatu yang berhasil 10 menit yang lalu berhenti berfungsi. Tanpa VCS Anda akan menatap kode atau paling baik, melakukan salinan dari versi referensi, dan berbeda untuk melihat apa yang Anda ubah. Oh, tunggu, referensi berubah sejak saya mulai bekerja, jadi saya tidak bisa lagi berbeda. Dan saya tidak berpikir untuk menyimpan salinan asli dari kode tempat saya mendasarkan perubahan saya.
Dengan VCS, Anda langsung melakukan sesuatu seperti git diff
itu, dan mengubah Anda dibandingkan dengan versi yang tepat dari kode yang Anda gunakan.
Saya harus menyimpan log debug saya
Jadi Anda orang jahat dan tidak menggunakan logging? Anda harus memercikkan printf
semua basis kode Anda sampai Anda menemukan semua bagian dari bug jahat itu? Sekarang Anda menemukan satu, perbaiki, tetapi ingin tetap menjaga kode debug Anda untuk memperbaiki masalah yang tersisa.
Tanpa VCS, Anda harus menyalin file, membentangkan kode debug (yang dapat menambah beberapa kesalahan pengeditan), mendorongnya, dan mengembalikan file yang dicadangkan. Oh, tapi sepertinya beberapa kode debug masuk.
Dengan git, Anda hanya git add --patch
dan memilih beberapa baris kode yang ingin Anda masukkan dalam komit Anda, dan hanya dapat melakukan itu. Kemudian Anda melanjutkan pekerjaan Anda dan masih memiliki kode debug Anda. Anda tidak harus menyentuh kode, jadi tidak ada kesalahan salin / tempel.
Bola besar lumpur
Tanpa VCS, orang-orang bekerja di pihak mereka, dan memberi Anda banyak perubahan, kadang-kadang tidak berhubungan. Ketika ada terlalu banyak kode untuk diperiksa, sulit untuk menemukan bug.
VCS memungkinkan Anda melakukan perubahan kecil dan bertahap, dan memberi Anda changelog. Changelog sangat penting: orang harus memberi tahu di sana mengapa mereka melakukan perubahan, bukan apa perubahan itu ( pertanyaan apa yang sudah dijawab oleh perubahan kode itu sendiri). Ini berarti ketika Anda memeriksa beberapa kode fitur baru misalnya, Anda tidak harus membaca banyak perubahan campuran yang tidak terkait seperti perbaikan bug yang tidak terkait. Ini membantu memfokuskan pada kode yang Anda pedulikan.
Jika saya memberi Anda 100 kentang 1 demi 1, dan satu busuk, Anda akan segera menemukannya. Sekarang jika saya membuang 100 kentang di depan Anda dan meminta Anda untuk menemukan yang busuk, itu bukan tugas yang sama.
Lekukan
Semoga Anda memiliki kebijakan gaya pengkodean yang baik, jika tidak lekukan perubahan akan membuat Anda gila jika Anda bergabung dengan tangan. Tentu, Anda dapat mengabaikan spasi putih dalam perubahan (tetapi tidak dalam bahasa saat lekukan diperhitungkan, seperti Python). Tetapi kemudian Anda akan mendapatkan kode yang tampak aneh sulit dibaca.
Anda adalah pemimpin proyek
Jika Anda pemimpin, ini berarti Anda akan disalahkan jika semuanya tidak berhasil. Jika Anda tidak bisa merasa nyaman dengan situasi ini karena atasan Anda masih tidak dapat memahami bahwa menggunakan alat yang tepat untuk pekerjaan yang tepat sepadan, maka paling tidak, saya akan menolak untuk menjadi pemimpin dari kegagalan yang dapat diprediksi.