私のチームには、ソース管理システムの基本的な能力以上のものを期待すべきですか?


48

私の会社は、約3か月前にSubversionからGitに切り替えました。切り替えの数週間前に事前通知がありました。Git(または他のDVCS)を使用したことがないため、Pro Gitを読んで、自分のリポジトリを回転させて遊んでいるので、切り替えたときに最小限の痛みで作業を続けることができます。今、私はデフォルトで「Git guy」です。

いくつかの例外はありますが、私のチームのほとんどはGitがどのように機能するのかまだわかりません。たとえば、彼らはまだブランチをソースコードの完全なコピーと考えており、レポを複数のフォルダー(ブランチごとに1つ)に複製することさえしています。彼らは通常、Gitを恐ろしいブラックボックスと見なしています。

私たちの日常業務におけるソース管理の基本的な性質を考えると(Gitが提供する途方もない量のパワーは言うまでもありません)、私はそれである程度の習熟度を達成しない開発者は責任があると考えています

私のチームに、Gitが内部的にどのように機能するか、そして最も基本的なプル/マージ/プッシュ操作を超えてGitを使用する方法について少なくともある程度理解してもらう必要がありますか?それとも、私はただ何もないところから何かを作っているのですか?


30
会社はGitに関するトレーニングを提供しましたか?
ヤンニス

9
生産的でない開発者は責任を負います。それらが全体として生産的であると仮定すると、gitを知っているかどうかは重要ではありません。結局のところ、それは単なる別のツールです。
MrFox

9
私は... Gitの枝がそれで、「基本的な能力」の部分をどのように動作するかを理解呼ぶだろう
ショーナ

16
チームメイトがGitを理解できない場合、ソース管理よりも大きな問題を抱えています。
ジョーダンベントレー

4
@カレブそれは自慢ではなかった。それからはほど遠い。
ジョシュアスミス

回答:


49

プロフェッショナリズムは、開発者がチームの標準ツールに慣れていることを必然的に指示するものです。

ただし、投稿のいくつかの点で一時停止します。

切り替えの数週間前に事前通知がありました。

週?ソース管理の交換は大したことです。そのような変化に至るまでに数ヶ月の通知があったはずです。

いくつかの例外はありますが、私のチームのほとんどはGitがどのように機能するのかまだわかりません。

それで、あなたの会社は、当時はほとんど理解していないソース管理システムに切り替えましたか?

他のコンテキストがない限り、全体の動きはよく考えられていなかったようです(選択ではなく、動きです。私は巨大なgitファンです)。


3
認めた。彼らはほとんど誰も理解していないシステムに切り替えました。切り替え前にトレーニングを提供するのが賢明でしょう。しかし、私はGitを1週間未満の練習で快適に使用しました。自分が達成し過ぎているとは感じないので、他の人も練習することを期待するのが適切かどうか疑問に思っています。
ジョシュアスミス

3
誰かがあなたが持っていたワークフローを理解し、それらを新しいVCSが提供しなければならないプリミティブにマップすることに煩わされましたか?慣れ親しんでいるようなコマンドで自分の足で撃つのは非常に簡単で、このような何かをオーケストレーションするために誰かが本当に必要です。この変化の原因はどこにあるのでしょうか?
ラースヴィクルンド

19
@JoshuaSmith標準または開発ツールを変更するときは、常に「子が残らない」スタイルの移行を行う必要があります。チームは、最も遅いメンバーと同じ速さでしか移動できないため、移行が発生する前に、できる限り明確なものにし、可能な限り最低レベルにまで下げてください。好きなだけ多くの人に負債をラベル付けできますが、特にソース管理ツールのような些細なことに対して、「負債」を取り除くことは困難で厄介なことです。
maple_shaft

3
「新しいリビジョン管理システムをロールアウトしました」というよりも、「GITをダンプした」ように聞こえます-GITはソース管理を行うプログラムです。ソース管理システムではありません。ユーザーマニュアル、トレーニング、メンテナンススケジュール、ライフサイクル管理などが必要になります。バックアップがあることを教えてください
mattnz

7
gitがどのように機能するかを学ぶのは非常に簡単です。使い方を学ぶのに1か月もかかりません。私の意見では、単純な「みんな、数週間でgitを使用するつもりです。使い方を学ぶのに数時間かかります。たくさんのリソースがオンラインにあります。」、それは十分すぎるでしょう。
Moox

34

私が働いているところでGitを紹介してきましたが、当然抵抗がありました。新しいプロジェクトのためだったので、現在2つのリポジトリを管理しています。

問題の一部は、使用していたSCMが機能している場合、別のSCMに切り替えることのメリットが見られないことです。プロジェクトのユースケースとGitでどのように簡単になったかを示す1時間のセッションでチームと一緒に座ったときに役立ちました。たとえば、私たちを助けたもの:

  • 実験を奨励する地元の支部
  • バグを簡単に追跡するGit二分
  • 他を中断せずに頻繁にコミットする
  • ブランチ間の高速切り替え

これらはそれぞれ、以前のSCMで遭遇した問題を解決したので、人々はGitをもっと評価することができました。

もう1つのことは、意志がほとんどないので、人々がそれについて本を読むことを期待できないことです。たぶん彼らは仕事を終わらせる必要がある、他の責任、またはいくつかの理由がある。

そのため、「Gitエキスパート」として、座ってできるだけ簡単に使用できるようにする必要があります。彼らは、SCMシステムをいじるのではなく、コードを書きたいと思っています。

GitのCLIは不可解であり、(あなたと私にとって)些細な問題が人々の作業を妨げます。チームで起こったことは次のとおりです(これらはかなり有能な開発者です)。

  • WindowsでのSSHを使用したGitは一般的な問題でした。
  • 人々はプル、マージしますが、マージはプッシュしません。そのため、グラフは非常に紛らわしい混乱になります
  • Windowsのパフォーマンスの問題により、「git status」に15秒かかる
  • 新しいブランチをプルする方法がわかりませんでした。彼らは、「git checkout -b」を実行して、作業中のあらゆるものから分岐します。
  • 日食のEGitには圧倒的なメニューがありました。みんなに最初にコマンドラインを使うように言った
  • 前の項目に基づいて、git mergetoolのマージとセットアップ
  • 「git add」と「git commit」と「git push」の違いについて混乱しています。

まだ抵抗はありますが、人々は間違いなくその恩恵を見ることができます。指導のために数人のGitの人々がいて、喜んで手伝うことが重要です。また、reset / rebase /-amend / etcのようなクールなことを教えないようにします。ほとんどの人はSVNのようにGitを使用するため、必要に応じてGitを発見させる方が良いでしょう。


7
@JoshuaSmithあなたは人々の期待が高いようです。同僚に失望することがよくありますか?
maple_shaft

4
@maple_shaftこのチームの仲間に失望することはめったにありません(私の最後の仕事は別の話でした)。通常、ここの人々はプロであり、一緒に仕事をするのが楽しみです。そして、はい、私は自分自身と私の周りの人々に大きな期待を持っています。でも私はそれについて気にしない。これはおそらく素朴ですが、私たち全員がお互いに卓越性を要求するなら、必然的に改善すると思います。
ジョシュアスミス

9
@JoshuaSmith、もしあなたが人々が定期的に本を読む時間を持っていると期待するなら、私は推測を危険にさらすつもりです:あなたは子供がいないのですか?
キラレッサ

13
@JoshuaSmith人々はそれらの本を読んだことに対して報酬を得ますか?上司が「テクノロジーを切り替えているので、来月までに空いた時間にそれを学んだことを期待しています」と言ったら、私はかなり腹を立てます。
マツマン

13
@JoshuaSmith、はい、そうです-従業員が自分の時間に行うことはすべて、必須ではなく余分です。したがって、スイッチングを購入するには、ツールを使用するのに十分な情報、または作業中に自分で学習するのに十分な時間を提供する必要があります(通常、これは単なるランチタイムトレーニングセッションであっても、トレーニングの形で提供されます)。今、従業員がフリーランサーである場合、彼らは自分自身を訓練したが、彼らの契約中ではない場合があります。従業員は、トレーニングなどの特定のメリットを期待しており、このように転職することでストレスを感じることはありません。
gbjbaanb

13

熟練者対Git-mania

基本的な習熟度のような用語は、人によって異なることを意味する場合があります。多くの人がgit-maniaを持っているようです(これに問題があるわけではありません)。私たちの多くは、私たち自身や他の人々のソース管理のずさんさに非常にひどく火傷しています。

なぜ重要なのか(非常に)

誤用は1人だけでなくチーム全体を遅くする可能性があるため、ソース管理ツールは重要です。Gitの誤用は、SVN、CVS、およびその他のシステムの誤用よりも問題が少ないはずです。歴史的に、ファイルをロックするシステムの不適切な使用は特に問題があり、企業は個別のビルドチームを雇いました。これは、gitの背後にある情熱の一部を説明しています。

基本的な習熟度はどのように見えますか?

いくつかの具体的な基準は次のとおりです。

  • ドキュメントへの参照なし:

    • ファイルの追加、変更のコミット、更新のプッシュおよびプルができます。
    • ステータスと改訂アクティビティを表示できます。
    • エラーを発生させることなく、迅速に分岐およびマージできます。
    • チェックアウトを適切に使用できます。
    • グループのコメントの基準を満たすコミットコメントを作成します。
    • 作業コピーとアーカイブの差分の変更。
  • ドキュメント付き:

    • ローカルリポジトリのユーザーと資格情報を追加します。
    • ローカルリポジトリを初期化します。
    • リモートリポジトリを管理します。
    • 無視されるファイルを構成し、PKI公開/秘密キーペアを生成します。
    • ファイルを移動および削除します。
    • 特定のバグを導入した変更を見つけるには、bisectを使用します。

gitと管理対象のコードの強固なメンタルモデルは、ミスを防ぐために重要です。

高度な能力/専門知識のために何を追加しますか?

流andな使用は、開発者、そしておそらくチームの他のメンバーにとって不可欠です。Gitのようなツールはオーバーヘッドであり、ほぼ自動化できるレベルまで学習する必要があります。1年に何千回も繰り返されるgitコマンドを使用して生じる時間と注意散漫を最小限に抑えることには大きな価値があります。

パワーユーザーになり、ほぼすべてのコマンドをほぼすべてのオプションで使用するチームメンバーが常に存在します。私の推奨事項は、学習のためのROIがプロジェクトで他の何かをする価値を下回るまで、チームメンバーにgit(および他のツール)を学習し続けることを奨励することです。主な制限は、現在のスプリント。


11

GITは仕事をするための単なるツールであり、最大の問題の1つは、多くのGITエバンジェリストが、すべてのGITユーザーが、それがどのように機能するかについての最高のポイントを理解するボンネットの専門家の下になることを期待していることです。これはGITの最大の弱点です。これを使用するには、その仕組みを知る必要があります。GITにはレシピはありません。GITの専門家であるか、使用しないことが期待されています。すべての開発者がGIT Guruになることを望んでいるわけではないため、組織に投資を最大化するために「goto」GIT Guru(または2つ)が必要なPro-GITを読むことは素晴らしいことです。

チームは、GITの動作方法ではなく、GITの使用方法を知る必要があります(実際、ワークフローで使用する必要があるGITの部分の使用方法を知るだけで十分です)。すべての開発者が使用するすべてのツールの詳細をすべて知っていることを期待することは有害です。ワークフローをサポートするレシピ本を持っていない場合、GITを展開しておらず、開発者にダンプしています。

Gitを機能させる方法を知っている限り、GITがどのように機能するかを猿に教えません。


1
そして、カスタムトレーニングの必要性があります...そして、Linusはgitのすべての技術を採用することを期待していません。だからこそ、磁器と配管という2つのクラスのコマンドがあります。
-ZJR

1
ブランドXで使用したワークフローからGitのワークフローに移行するだけであれば、gitのレシピはたくさんあります。
ジェリコ

10

はい。

「会社」がどのツールを決定したとしても、開発チームはツールを適切に使用する方法を学ぶのに時間を費やす必要があります。生産性を損なうものは、多くの開発者がツールを恐れているか、無知であることです。彼らがそれを間違って使用している、またはそれに対抗している場合、問題が発生し、男に行くと、混乱を一掃することになります。

Gitは多くの人にとって難しい移行なので、必須の座り込みトレーニングセッションが適切である場合があります。これは、人々が抱えている多くの問題を解決するのに役立つはずです。


3
「生産性を損なうものは、ツールを恐れているか無知な開発者の集団ほどです。」おそらく、会社は、チームが訓練されておらず理解していないツールを使用して稼働することに夢中になるでしょう。
ジェイディー

企業、特に大企業は、時々技術をプッシュする必要があります。Ttは、最初のプッシュをすでに行っており、ツールを完全に使用している組織内の1つのチームである場合もあります。
ビルリーパー

3

私はGitを個人的な設定でのみ使用し、専門的な設定では使用していません。また、Gitのパワーと、より分散化されたソース管理のアイデアは気に入っていますが、大きな問題があります。Gitには抽象化が漏れやすく、単純なことを行うために複数のコマンドが必要です(たとえば、変更を加えるには、git add、git commit、次にgit push)。また、rebaseコマンドの説明のように、ドキュメントの一部が欠けていたり混乱したりしています...「更新されたアップストリームヘッドへのローカルポートコミット」。私はそれが何を意味するのか見当がつかず、コミットを移動し、それで履歴を書き換えることができることを知っていますが(別の迷惑...なぜこれを許可する必要がありますか?)そのコマンドからそれを推測したことはありません説明。私はあなたのチームの一部について読んだり、あなたから提供されたいくつかのトレーニングが適切だと思います。


2

トレーニングと理解は最小限の要件です。担当者は、チームがそれをどのように使用するかについて計画があることを確認する必要がありました。ガイドラインがなければ、新しいプログラミング言語を採用することはできません。道路の確立されたルールが組み込まれている場合、ドライバーのトレーニングははるかに効果的です。


1

番号; 次のことを期待するのが妥当だと思います。

  1. 手で握ることなく、日常のタスク(コミット、プッシュ、プル、ブランチ、マージ、二等分)を行います。
  2. 繰り返し指示することなく、非定型タスクを実行します。(何度か繰り返しても構いません-誰かが実際に名前を付ける前に、2〜3回会わなければなりません。)

彼らが#1を行うことができない場合、ロールアウトのトレーニング部分はおそらく不十分でした。彼らが#2を行えない場合は、まず動揺する前に十分に明確に説明していることを確認してください。


これは実際には質問への答えではありません。問題は、他の人にどの程度の能力を期待すべきかであり、どのように彼らの能力を向上させるかではありませんでした。@MyNameを付けてコメントで私に通知したときに、あなたが答えをトピックに修正したことを知らせます。
ジミー・ホッファ

@JimmyHoffaあなたは私の答えを誤解していると思います。彼らは、日常的/日常的なタスクに習熟し、他のタスクを合理的に迅速にピックアップする必要があります。考えられる原因をいくつか特定しました、是正措置を処方することを避けようとしました。行間を読んでいて、それが表示されている場合は外挿しています。
-pgs

いいえ、質問は「私のチームに基本的な能力以上のものを期待すべきか...」であり、あなたは「はい、ここに理由がある」とは言わず、「いいえ、ここに理由がある」とも言いませんでした。質問に回答しました。あなたの答えが思慮深く、内容が有用であることを感謝しますが、あなたはまだyesまたはnoで質問に答えて、あなたがyesまたはnoと思う理由をバックアップしようとする必要があります... 。理にかなっていますか?
ジミー・ホッファ

@JimmyHoffa私の答えは、「いいえ、これあなたが合理的に期待すべき最低限です」です。私はそれらの正確な言葉でそれを言わなかった。
PGS

ああ、私はあなたが「はい」、でその序文を入れて、それが問題に対処だ、そうでない場合はそれだけであわや意味をなさないをほのめかしたと思った
ジミー・ホッファ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.