Banyak analis data yang saya hormati menggunakan kontrol versi. Sebagai contoh:
- http://github.com/hadley/
- Lihat komentar di http://permut.wordpress.com/2010/04/21/revision-control-statistics-bleg/
Namun, saya mengevaluasi apakah mengadopsi sistem kontrol versi seperti git akan bermanfaat.
Tinjauan singkat: Saya seorang ilmuwan sosial yang menggunakan R untuk menganalisis data untuk publikasi penelitian. Saat ini saya tidak menghasilkan paket R. Kode R saya untuk suatu proyek biasanya mencakup beberapa ribu baris kode untuk input data, pembersihan, manipulasi, analisis, dan pembuatan keluaran. Publikasi biasanya ditulis menggunakan LaTeX.
Sehubungan dengan kontrol versi ada banyak manfaat yang telah saya baca, namun mereka tampaknya kurang relevan dengan analis data solo.
- Cadangan: Saya sudah memiliki sistem cadangan.
- Forking dan rewinding: Saya tidak pernah merasa perlu untuk melakukan ini, tapi saya bisa melihat bagaimana itu bisa berguna (misalnya, Anda sedang menyiapkan beberapa artikel jurnal berdasarkan dataset yang sama; Anda sedang menyiapkan laporan yang diperbarui setiap bulan, dll. )
- Kolaborasi: Sebagian besar waktu saya menganalisis data sendiri, dengan demikian, saya tidak akan mendapatkan manfaat kolaborasi dari kontrol versi.
Ada juga beberapa biaya potensial yang terlibat dengan mengadopsi kontrol versi:
- Saatnya mengevaluasi dan mempelajari sistem kontrol versi
- Kemungkinan peningkatan kompleksitas pada sistem manajemen file saya saat ini
Namun, saya masih merasa bahwa saya kehilangan sesuatu. Panduan umum tentang kontrol versi tampaknya lebih ditujukan pada ilmuwan komputer daripada analis data.
Dengan demikian, khususnya terkait dengan analis data dalam keadaan yang mirip dengan yang tercantum di atas:
- Apakah kontrol versi sepadan dengan usaha?
- Apa pro dan kontra utama dari mengadopsi kontrol versi?
- Apa strategi yang baik untuk memulai dengan kontrol versi untuk analisis data dengan R (misalnya, contoh, gagasan alur kerja, perangkat lunak, tautan ke panduan)?
sumber
Jawaban:
Saya merasa jawaban untuk pertanyaan Anda adalah ya - manfaat mengelola file Anda dengan sistem kontrol versi jauh lebih besar daripada biaya penerapan sistem seperti itu.
Saya akan mencoba merespons secara rinci beberapa poin yang Anda ajukan:
Ya, dan saya juga. Namun, ada beberapa pertanyaan yang perlu dipertimbangkan sehubungan dengan kesesuaian mengandalkan sistem cadangan tujuan umum untuk secara memadai melacak file penting dan aktif yang berkaitan dengan pekerjaan Anda. Di sisi kinerja:
Dan yang paling penting:
Misalnya, miliki Mac dan gunakan Time Machine untuk mencadangkan ke hard drive lain di komputer saya. Time Machine sangat bagus untuk memulihkan file aneh atau memulihkan sistem saya jika ada masalah. Namun itu tidak memiliki apa yang diperlukan untuk dipercaya dengan pekerjaan penting saya:
Saat mencadangkan, Time Machine harus mem-image keseluruhan hard drive yang membutuhkan banyak waktu. Jika saya terus bekerja, tidak ada jaminan bahwa file saya akan ditangkap dalam keadaan seperti itu ketika saya memulai cadangan. Saya juga dapat mencapai titik lain yang ingin saya simpan sebelum cadangan pertama selesai.
Hard drive tempat cadangan Time Machine saya disimpan berada di mesin saya - ini membuat data saya rentan terhadap pencurian, kebakaran, dan bencana lainnya.
Dengan sistem kontrol versi seperti Git, saya dapat memulai cadangan file tertentu tanpa upaya lebih lanjut yang meminta penyimpanan dalam editor teks - dan file tersebut dicitrakan dan disimpan secara instan. Selanjutnya, Git didistribusikan sehingga setiap komputer tempat saya bekerja memiliki salinan lengkap dari repositori.
Ini setara dengan pekerjaan saya yang dicerminkan di empat komputer yang berbeda - tidak ada tindakan dewa yang dapat menghancurkan file dan data saya, pada titik mana saya mungkin tidak akan terlalu peduli.
Sebagai solois, saya juga tidak banyak bercabang. Namun, waktu yang saya hemat dengan memiliki opsi untuk mundur telah membayar sendiri investasi saya dalam mempelajari sistem kontrol versi berkali-kali. Anda mengatakan Anda tidak pernah merasa perlu melakukan ini - tetapi apakah memundurkan file apa pun di bawah sistem cadangan Anda saat ini benar-benar merupakan pilihan yang tidak menyakitkan dan layak?
Terkadang laporannya terlihat lebih baik 45 menit, satu jam atau dua hari yang lalu.
Ya, tetapi Anda akan mempelajari alat yang mungkin terbukti sangat diperlukan jika Anda akhirnya berkolaborasi dengan orang lain dalam suatu proyek.
Jangan terlalu khawatir tentang ini. Sistem kontrol versi seperti bahasa pemrograman - mereka memiliki beberapa konsep kunci yang perlu dipelajari dan sisanya hanya gula sintaksis. Pada dasarnya, sistem kontrol versi pertama yang Anda pelajari akan membutuhkan investasi paling banyak waktu-beralih ke yang lain hanya membutuhkan belajar bagaimana sistem baru mengekspresikan konsep-konsep kunci.
Pilih sistem yang populer dan lakukan!
Apakah Anda memiliki satu folder, misalnya
Projects
yang berisi semua folder dan file yang terkait dengan aktivitas analisis data Anda? Jika demikian maka menampar kontrol versi akan meningkatkan kompleksitas sistem file Anda dengan tepat0
. Jika proyek Anda bertebaran tentang komputer Anda - maka Anda harus memusatkan mereka sebelum menerapkan kontrol versi dan ini pada akhirnya akan mengurangi kompleksitas mengelola file Anda - itu sebabnya kami memilikiDocuments
folder.Iya! Ini memberi Anda tombol membatalkan besar dan memungkinkan Anda untuk dengan mudah mentransfer pekerjaan dari mesin ke mesin tanpa khawatir tentang hal-hal seperti kehilangan drive USB Anda.
Satu-satunya hal yang dapat saya pikirkan adalah sedikit peningkatan ukuran file- tetapi sistem kontrol versi modern dapat melakukan hal-hal yang luar biasa dengan kompresi dan penghematan selektif sehingga ini adalah poin yang bisa diperdebatkan.
Simpan file yang menghasilkan data atau laporan di bawah kontrol versi, selektif. Jika Anda menggunakan sesuatu seperti
Sweave
, simpan.Rnw
file Anda dan bukan.tex
file yang dihasilkan darinya. Simpan data mentah jika akan sulit diperoleh kembali. Jika memungkinkan, tulis dan simpan skrip yang memperoleh data Anda dan skrip lain yang membersihkan atau memodifikasinya daripada menyimpan perubahan pada data mentah.Sedangkan untuk mempelajari sistem kontrol versi, saya sangat merekomendasikan Git dan panduan ini.
Situs web ini juga memiliki beberapa kiat dan trik bagus terkait dengan melakukan tindakan spesifik dengan Git:
http://www.gitready.com/
http://progit.org/blog.html
sumber
Saya bekerja selama sembilan tahun di sebuah toko analisis, dan memperkenalkan gagasan kontrol versi untuk proyek analisis kami ke toko itu. Saya sangat percaya pada kontrol versi, tentu saja. Saya akan membuat poin-poin berikut.
sumber
Demi kelengkapan, saya pikir saya akan memberikan pembaruan pada adopsi saya kontrol versi.
Saya telah menemukan kontrol versi untuk proyek analisis data tunggal sangat berguna.
Saya telah mengadopsi git sebagai alat kontrol versi utama saya. Saya pertama kali mulai menggunakan Egit dalam Eclipse dengan StatET. Sekarang saya umumnya hanya menggunakan antarmuka baris perintah, meskipun integrasi dengan RStudio cukup bagus.
Saya telah membuat blog tentang pengalaman saya yang diatur dengan kontrol versi dari perspektif proyek analisis data.
Seperti yang dinyatakan dalam posting, saya menemukan mengadopsi kontrol versi memiliki banyak manfaat sekunder dalam cara saya berpikir tentang proyek analisis data termasuk mengklarifikasi:
sumber
Saya melakukan riset ekonomi menggunakan R dan LaTeX, dan saya selalu menempatkan pekerjaan saya di bawah kontrol versi. Ini seperti memiliki pembatalan tanpa batas. Coba Bazaar, ini salah satu yang paling sederhana untuk dipelajari dan digunakan, dan jika Anda menggunakan Windows, ia memiliki antarmuka pengguna grafis (TortoiseBZR).
Ya, ada manfaat tambahan untuk kontrol versi ketika bekerja dengan orang lain, tetapi bahkan pada proyek solo itu sangat masuk akal.
sumber
Saat ini, Anda mungkin menganggap pekerjaan Anda sebagai pengembangan kode yang akan melakukan apa yang Anda inginkan. Setelah Anda mengadopsi menggunakan sistem kontrol revisi, Anda akan menganggap pekerjaan Anda sebagai menuliskan warisan Anda di repositori, dan membuat perubahan inkremental yang brilian untuk itu. Rasanya jauh lebih baik.
sumber
Saya masih merekomendasikan kontrol versi untuk aksi solo seperti Anda karena memiliki jaring pengaman untuk menangkap kesalahan bisa menjadi hal yang hebat untuk dimiliki.
Saya telah bekerja sebagai pengembang Java tunggal, dan saya masih menggunakan kontrol sumber. Jika saya memeriksa semuanya secara terus-menerus, saya tidak akan kehilangan pekerjaan lebih dari satu jam jika terjadi kesalahan. Saya dapat bereksperimen dan refactor tanpa khawatir, karena jika salah, saya selalu dapat memutar kembali ke versi kerja terakhir saya.
Jika itu masalahnya, saya sarankan menggunakan kontrol sumber. Tidak sulit untuk belajar.
sumber
Anda harus menggunakan perangkat lunak kontrol versi, jika tidak analisis Anda tidak akan dapat diproduksi kembali dengan sempurna.
Jika Anda ingin mempublikasikan hasil Anda di suatu tempat, Anda harus selalu dapat merekonstruksi status skrip Anda pada saat Anda telah memproduksinya. Katakanlah salah satu peninjau menemukan kesalahan dalam salah satu skrip Anda: bagaimana Anda tahu hasil mana yang terpengaruh dan mana yang tidak?
Dalam hal ini, sistem cadangan tidak cukup karena mungkin hanya dilakukan sekali sehari, dan tidak berlaku label untuk cadangan yang berbeda, sehingga Anda tidak tahu versi mana yang sesuai dengan hasil mana. Dan mempelajari vcs lebih sederhana dari apa yang Anda pikirkan, jika mempelajari cara menambahkan file dan bagaimana melakukan perubahan, itu sudah cukup.
sumber
YA besar.
pro: Anda dapat melacak apa yang telah Anda lakukan sebelumnya. Sangat berguna untuk lateks, karena Anda mungkin memerlukan paragraf lama yang dihapus oleh Anda! Ketika komputer Anda crash atau Anda bekerja dengan yang baru, Anda memiliki data Anda kembali dengan cepat.
kontra: Anda perlu melakukan beberapa pengaturan.
Mulai gunakan saja. Saya menggunakan tortoise SVN di windows sebagai alat klien dan departemen saya memiliki server svn, saya meletakkan semua kode dan data saya (ya, Anda juga meletakkan data Anda di sana!) Di sana.
sumber
Mundur sedikit lebih dulu, dan pelajari kelebihan menulis paket R! Anda mengatakan Anda memiliki proyek dengan beberapa ribu baris kode, namun ini tidak terstruktur atau didokumentasikan seperti kode paket? Anda mendapatkan kemenangan besar dengan mematuhi paket ideal, termasuk dokumentasi untuk setiap fungsi, tes untuk banyak kesalahan yang sulit ditangkap, fasilitas untuk menulis suite tes Anda sendiri dll. Dll.
Jika Anda tidak punya disiplin untuk menghasilkan paket, maka saya tidak yakin Anda punya disiplin untuk melakukan kontrol revisi yang tepat.
sumber
Saya setuju dengan sentimen di atas dan mengatakan bahwa, Ya, kontrol versi berguna.
Keuntungan;
Dalam hal toolets, saya menggunakan Git , bersama dengan StatEt dan Eclipse yang berfungsi dengan baik, meskipun Anda tentu tidak harus menggunakan Eclipse. Ada beberapa plugin Git untuk Eclipse , tetapi saya biasanya menggunakan opsi baris perintah.
sumber
Kontrol versi untuk pengembangan solo (dalam bentuk apa pun) sangat menarik untuk:
Jika Anda tidak melihat diri Anda melakukan salah satu dari dua fitur kontrol versi dasar itu, satu-satunya alat cadangan yang mungkin Anda butuhkan.
Jika Anda memang membutuhkan fitur-fitur tersebut, maka Anda juga akan mendapatkan cadangan (
git bundle
misalnya dengan)sumber
Saya juga melakukan pekerjaan scripting solo, dan saya menemukan itu membuat hal-hal yang lebih sederhana, daripada membuatnya lebih kompleks. Cadangan diintegrasikan ke dalam alur kerja pengkodean dan tidak memerlukan prosedur sistem file yang terpisah. Waktu yang diperlukan untuk mempelajari dasar-dasar sistem kontrol versi pasti akan menghabiskan waktu dengan baik.
sumber
Dropbox memiliki kontrol versi "ppor man" yang membuat Anda menjadi bagian dari perjalanan ke sana untuk sedikit usaha dengan banyak manfaat tambahan.
sumber