ペアプログラミングは、2人のプログラマが1台のワークステーションで共同で作業するアジャイルソフトウェア開発手法であることを知っています。 1つはドライバーがコードを記述し、もう1つはオブザーバーが入力されたコードの各行を確認します。
しかし、私は戦略がまだケースで機能するのだろうかと思います。例えば
上記のケースでペアプログラミング戦略を提案できますか?
ペアのより経験豊富な人が他の人をメンターする気質があると仮定すると、言語または問題ドメインでほとんど経験のない人を経験豊富な人とペアリングすると、知識の伝達が容易になります。経験の浅い人には、言語、ドメイン、アプリケーション、チームのベストプラクティスや慣習について指導するメンターがいます。
ペアプログラミングを使用した知識の伝達に関するC2 wiki に興味深い要約があります。チームメンターの役割を担うために育てられたより上級の人は、ジュニアプログラマーから多くを学び、彼の知識は、よりジュニアで経験の少ないソフトウェア開発者とペアになった結果、さらに増加しました。同様に、専門家のプログラマーがドメインの専門家とペアになるという話もいくつかあります。
これはまさに、古いひげと若いグラスホッパーの間で経験を共有するために作られたユースケースペアプログラミングです。
これは双方向の共有です。俊敏な昆虫はリウマチの脳に多くを教える必要があります。
現在のチームに昇格したとき、私はJ2EEの初心者でしたが、ドメインの専門家でした。私のシニア(新しいチームリーダー)はJ2EEには熟練していたが、プラットフォームには熟練していなかった。
本を読むよりも、この4か月間にペアプログラミングでJava2EEについて多くを学んだと思います。チームリーダーもプラットフォームについて学びました。
2つの間の経験のギャップは、プログラミングimhoをペアにするための鍵です。
私の経験を説明し、そこからいくつかの「戦略」を引き出そうとします。
私はかつて完全な非プログラマーとペアプログラミングをしたことがあります。彼は私たちが開発したソフトウェア製品の主題の専門家でした。それどころか、問題領域での経験はありませんでした。そして、彼は現在私の監督者でもありました(これは奇妙に聞こえるかもしれませんね:)
この方法論の主な利点は、私が彼の知識領域から多くのことの実装を説明しなければならず、実装の正確さとプロセスの理解を保証しなければならず、それがなぜこの時間がかかるのかを理解したことです。
もう1つの利点は、タスクに簡単に集中できること、気が散ることがないことです(ハハ、上司の鼻の前でTwitterを開くことを想像してください)。
しかし、お茶の休憩でさえも「仕事の邪魔」になったため(時には、彼の観点からではなく、休憩を依頼するのが不便だったため)、それは時としてかなり威圧的でした。
そのため、入力されたコードをほとんど確認できなかったため、これは実際にはペアプログラミングではありません。しかし、それは(少なくともしばらくの間)健全な戦略であるように見えました。最終的には、両方の開発方法論(つまり、OOPパターンが関係する複雑なソフトウェア設計手法は含まれていません)と主題の両方が比較的単純なため、まったく問題なく動作しました。これは、コンパイラを開発することだと思います。プログラマ以外のオブザーバーが明確に定義された小さなピースの開発プロセスに参加している場合でも機能する可能性があります。たとえば、「パラメータXを計算する」関数のプログラミングを彼に見てもらいましょう。与えられたアルゴリズムによるYとZ」ですが、システム設計プロセス全体(ソフトウェアアーキテクチャの開発、つまりクラスの階層、つまり抽象化が進んでいるため、その開発を意味します)を彼に見てもらうのはそれほど問題ではありません。
「配列とは何か」を説明する必要がないので、彼がプログラマーの基本的なスキルを持っている場合は、さらにうまくいくと思います。
それが役に立てば幸い :)
私の経験では、両方のプログラマーのスキルレベルが低い場合、問題になる可能性があります。その場合、コピーアンドペーストプログラミングを試す傾向があります。チームによって決定された特定のレベルに達するまで、2人の初心者プログラマーをペアにしないことをお勧めします。
それ以外の場合、ペアのプログラミングはもちろん2人の男が彼らが知っていることを共有する準備ができていると仮定すると素晴らしいアイデアになる可能性があります。これは、すべての人にソースコードの情報を提供する優れた方法であるだけでなく、新しいアイデアやディスカッションの良い場所としても機能します。
チームメンバーがお互いを尊重している限り、プログラマーの経験レベルに関係なく、ペアプログラミングは有益です。経験の浅いプログラマーが経験豊富なプログラマーの前にいくつかの構文エラー(私たち全員が犯します!)を見つけたとしても、コードをコンパイルする時間を節約できます。
また、チームの他のメンバーの能力に対するプログラマーの態度を開くことができると私は思います。特に、彼らがオープンマインドを持ち、誰もがあなたに何かを教えることができると期待している場合はそうです。