Haruskah saya berharap tim saya memiliki lebih dari kemampuan dasar dengan sistem kontrol sumber kami?

48

Perusahaan saya beralih dari Subversion ke Git sekitar tiga bulan lalu. Kami memiliki minggu pemberitahuan sebelumnya sebelum beralih. Karena saya belum pernah menggunakan Git sebelumnya (atau DVCS lainnya), saya membaca Pro Git dan menghabiskan sedikit waktu untuk memutar repositori saya sendiri dan bermain-main, sehingga ketika kami beralih saya bisa tetap bekerja dengan sedikit rasa sakit. Sekarang saya 'Git guy' secara default.

Dengan beberapa pengecualian, sebagian besar tim saya masih tidak tahu bagaimana Git bekerja. Misalnya, mereka masih menganggap cabang sebagai salinan lengkap dari kode sumber, dan bahkan melangkah lebih jauh dengan mengkloning repo ke beberapa folder (satu per cabang). Mereka umumnya melihat Git sebagai kotak hitam menakutkan.

Mengingat sifat dasar dari kontrol sumber dalam pekerjaan sehari-hari kami (belum lagi jumlah kekuatan konyol yang diberikan Git kepada kami), saya berpendapat bahwa setiap dev yang tidak mencapai tingkat kemahiran tertentu dengan itu adalah suatu kewajiban .

Haruskah saya berharap tim saya memiliki setidaknya beberapa pemahaman tentang bagaimana Git bekerja secara internal, dan bagaimana menggunakannya di luar operasi tarikan / penggabungan / push yang paling dasar? Atau apakah saya hanya membuat sesuatu dari ketiadaan?

Joshua Smith
sumber
30
Apakah perusahaan menawarkan pelatihan tentang Git?
yannis
9
Setiap pengembang yang tidak produktif adalah kewajiban. Dengan asumsi mereka produktif pada umumnya, mengetahui atau tidak mengetahui git tidak penting. Pada akhirnya itu hanyalah alat lain.
MrFox
9
Saya akan memanggil memahami bagaimana cabang Git bekerja bagian dari "kemahiran dasar" dengan itu ...
Shauna
16
Jika teman satu tim Anda tidak dapat menemukan Git, Anda memiliki masalah yang lebih besar daripada kontrol sumber.
Jordan Bentley
4
@ Caleb Itu bukan membual. Jauh dari itu.
Joshua Smith

Jawaban:

49

Profesionalisme secara alami akan menentukan bahwa seorang pengembang menjadi akrab dengan alat standar tim mereka, bahkan jika mereka baru dan tidak dikenal (atau bahkan tidak diinginkan).

Namun, beberapa hal di pos Anda membuat saya berhenti.

Kami memiliki minggu pemberitahuan sebelumnya sebelum beralih.

Minggu? Mengganti kontrol sumber adalah masalah besar. Seharusnya ada berbulan - bulan pemberitahuan yang mengarah pada perubahan seperti itu.

Dengan beberapa pengecualian, sebagian besar tim saya masih tidak tahu bagaimana Git bekerja.

Jadi, perusahaan Anda beralih ke sistem kontrol sumber yang sedikit, jika ada, yang mengerti pada saat itu?

Kecuali jika ada konteks lain, sepertinya seluruh langkah itu tidak dipikirkan dengan baik (langkah, bukan pilihan - saya penggemar berat git).

Michael
sumber
3
Memang. Mereka beralih ke sistem yang tidak dimengerti oleh banyak orang. Adalah bijaksana untuk menawarkan pelatihan sebelum beralih. Namun, saya merasa nyaman menggunakan Git dengan latihan kurang dari seminggu. Saya tidak merasa saya terlalu berprestasi, jadi saya bertanya-tanya apakah pantas untuk mengharapkan yang lain juga berlatih.
Joshua Smith
3
Adakah yang mau repot-repot mencari tahu alur kerja yang Anda miliki dan memetakannya ke primitif yang ditawarkan VCS baru? Cukup mudah untuk menembak diri sendiri dengan perintah yang terdengar seperti yang biasa Anda lakukan, dan Anda benar-benar membutuhkan seseorang untuk mengatur sesuatu seperti ini. Di mana pria yang bertanggung jawab atas perubahan ini?
Lars Viklund
19
@JoshuaSmith Ketika mengubah standar atau alat pengembangan, Anda harus selalu beroperasi pada transisi gaya "No Child Left Behind". Tim hanya dapat bergerak secepat anggota yang paling lambat, jadi pastikan segala sesuatunya dibuat sejelas dan dumbed ke level serendah mungkin sebelum transisi terjadi. Tentu Anda dapat memberi label pada banyak orang sebagai kewajiban yang Anda inginkan, tetapi menyingkirkan "kewajiban" adalah hal yang sulit dan berantakan untuk dilakukan, terutama karena sesuatu yang sepele seperti alat kontrol sumber.
maple_shaft
3
Kedengarannya seperti Anda "Membuang GIT ke mereka" dan bukan "Meluncurkan sistem kontrol revisi baru" - GIT adalah program yang melakukan kontrol sumber. Ini bukan sistem kontrol sumber - yang akan membutuhkan buku petunjuk, pelatihan, jadwal perawatan, manajemen siklus hidup dll. Tolong beritahu saya Anda memiliki cadangan di tempat
mattnz
7
Mempelajari cara kerja git cukup sepele. Jelas tidak butuh waktu satu bulan untuk mempelajari cara menggunakannya. Menurut pendapat saya sederhana, "Teman-teman, kita akan menggunakan git dalam beberapa minggu. Butuh beberapa jam untuk belajar bagaimana menggunakannya, ada banyak sumber daya online.", Sudah lebih dari cukup.
Moox
34

Kami telah memperkenalkan Git di tempat saya bekerja dan secara alami ada penolakan. Itu untuk proyek baru jadi kami sekarang mempertahankan dua repositori.

Sebagian dari masalahnya adalah bahwa orang tidak akan melihat manfaat dari beralih ke SCM yang berbeda ketika yang mereka gunakan bekerja untuk mereka. Ini membantu ketika kami duduk bersama tim kami selama beberapa jam sesi di mana kami hanya akan menunjukkan kasus penggunaan dari proyek kami dan bagaimana Git membuatnya lebih mudah. Misalnya, hal-hal yang membantu kami:

  • Cabang lokal untuk mendorong eksperimen
  • Git membagi dua untuk melacak bug dengan mudah
  • sering melakukan tanpa mengganggu orang lain
  • Pergantian cepat antar cabang

dll. Masing-masing memecahkan masalah yang kami temui dengan SCM kami sebelumnya dan agar orang dapat lebih menghargai Git.

Hal lain adalah Anda tidak dapat mengharapkan orang untuk pergi dan membaca buku tentang itu karena sangat sedikit yang mau. Mungkin mereka perlu menyelesaikan pekerjaan, memiliki tanggung jawab lain, atau sejumlah alasan.

Jadi, sebagai 'ahli Git' Anda harus duduk dan membuatnya semudah mungkin bagi orang untuk menggunakannya. Mereka ingin menulis kode, tidak mengacaukan sistem SCM mereka.

CLI Git adalah masalah samar dan sepele (bagi Anda dan saya) akan menghalangi orang untuk bekerja. Inilah yang terjadi di tim kami (ingat, ini adalah pengembang yang cukup kompeten):

  • Git dengan SSH di Windows adalah masalah umum.
  • Orang-orang akan menarik, menggabungkan, tetapi tidak mendorong penggabungan. Jadi grafiknya akan sangat membingungkan
  • Masalah kinerja pada Windows membuat "status git" membutuhkan waktu 15 detik
  • Tidak dapat menemukan cara menarik cabang baru. Mereka akan melakukan "git checkout -b" yang akan bercabang dari apa pun yang sedang mereka kerjakan
  • EGit dalam gerhana memiliki menu yang luar biasa. Akhirnya memberitahu semua orang untuk menggunakan baris perintah pada awalnya
  • Didasarkan pada item sebelumnya, menggabungkan dan mengatur git mergetool
  • Bingung tentang perbedaan antara "git add" dan "git commit" dan "git push."

Kami masih mendapatkan perlawanan tetapi orang-orang pasti bisa melihat manfaatnya. Sangat penting untuk memiliki beberapa orang Git untuk mendapatkan panduan dan bersedia membantu. Juga saya akan menghindari mengajarkan hal-hal keren seperti reset / rebase / - ubah / dll. karena kebanyakan orang akan menggunakan Git seperti SVN, lebih baik membiarkan mereka menemukannya jika mereka menginginkannya.

Kriptik
sumber
7
@ JoshuaSmith Anda tampaknya memiliki harapan yang tinggi dari orang-orang. Apakah Anda merasa kecewa dengan teman sebaya Anda?
maple_shaft
4
@maple_shaft Saya jarang kecewa dengan rekan-rekan saya di tim ini (pekerjaan terakhir saya adalah cerita yang berbeda). Biasanya orang-orang di sini profesional dan senang bekerja sama. Dan ya, saya memiliki harapan yang tinggi untuk diri saya dan orang-orang di sekitar saya. Saya tidak brengsek tentang hal itu. Ini mungkin naif, tetapi saya merasa bahwa jika kita semua menuntut keunggulan satu sama lain kita pasti akan meningkat.
Joshua Smith
9
@ JoshuaSmith, jika Anda berharap orang-orang secara teratur punya waktu untuk membaca buku, saya akan menebak: Anda tidak punya anak, bukan?
Kyralessa
13
@ JoshuaSmith, apakah orang dibayar untuk membaca buku-buku itu? Jika bos saya mengatakan kepada saya, "Kami akan beralih teknologi, saya berharap Anda telah mempelajarinya di waktu luang Anda bulan depan" Saya akan sangat marah.
Matsemann
13
@ JoshuaSmith, ya saya akan mengatakan begitu - apa pun yang dilakukan karyawan pada waktu mereka sendiri adalah tambahan, tidak wajib. Jadi beli switching, Anda harus memberi mereka informasi yang cukup untuk menggunakan alat ini, atau cukup waktu selama bekerja agar mereka dapat mempelajarinya sendiri (biasanya ini diberikan dalam bentuk pelatihan, bahkan jika itu hanya sesi pelatihan makan siang). Sekarang, jika karyawannya adalah freelancer, ada kasus bagi mereka untuk melatih diri mereka sendiri, tetapi tidak selama kontrak mereka. Karyawan mengharapkan manfaat tertentu - seperti pelatihan, dan tidak stres karena pergantian pekerjaan dicampakkan pada mereka seperti ini.
gbjbaanb
13

Mahir vs Git-mania

Suatu istilah seperti kemahiran dasar dapat berarti hal yang berbeda untuk orang yang berbeda. Banyak orang tampaknya memiliki git-mania (tidak ada yang salah dengan itu). Banyak dari kita telah dibakar dengan sangat buruk oleh kecerobohan kita dan orang lain dengan kontrol sumber.

Mengapa Itu Penting?

Alat kontrol sumber sangat penting karena penyalahgunaan dapat memperlambat tidak hanya satu orang, tetapi seluruh tim. Menyalahgunakan Git seharusnya tidak terlalu bermasalah daripada menyalahgunakan SVN, CVS, dan sistem lainnya. Secara historis, tidak kompetennya penggunaan sistem yang mengunci file sangat problematis, dan perusahaan-perusahaan merekrut tim pembangun diskrit sehingga ketika seseorang mendapat masalah, ada seorang ahli yang fasih yang melakukan hampir apa-apa selain kontrol sumber yang bisa menyembuhkan luka pada repositori. Ini sebagian menjelaskan beberapa gairah yang Anda temukan di balik git.

Seperti apa kemampuan dasar itu?

Beberapa kriteria konkret meliputi:

  • Tanpa referensi dokumentasi:

    • Dapat menambahkan file, melakukan perubahan, mendorong dan menarik pembaruan.
    • Dapat melihat status dan aktivitas revisi.
    • Dapat bercabang dan bergabung dengan cepat dan tanpa memperkenalkan kesalahan.
    • Dapat menggunakan checkout dengan tepat.
    • Buat komentar komit yang memenuhi kriteria grup untuk komentar.
    • Perbedaan antara copy pekerjaan dan arsip.
  • Dengan dokumentasi:

    • Tambahkan pengguna dan kredensial untuk repo lokal.
    • init repo lokal.
    • Mengelola repo jarak jauh.
    • Konfigurasikan file yang diabaikan, buat pasangan kunci publik / pribadi PKI.
    • Pindahkan dan hapus file.
    • Gunakan dua bagian untuk menemukan perubahan yang memperkenalkan bug tertentu.

Model mental git yang solid dan kode yang dikelola sangat penting untuk menghindari kesalahan.

Apa yang akan Anda tambahkan untuk keahlian / keahlian tingkat lanjut?

Penggunaan yang lancar sangat penting untuk pengembang dan mungkin beberapa anggota tim Anda. Alat-alat seperti Git adalah overhead dan harus dipelajari ke tingkat di mana mereka bisa hampir otomatis. Meminimalkan waktu dan gangguan yang dihasilkan dengan menggunakan perintah git yang diulang ribuan kali per tahun memiliki nilai tinggi.

Akan selalu ada beberapa anggota tim Anda yang akan menjadi pengguna yang kuat dan menggunakan hampir setiap perintah dengan hampir setiap opsi. Rekomendasi saya adalah bahwa anggota tim didorong untuk terus belajar git (dan alat-alat lain) sampai ROI untuk belajar turun di bawah nilai melakukan sesuatu yang lain pada proyek, dengan batasan utama adalah menjaga kecepatan dengan menetapkan item burndown yang ditugaskan dari saat ini lari cepat.

Pengembang Don
sumber
11

GIT adalah alat yang adil untuk melakukan pekerjaan, dan salah satu masalah terbesarnya adalah bahwa banyak penginjil GIT berharap semua pengguna GIT berada di bawah para pakar yang memahami poin terbaik dari cara kerjanya. Ini adalah kelemahan terbesar GIT - untuk menggunakannya Anda harus tahu cara kerjanya. Tidak ada resep dengan GIT, Anda diharapkan menjadi ahli GIT atau tidak menggunakannya. Sangat menyenangkan bahwa Anda membaca Pro-GIT organisasi Anda membutuhkan guru GIT (atau dua) "goto" untuk memaksimalkan investasi di dalamnya, karena tidak setiap pengembang ingin menjadi Guru GIT - dan itu tidak masalah.

Tim perlu tahu cara menggunakan GIT (Sebenarnya mereka hanya perlu tahu cara menggunakan bagian-bagian GIT yang alur kerjanya mengharuskan mereka gunakan), bukan bagaimana GIT bekerja. Sangat merugikan untuk mengharapkan setiap pengembang untuk mengetahui setiap detail tentang setiap alat yang mereka gunakan. Jika Anda belum memiliki buku resep yang mendukung alur kerja Anda, Anda belum menggunakan GIT, Anda telah membuangnya pada pengembang.

Saya tidak memberi monyet bagaimana GIT bekerja, selama saya tahu cara membuat git bekerja untuk saya.

mattnz
sumber
1
Dan di situlah letak perlunya pelatihan khusus ... dan sekali lagi Linus tidak mengharapkan siapa pun untuk merangkul semua teknis git, itu sebabnya ada dua kelas perintah: porselen dan pipa ledeng.
ZJR
1
Ada banyak resep untuk git jika semua yang ingin Anda lakukan adalah bermigrasi dari alur kerja yang Anda gunakan di Merek X ke alur kerja di Git.
Jherico
10

Iya.

Tidak peduli alat apa yang "perusahaan" telah putuskan, tim pengembangan Anda harus meluangkan waktu mempelajari cara menggunakan alat itu dengan benar. Tidak ada yang lebih merugikan produktivitas daripada sekelompok pengembang yang takut atau tidak tahu tentang alat. Jika mereka menggunakannya salah atau bekerja melawannya, masalah akan muncul dan saat pria itu pergi, Anda akan ditugaskan untuk membersihkan kekacauan itu.

Git adalah transisi yang sulit bagi banyak orang, jadi sesi pelatihan wajib duduk mungkin bisa dilakukan. Ini akan membantu menuntaskan banyak masalah yang dialami orang.

Bill Leeper
sumber
3
"Tidak ada yang lebih merugikan produktivitas daripada sekelompok pengembang yang takut atau tidak tahu tentang alat." Jadi mungkin sebuah perusahaan akan gila untuk hidup dengan alat yang timnya belum dilatih dan tidak mengerti.
Jaydee
Perusahaan, terutama yang besar, terkadang harus mendorong teknologi. Ini juga bisa menjadi satu tim dalam organisasi yang telah melakukan dorongan awal dan menggunakan alat sepenuhnya.
Bill Leeper
3

Saya hanya menggunakan Git dalam pengaturan pribadi dan bukan yang profesional, dan meskipun saya menyukai kekuatan yang dimilikinya dan gagasan tentang kontrol sumber yang lebih terdesentralisasi, Git memiliki masalah besar. Git memiliki abstraksi yang bocor dan dibutuhkan banyak perintah untuk melakukan hal-hal sederhana (misalnya untuk membuat perubahan: git add, git commit, lalu git push). Juga beberapa dokumentasi kurang dan / atau membingungkan seperti dengan deskripsi perintah rebase ... "Teruskan-port lokal berkomitmen untuk kepala hulu yang diperbarui". Saya tidak tahu apa artinya itu, dan meskipun saya sekarang tahu Anda dapat memindahkan komit dan menulis ulang sejarah dengan itu (gangguan lain ... mengapa Anda diizinkan melakukan ini ???) Saya tidak akan pernah bisa menebaknya dari perintah itu deskripsi. Saya pikir beberapa bacaan di bagian tim Anda, dan beberapa pelatihan lagi yang diberikan oleh Anda dalam rangka.

Fred Thomsen
sumber
2

Pelatihan dan pemahaman adalah persyaratan minimal. Seseorang yang bertanggung jawab seharusnya memastikan ada rencana tentang bagaimana tim Anda akan menggunakannya. Anda tidak akan mengadopsi bahasa pemrograman baru tanpa panduan. Pelatihan pengemudi jauh lebih efektif ketika aturan jalan yang ditetapkan dimasukkan.

JeffO
sumber
1

Tidak; Saya pikir masuk akal untuk mengharapkan yang berikut:

  1. Lakukan tugas sehari-hari (komit, dorong, tarik, cabang, gabungkan, bagi dua, dll) tanpa berpegangan tangan.
  2. Lakukan tugas non-rutin tanpa instruksi berulang. (Beberapa pengulangan tidak masalah - saya harus bertemu seseorang 2-3 kali sebelum nama mereka benar-benar cocok.)

Jika mereka tidak bisa melakukan # 1, maka bagian latihan dari peluncuran Anda mungkin tidak cukup. Jika mereka tidak dapat melakukan # 2, maka pertama-tama pastikan Anda menjelaskan hal-hal yang cukup jelas sebelum menjadi terlalu marah.

pgs
sumber
Ini sebenarnya bukan jawaban untuk pertanyaan; pertanyaannya adalah tingkat kemahiran apa yang harus dia harapkan dari orang lain, bukan bagaimana dia meningkatkan kemahiran mereka. Saya akan menghapus downvote ketika Anda memberi tahu saya dalam komentar dengan @MyName bahwa Anda telah memperbaiki jawaban Anda tentang topik.
Jimmy Hoffa
@JimmyHoffa Saya pikir Anda salah mengerti jawaban saya. Mereka harus mahir dalam tugas sehari-hari / rutin mereka, dan mengambil tugas-tugas lain dengan cukup cepat. Saya mengidentifikasi beberapa kemungkinan penyebab , tetapi mencoba untuk tetap tidak meresepkan tindakan perbaikan apa pun. Anda membaca yang tersirat dan memperkirakan jika itu yang Anda lihat.
pgs
Tidak, pertanyaannya adalah "Haruskah saya berharap tim saya memiliki lebih dari kemampuan dasar ..." dan Anda tidak mengatakan "Ya, inilah sebabnya" atau apakah Anda mengatakan "Tidak, ini sebabnya". Anda menjawab pertanyaan dengan pertanyaan. Saya menghargai bahwa jawaban Anda bijaksana dan kontennya bermanfaat tetapi Anda masih harus menjawab pertanyaan dengan ya atau tidak dan mencoba untuk mencadangkan mengapa Anda berpikir ya atau tidak ... Kemudian jangan ragu untuk meninggalkan jawaban Anda di bawah, konten saat ini . Masuk akal?
Jimmy Hoffa
@JimmyHoffa Jawaban saya adalah "Tidak, ini minimum yang seharusnya Anda harapkan"; Aku hanya tidak mengatakannya dengan kata-kata yang tepat.
pp
Oh, saya pikir Anda menyinggung "ya", masukkan kata pengantar itu dan itu menjawab pertanyaan, kalau tidak, itu tidak masuk akal heh
Jimmy Hoffa