Bos ragu menggunakan sistem kontrol versi untuk proyek baru, haruskah saya?

9

Lihat /software/109817/superior-refusing-to-use-subversion

Pertanyaan saya serupa, tetapi inilah perbedaan utama dalam skenario saya:

  • Kami memulai proyek baru dari awal, menggunakan PHP dan teknologi web. Tidak akan ada down time dalam pengembangan karena kami akan mengadopsinya dari awal, jika saya memiliki cara saya.

  • Tim dev saya terdiri dari saya, dan bos saya. Kami adalah Departemen "TI" perusahaan yang relatif kecil.

Aplikasi web akan menggantikan aplikasi lawas tanpa kontrol sumber sama sekali. Karena variasi dalam persyaratan hukum geografis, keputusan dibuat (sebelum saya dipekerjakan) untuk memotong aplikasi menjadi 7 direktori yang benar-benar terpisah untuk setiap versi. Pengembang yang berbeda melakukan hal yang berbeda di tempat yang berbeda pada waktu yang berbeda setelah itu. Menambal perubahan di mereka, well, saya pikir itu bisa dilakukan lebih baik, saya kira itu sebabnya saya memposting.

Proposal bos saya, langsung disisipkan dari email:

  • Pembaruan harus diserahkan sebagai paket dalam folder PENGAJUAN. Paket harus berisi semua file yang relevan serta file 'UPDATE.NFO' yang berisi deskripsi pembaruan, daftar semua file baru yang disertakan (dengan deskripsi), dan daftar semua file yang dimodifikasi dengan detail modifikasi.

  • Paket pembaruan harus fokus pada elemen individual dan tidak menyimpang dari tujuan yang dimaksudkan. Kode harus dirancang agar modular dan dapat digunakan kembali kapan pun memungkinkan.

  • Semua paket yang dikirimkan harus diinstal di lingkungan pengujian setiap pengembang segera setelah pengiriman. Setiap pengembang akan meninjau tambahan baru dan menyuarakan keprihatinan apa pun atas pemasangannya ke lingkungan produksi. Pembaruan paket standar harus diadakan selama minimal 3 hari kerja untuk proses peninjauan ini sebelum dimasukkan ke lingkungan produksi. Pembaruan / perbaikan prioritas tinggi dapat melewati persyaratan ini.

Alasan kontrol sumber ditemukan adalah untuk membuat semua itu otomatis, bukan? Saya menyarankan subversi, karena itulah yang saya gunakan di perguruan tinggi. Boss tidak suka subversi karena "Itu membuat kekacauan kode" (yaitu menggunakan sihir biner dan tidak mudah dibaca). Kami pernah mencobanya satu kali, tetapi saya pikir mencoba menggunakannya di windows membuat kesalahan huruf kecil / huruf besar yang aneh dan kami tidak dapat memeriksa file kami. Saya tidak tahu apakah itu hanya subversi, atau semua produk kontrol sumber yang dapat diterima.

Jadi, argumen apa yang harus saya buat untuk bos saya? Atau apakah dia benar, dan mungkin ada bahaya kehilangan semua pekerjaan kita dari bug aneh?

Atau apakah saya salah sama sekali? Apakah kontrol sumber benar-benar diperlukan dalam situasi saya? Ini adalah perangkat lunak penting bisnis utama yang sedang kita bicarakan, sehingga tidak akan diragukan lagi. Tapi hanya ada 2 pengembang (sekarang).

Selain itu, Jika saya tidak dapat meyakinkannya, apakah ada gunanya saya menggunakannya hanya untuk diri saya sendiri? Saya berbicara sebagai seseorang dengan pengalaman sangat terbatas yang benar-benar menggunakan svn; yang saya tahu hanyalah checkout dan komit. Apa sajakah fitur kontrol sumber (mungkin termasuk produk lain selain svn) yang akan membantu dalam upaya pengembangan pribadi saya?

Harap tidak ada komentar "dapatkan pekerjaan lain". Itu tidak membantu perdebatan.

DFPercush
sumber
25
'Dan tolong jangan komentar "Dapatkan pekerjaan lain".' Kenapa tidak? Bosmu hancur.
S.Lott
9
Bahkan jika Anda tidak dapat meyakinkannya, masih berguna untuk menggunakannya secara pribadi untuk Anda sendiri. Jadi Anda dapat dengan bebas mengedit file Anda tanpa rasa takut. Anda memiliki banyak "simpan poin" untuk file yang Anda kerjakan. Bahkan jika Anda harus memiliki SVN di kotak lokal Anda ... lebih baik daripada tidak sama sekali.
Lord Tydus
10
@ S.Lott, saya pikir OP memiliki hak untuk menentukan batas-batas pertanyaan. "Dapatkan pekerjaan lain" tidak layak, misalnya, jika OP tinggal di negara kecil dan ayah / ibu mertuanya adalah bos pekerjaan di mana OP dibayar dua atau tiga kali lipat dari yang mereka terima layak di pasar terbuka. Singkatnya, ini bukan bagian dari pertanyaan.
Dan Rosenstark
8
@ S.Lott I, on the other hand, think that the OP is being silly in trying to specify the bounds on the answer....Yah, batasan spesifiknya tidak konyol sama sekali. Nasihat karier adalah di luar topik, dan meskipun jawaban yang akan menjawab pertanyaan dan menawarkan saran karier baik-baik saja bagi saya, saya tidak berpikir itu konyol bagi OP untuk menentukan bahwa dia tidak peduli dengan saran karier.
yannis
9
@ S.Lott Apa yang saya temukan konyol di sisi lain, adalah nasihat karier itu sendiri, terutama ketika itu "mencari pekerjaan lain". Ada begitu banyak variabel yang tidak diketahui, sehingga saya merasa tidak mungkin untuk menerima saran semacam itu dengan serius.
yannis

Jawaban:

35

Jangan tanya dia. Jangan katakan padanya. Tunjukkan padanya.

Instal svn, atau git, atau apa pun yang Anda suka di beberapa mesin tambahan. Berlatihlah menggunakannya sendiri sampai Anda merasa nyaman tidak hanya menggunakannya, tetapi juga menjelaskannya. Jika Anda akan membuatnya nyaman dengan sistem baru Anda, Anda harus lebih dari nyaman dengan itu sendiri. Anda harus dapat membantunya pulih dengan mudah ketika dia mengacaukan gabungan atau memeriksa sesuatu di tempat yang salah.

Saat Anda siap, tunjukkan kepadanya apa yang Anda bicarakan. Tunjukkan padanya bahwa itu tidak "mengacaukan" apa pun. Tunjukkan bahwa itu tidak hanya memungkinkan Anda mengambil versi kode Anda sebelumnya dengan mudah, tetapi juga memungkinkan untuk mengetahui dengan tepat apa yang berubah antara dua versi.

Tunjukkan bahwa jika sesuatu terjadi pada server (bug serius, virus, hacker, kerusakan disk ...) Anda berdua akan terlihat seperti pahlawan jika Anda dapat langsung merekonstruksi versi yang diperlukan. Tunjukkan juga, bahwa Anda akan terlihat dua kali lebih baik jika Anda dapat menghasilkan versi apa pun berdasarkan permintaan. Cari email lama Anda dan kompilasi daftar masalah yang Anda miliki selama setahun terakhir yang bisa Anda hindari dengan kontrol versi.

Beri dia lembar contekan yang akan membuatnya mudah baginya untuk menggunakan sistem kontrol versi Anda.

Akhirnya, sarankan beberapa opsi tetapi serahkan keputusan kepadanya . Haruskah Anda mengatur server Anda sendiri, atau menggunakan salah satu dari banyak layanan yang di-host ? Haruskah Anda menggunakan svn, git, atau yang lainnya? Haruskah Anda memigrasi ketujuh proyek ke sistem, atau mencobanya dengan satu atau dua proyek pada awalnya?

Caleb
sumber
9
+1 untuk "jangan katakan, tunjukkan (setelah latihan)"
Javier
2
Tapi seperti kata seseorang, JANGAN gunakan untuk salinan Anda sendiri
0fnt
3
+1 untuksearch your old e-mail and compile a list of problems you've had over the past year that you could have avoided with version control.
Daenyth
Selain itu, menunjukkan mungkin lebih mudah jika ada sesuatu untuk ditampilkan. Saya menyarankan untuk menggunakan sesuatu dengan GUI, seperti misalnya SourceTree untuk git. Dengan cara itu kelihatannya tidak terlalu menakutkan, lebih mudah dipelajari, tidak ada yang perlu takut mengacaukan seluruh sistem dengan kesalahan ketik kecil dan itu sudah merupakan versi grafis dari lembar contekan yang Anda sebutkan.
R. Schmitz
28

Manfaat kontrol sumber jauh melampaui memungkinkan banyak pengembang untuk bekerja pada satu kode. Eric Sink, pendiri SourceGear , mencantumkan beberapa alasan kuat untuk menggunakan kontrol sumber sebagai pengembang tunggal :

- It's an undo mechanism.
- It's a historical archive.
- It's a reference point for diff.
- It's a backup.
- It's a journal of my progress. 
- It's a server. 

Eric juga kebetulan memiliki Source Control How-to pemula yang sangat bagus . Ada tutorial Mercurial online gratis yang disediakan oleh Joel Spolsky, Mercurial adalah sistem kontrol versi terdistribusi yang populer.

Sebagai langkah selanjutnya saya sarankan Anda untuk mulai menggunakan kontrol sumber secara lokal pada mesin Anda, sebagai pengembang tunggal. Dengan segera atasan Anda akan menyadari bahwa Anda mampu melakukan sihir belaka, seperti mengatakan dalam hitungan menit, jika tidak dalam hitungan detik, seberapa jauh bug super-kritis terjadi dan kemudian Anda akan memberi tahu dia secara tepat akun pelanggan mana yang terpengaruh dan perlu diperbaiki sebelum semuanya. neraka lepas. Atau bisa membatalkan perubahan yang tidak disetujui CEO dengan sangat cepat.

Dan akhirnya sebelum Anda mencoba meyakinkan atasan Anda, Anda mungkin ingin mempelajari topik penanganan keberatan . Ini 101 penjualan.

Jika tidak berhasil - lanjutkan secepat mungkin, tidak banyak gunanya membuang waktu Anda memiringkan kincir angin.

Vlad Gudim
sumber
1
+1 untuk artikel Eric Sink. +1 untuk menyarankan hg. git adalah semua kemarahan tetapi pertanyaannya dengan jelas menyatakan bahwa op adalah pemula dalam kontrol sumber dan hg sedikit lebih mudah untuk masuk daripada git. +1 untuk tutorial hg. +1 untuk memberikan referensi berorientasi penjualan, begitulah cara terbaik Anda berurusan dengan Atasan-berambut Bos (-0,5 untuk itu menjadi tautan pencarian google). +1 untuk referensi Don Quixote. Ini adalah jenis jawaban yang membuat saya ingin membuat akun duplikat sehingga saya dapat meningkatkan lebih dari satu kali.
yannis
1
Jawaban ini pada dasarnya mengatakan semuanya. Hanya satu alasan lagi mengapa Anda harus menggunakan kontrol sumber sendiri: jika dan ketika Anda melanjutkan, memiliki pengalaman dengan kontrol sumber akan terlihat bagus di resume Anda. Tidak memiliki pengalaman seperti itu tidak akan terlihat bagus.
Mike Nakis
10

Ya, menggunakan kontrol sumber, bahkan jika hanya untuk Anda, benar-benar bermanfaat. Git, misalnya, bekerja sangat baik untuk pengembang mandiri dan memungkinkan Anda melakukan hal-hal seperti cabang dan penggabungan (dengan biaya serendah mungkin) dan versi perubahan Anda saat Anda pergi.

SVN - atau sistem kontrol versi apa pun, sungguh - memungkinkan Anda untuk melakukan ini juga, tetapi penggabungannya sedikit lebih bermasalah.

Dan Rosenstark
sumber
Saya setuju dengan penggunaan Git. Saya menggunakannya untuk proyek, bahkan jika saya HANYA pengembang.
DanO
Saya mulai juga. Saya tidak akan menggunakan SVN ... tetapi dengan Git, sangat mudah untuk membuat dan mengelola repo tanpa berurusan dengan server, sehingga semakin sulit untuk membenarkan tidak mengatakan git initbegitu Anda mulai mengerjakan sesuatu.
cHao
tanpa hak .gitignorerepo git pada dasarnya tidak berguna. Itulah satu-satunya hal yang harus Anda miliki selaingit init
Dan Rosenstark
" tetapi penggabungan sedikit lebih bermasalah " - jika OP hanya menggunakannya sendiri, tidak akan ada banyak penggabungan, bukan? Menggabungkan kembali cabang fitur sendiri menjadi tuannya sendiri mungkin, tetapi kode apa pun yang ia terima dari bosnya lebih baik dimasukkan dalam komit baru, bukan? Saya tidak punya pengalaman dengan SVN, hanya git.
R. Schmitz
1
"Tidak akan ada banyak penggabungan" sampai ada. Setiap proyek, bahkan jika itu adalah proyek hobi, pada akhirnya akan membutuhkan tim pengembang (yang bisa menjadi satu orang) untuk mengerjakan dua hal sekaligus. Maka Anda harus menggabungkan, dan pada titik tertentu Anda akan mengalami konflik gabungan.
Dan Rosenstark
5

Jika saya tidak bisa meyakinkannya, apakah ada gunanya saya menggunakannya hanya untuk diri saya sendiri?

Iya. Ada manfaatnya menggunakannya hanya untuk diri sendiri. Anda mendapatkan riwayat perubahan sehingga Anda dapat melihat apa yang berbeda.

Tidak. Tidak ada manfaatnya karena bos Anda telah merusak proyek Anda karena banyak pengerjaan ulang yang tidak berguna karena mereka mengacaukan semuanya.

S.Lott
sumber
Bukan hanya karena Anda dapat melihat apa yang berbeda, Anda dapat beralih antara versi baru dan versi lama dalam dua detik.
gnasher729
3

Saya sangat merekomendasikan seperti yang disebutkan sebelum penggunaan git, alasan # 1 adalah karena VCS adalah jaring pengaman jika terjadi bencana. Cari stiker “Seandainya terjadi kebakaran: git commit, git push, tinggalkan bangunan”. Kode dapat disimpan di tempat lain, tetapi tidak di laptop yang dapat rusak, dicuri atau apa pun ... bahkan server jaringan lokal bukanlah tempat teraman untuk sesuatu yang berharga seperti kode.

Nomor 2. Penelusuran perubahan, siapa yang melakukan apa, kapan, dll ... Menggabungkan, Membatalkan. Nomor 3. Diff alat ajaib untuk # 2 dan banyak lagi kasus. Nomor 4. Cabang Nomor 5. Versi penandaan, rilis, dll.

Anda dapat menemukan informasi lebih lanjut tentang salah satu alur kerja git paling umum di sini: https://nvie.com/posts/a-successful-git-branching-model/

Saya tahu bahwa menggunakan git pada awalnya mungkin menakutkan, tetapi ini merupakan investasi yang bagus untuk keterampilan, dan harus dimiliki oleh tim pengembang mana pun.

Tentang masalah Anda dengan kasus teks, hindari menggunakan Tortoise, saya tahu kebanyakan orang menggunakannya sebagai GUI untuk git, karena itu sangat umum untuk SVN, jadi itu mungkin pilihan pertama, alih-alih gunakan baris perintah, atau GUI lain seperti github desktop atau SourceTree dari Atlasian.

Daiki
sumber