チーム心理学

複数の人が同じプロジェクト(コード)で作業すると、ソフトウェア開発プロセスが大きく異なり始めます。 この事実に同意せざるを得ない。 いくつかの追加要因が関係します。 全体的な結果は開発速度の低下であり、開発されたソフトウェアの品質が低下する場合があります。



どうすればいいの? 結局のところ、単独では記述できないプロジェクトがあります。 この記事では、プログラマーのチームで働くことの心理的な側面を示します。 いくつかの理論的知識を提供します。これにより、プログラマーとその全体的な感情的背景の有効性を高めることができます。



ソフトウェアの有効性と品質が低下した理由は何ですか?



プログラマの有効性を低下させる要因は、客観的と主観的なものに分けることができます。

私はこれらの2つの用語を理解しているので
客観とは、知覚のポイントに依存しないものです...その値を変えない、一定の角度で、あなたがそれらを見ない角度で。 しかし、主観的な要因は、知覚のポイントに依存するものです。


効率に影響を及ぼす主観的要因


ありきたりの対人的敵意を捨てて、私たちの状況では、感情的な理解と尊敬の十分なレベルを持つ複数のプログラマーのチームがあると仮定します。 それにもかかわらず、そのようなチームでさえ問題があるかもしれません。



実際、プログラマーはコードの所有権を開発します。 結局のところ、コードは彼が作成したものであり、具体的なものです(モニター画面で見ることができます)。 プログラマーは、コードをオブジェクト( このコード 書いた)およびスペース( このコードがエディターで開いているとき、私は安心し ます )として認識することができます。 したがって、コードは、椅子や部屋のように、「私のもの」、「私のものではない」にすることができます。 これは私の椅子であり、私はそれに座っています(このコードを書きました)。 これはVasyaの椅子であり、Vasyaはそれを使用しています。私は座るのが感情的に不快です(Vasyaはこのコードを書きました)。



私は今、彼が自分の画面に表示されるコードを使用してプログラマーの主観的な自己識別について話していることを強調したいと思います。



作業しているプログラマーは、このコードが「彼」または「彼ではない」と感じるかもしれません。 このコードでの自己識別は非常に重要です。 コードが「自分」であると信じている人は、次のことを行います。



また、コードの変更について話していることを別にお知らせします。 コードを読んで、特にそれを使用する(「エイリアン」関数を呼び出す)ことは、プログラマーの感情的な状態に影響しません。



客観的要因



客観的なコンポーネントもあります。プログラマーがこのコードを知っているか、このコードを知らない可能性があります。 「コードを知る」とは、関数の名前とその機能を思い出すことを意味します。 この知識が本当に客観的であることに気付くのは難しいことではありません-それはそこにあるかどうか、そして私たちの貧弱な実験的プログラマーがどのように感じるかは関係ありません。 コードに正しい変更を加えるために、人はそれを客観的に知る必要があります。



問題の特異性と説明



何がありますか? プロジェクトの理論上の理想的な状態は次のとおりです。すべてのプログラマーは客観的にすべてのコードを知っており、すべてのプログラマーはすべてのコードを「自分自身」と見なします。 しかし、教えてください、1つの歯ブラシに2人の所有者がいることはできますか? 残念ながら、ありません。 コードに変更を加えるプログラマーは、コードの作成者(「現在の」所有者)の目にはこのコードをより「異質」にします。

目的 :各プログラマーは、自分が知っているコード、および「自分の」と見なすコードを使用して(最大時間)作業する必要があります。 この結果はすでに達成可能です。



問題解決



ソフトウェア開発の過程で、プロジェクトに関する客観的な知識と、プログラマーのコードに対する主観的な自己識別が変わります。 私たちのタスクは、最後の段落で設定した目標をサポートするために、所有権の知識と感情の分布に影響を与えることです。 プログラマーがプロジェクトについて知っているほど、または彼が「自分の」と考えるコードが多ければ多いほど良いです。 おridgeをバターで傷つけません。 これらを下げることはできませんが、上げることは常に役立ちます。

もう1つのことは、これらの要因を増やすことはプログラマにとって時間がかかるということです。 そして、ここで合理化の問題がすでに発生しています:プログラマーはプロジェクトを知るために1日2時間費やし、所有感を高めるために1日2時間を費やすことができます...

合理化に取りかかる前に、レバレッジを見てみましょう。 コードに関する客観的な知識を増やすには適切です。



次のメソッドは、コードの所有権を強化するのに適しています。



コード草案の標準に関する別の段落(所有権を増やす別の方法、長すぎる)


コード設計標準(それらが何であれ)は、主にコードの外観を統一することを目的としています。 このようにして、コードを読みやすくします。また、このコードを初めて目にした場合でも、プログラマーがこのコードを使用して自己識別できるようにします。

プログラマーはどう思う
ああ! 書いたかのように書かれています


または

ああ! ほら、彼はジグリビールも大好きで、ソファは家のように柔らかい! ここで快適に感じます!




しかし、そこにありました。 コードは同じように実行できますが、コードが従うロジックは、実験的プログラマーが使用するロジックとは異なります(プログラマーはここでwhile



ループを使用し、コードはforeach



と言います)。 コードのロジックとこのコードを読む人のロジックとの間のこれらの違いは、所有権の感覚が最終的に作成されないという事実につながります。 そのため、コードの設計要件が完全に期待される結果をもたらさない一方で、プログラマの自由度をある程度制限し、官僚機構の別の層を追加します。



1つの解決策は、すべてのプログラマーに同じロジックを考えさせ、唯一の正しいロジックを課すことです(または、 foreach



を使用するタイミングと使用するタイミングまでコードの設計要件を詳述することです)。 しかし、これはユートピアです。 さらに、すべての人が異なっており、なぜカーボンコピーに10人のプログラマーを「クローン」するのか。

プログラマー間の理解を深め、彼らが仲間のプログラマーのロジックに精通するのを助けることはより良いです。 特に、コードのレビューにより、プログラマーはお互いのロジックを学ぶことができます。 コードレビューの魔法は、プログラマーVasyaがプログラマーPetyaによって記述されたコードを取得することですが、Vasyaはその中で何も編集する必要はありません。 彼はPetyaの仕事を勉強するだけで、その後Petyaに自分の考えを伝えます(VasyaはPeteにPetyaのダイニングチェアで何か変えるものを提供しますが、彼は椅子に触れません)。 VasyaとPetyaはコミュニケーションをとりながら、彼らがどういうふうに何を好むかを理解しています。 したがって、将来的には、VasyaはPetitのコードを見て、Petitのロジックを知っていることをより快適に感じるでしょう。



合理化の問題



プロジェクトの開発を続けながら、同時に「自分自身」と感じるコードに常に取り組んでいるプログラマ間のバランスを見つける方法は? そのような質問に対する答えは、文脈に大きく依存します。 2つの最も急進的な方法のみを紹介しますが、これら2つの極端な方法が実際の状況での使用に適しているとは考えられません。むしろ、これら2つの正反対のバランスを見つける必要があります。



メソッド番号1。 責任の分離と「個室」


プロジェクトの仕様で許可されている場合:



その後、プログラマーが状況の唯一のマスターになる場所に小さな穴を開けます。 これらの「ミンク」が互いにどのように相互作用するかについて明確に同意する必要があるだけで、「所有者」(責任プログラマ)が各ミンクの内部実装を引き継ぎます。

これはかなり急進的なアプローチであるため、非常に重大な欠点があります。



長所:





メソッド番号2。 フォーラム


フォーラムはマスコミュニケーションの分野です。 また、あなたのソフトウェアは、誰もがプロジェクトのすべての部分を知っており、互いに非常に密接に相互作用するとき、マスコミュニケーションのための領域に変えることができます。 この方法の長所と短所は、実際には、「パーソナルミンク」法の利点の反転です。



おわりに



プログラマーの正しい配布とプログラマー間のコミュニケーションに加えて、プロジェクトの管理と開発の方法を考慮することも重要です。 開発ベクトルを変更し、プロジェクトの現在のタスクを変更することが頻繁に予想されますか? これは成熟したプロジェクトですか? プログラマーの特殊性を考慮に入れてください。その中には天才がいるかもしれませんが、膨大な量の官僚制度の下では、加速して上空を飛ぶことはできませんか? プログラマーの責任についてあなたはどれほど自信がありますか? 考えて決定します。



All Articles