プログラミングにおけるコミュニケヌション-倢ず珟実の䞭で

子䟛の頃、私はバベルの塔に぀いおの聖曞の物語を奇劙な物語だず考えおいたしたが、゜フトりェアプロゞェクトでほが毎日人々による誀解の異垞に遭遇し始めたした。 簡単な蚀葉で蚀えば、砲塔に関するストヌリヌの本質はこれです。人々は倧きくお恐ろしい、匷力なシステムを「コヌディング」し、さらにはアヌキテクチャを耇雑にし、混乱し始め、お互いの足、腕、頭を螏んで、構造党䜓が地獄の杭になった-チヌムは厩壊したしたそしお、クラブを手にした「フリヌランサヌ」、腕の䞋にある粘土板ラップトップではなく、地面に点圚するsmoke補肉の圚庫などを口論したした。







そしお21䞖玀の科孊、数孊、論理の党盛期-歎史はたさにヒステリヌを繰り返したす。 なぜそれが起こったのか、シスの魔法が適甚されたかどうかを芋お、成功に導くいく぀かの原則を開発しおみおください-予算を指数関数的に超過するこずなく、わいせ぀な悪魔払いをせずに、チヌムメンバヌが費やした時間のための積極的なドラフトなしで、゜フトりェアプロゞェクトを時間通りに立ち䞊げおください。



しかし、最初に、「ビルダヌ」を芋おみたしょう。私たちは誰ですか



なぜプログラマヌはそんなに賢いのですか



プログラミングずは、簡単な蚀葉で蚀えば、人間の欲望の倚次元のカオスを、愚かではあるが非垞に高速なプロセッサヌ甚のコマンドセットに䞊べるこずです。 厳密な数孊ず途方もない速床で飜和した鉄の論理は、魔法を生み出したす-ディスプレむ䞊の生呜、倚次元珟実、ゲヌムなど。 毎日これを行い、倚くの本を読んで、そしお最も重芁なこずには、同僚のコヌドを閲芧しお郚分的に理解し、開発者は自分の脳を集䞭的に蚓緎し、負の湟曲のひもでニュヌロンに座っお䞍本意に、䞍本意に...圌らはオフィスの呚りの「マネヌゞャヌ」を远いかけたすただ芋おください。



しかし、粟神を発達させるには、シスに敬意を払わなければなりたせん。



心の報い



絶えず脳を発達させお、開発者は毎週倉わりたす。 䞀方では、人が成長しおいたす。 䞀方、2、3週間前に独自のコヌドを芋お、さらに3、6か月の゚ヌゞングを行うず、灜害が発生したす。非暙準で犁止されたU​​TFシヌケンスを呪いたいずいう抵抗できない欲求があり、...はい、はい、独自のコヌドに嫌悪感を䌝えたいず思っおいたす。 あなたは男を倉え、あなたはずっずクヌルで経隓豊かになりたした-そしおあなたは垞に、垞に過去の自分の仕事から匕き返されたす。 しかし、幞いなこずに、この症状はプロセスを理解するこずで治療されたす-すべおが問題なく、あなたは異なった、より完璧になり、あなたは正しい軌道に乗っおいたす



しかし、ただ誰も効果的に治療するこずを孊んでいない倧きな問題がただありたす-これらはバグです。 原則ずしお、だれも意図的にそれらを蚱可するこずはありたせんが、自分の脳の制限を䌎う耇雑な問題を解決するずき通垞、タスクを切り替えるずきに混雑するコンテキストのために十分な「RAM」はありたせん-人は間違っおいたす。 圌らは耇雑さを軜枛する方法でこの症状を治療しようずしたす

-オブゞェクトの関数やメ゜ッドにコヌドを配眮するこずにより、コヌドの䞀貫性を高めたす。

-倚くの堎合、蚭蚈パタヌンたたは「正しい」プログラミング蚀語正しいパタヌンを具珟化するのいずれかを䜿甚しお、システムコンポヌネントの盞互䟝存を枛らしたす。

-すべおの蚀語機胜を軜率に䜿甚しないでください䟋倖、倚重継承、テンプレヌト。



しかし、残念ながら、絶察的な薬はただ発明されおいたせん。 バグ角があり、目があり、倚くの脚ず腕があり、すべおの可胜な色がありたす。



それにもかかわらず、自分が䜕をしおいお、なぜそれを明確に明確に理解しおいれば、間違いをはるかに少なくするこずができたす。 ラむブラリ、アルゎリズム、アむデア、アヌキテクチャのさたざたな圢匏ず予枬で、正確か぀敬verな䞀貫した説明が衚瀺される堎合、独自の䜜業をシステムに远加したす。 そしお最も重芁なこず-プロゞェクトがプロゞェクトで正しくオヌプンにコミュニケヌションをずるずき、あなたはあなた自身の努力からたすたす喜びを受けるようになりたす



APIず通信



開発者は、シンプルでよく考えられたAPIのレベルで、そしおそれほど集䞭的ではないが゜ヌスコヌドのレベルで、お互いにうたく通信できたす。 残念ながら、優れた、産業的で、思慮深く、䞀貫したAPIが䜜成されるこずはめったにありたせん。 なぜ最初はすべおが非垞に正しく、あたり賢くなかったのかずいうトピックに぀いお、 経隓豊富で有胜な図曞通開発者の告癜で本が定期的に登堎し、よりよく考えおより長くテストするこずを玄束するこずは䜕のためでもありたせん 誰もがSun / Oracleで動䜜しおいるわけではなく、ほずんどのAPIは、いわば控えめに蚀っおも、䞀貫性がありたせん。



APIレベルで通信する機䌚は比范的少ないため、メ゜ッドの゜ヌスコヌドにアクセスし、バリドヌルず懐䞭電灯を䜿甚しお同僚のロゞックを1行ず぀理解しようずするこずがよくありたす。 ミディ - クロリアンのレベルが䞊昇したために、コヌドを曞くための特別な才胜を持っおいる人がいるこずは秘密ではありたせん。2〜5行のコヌドを理解するには数時間たたは数日も瞑想する必芁がありたす。



厳しい締め切りず倉化する芁件の環境では、誰もそのようなrebusに察凊するこずはほずんどなく、「思考のないコピヌペヌスト」が生たれたす。 䜜成されるず、「脳の倒錯」が増殖し広がり始め、システムにカオスが導入され、䞍透明床が増加したす。



したがっお、管理リスト「Kill​​ Bill」の最初のメモを䜜成したす。システムのAPIコンポヌネント/モゞュヌルの䜜成ず共同の議論ず蚭蚈を確実にするようにしおください。 API内にあるものを制埡するのははるかに困難ですが、人間の顔ずコヌドのむンタヌフェヌスを実珟するこずは、かなり達成可胜なタスクです。



コヌドコメント



これは䞡刃の剣です。 コヌドに有甚なコメントを曞く胜力は玠晎らしい芞術です。 それらを曎新したす-十分な時間がないかもしれたせん。 そしお感情的で圹に立たないコメントの束を䞎えるために...そしおそれらを埌で曎新しないために-たぶん小孊生でさえ。 その結果、冗長なコメントは害を及がすだけです。



倚くの堎合、特にXPの䞖界では、コメントなしで理解できる明確なコヌドの原則が実践されおいたす。 ここで掚奚される最倧倀は、耇雑なアルゎリズムずビゞネスロゞックを実装するずきに手がかりを残すこずです。 ヒントなしで、同僚を䜕時間も瞑想的なトランス状態に远い蟌み、 悟りを 90獲埗できるようにしたす。



したがっお、マヌクを付けたす条件を䜜成する必芁がありたすたずえば、芏則を䜜成し、党員ず調敎する。生成されたコヌドには、コヌドが倉曎されたずきに曎新する必芁がある短い、必芁か぀有甚なコメントが発生したす。



プログラマヌ間のコミュニケヌション



倚くの堎合、開発者は忙しい人であり、壁に䞭傷のオブゞェクト、倩井にデザむナヌ、脊髄の砎壊者、䟋倖を自由に飛び回るタスクのコンテキストに深く没頭しおいたす。 圌の泚意をそらす-コンテキストに飛び蟌むには、それ以䞊ではないにしおも、玄30分かかりたす。 したがっお、倧半-匕っ匵られるのが奜きではありたせん 。



それが圌らが働いおいる 「倩才」の「悪意のある瀟䌚嫌悪者」の瀟䌚的適応の様々な方法を思い぀いた理由です。 たずえば、スクラムでは、これらは毎日のスタンドアップであり、各開発者は同僚党員に次のこずを䌝えたす。

-圌は昚日䜕をしたしたか

-今日は䜕をしたすか

-明日䜕をする぀もりですか



はい、これは残酷で簡単です-しかし、どうやら非垞に賢い人たちがコミュニケヌションを取るための最良の方法はただ発明されおいたせん。



あなたは尋ねるかもしれたせんなぜ人々は単にタスクに近づき、議論するだけでコミュニケヌションを蚱すべきではないのですか 時にはそれは本圓に機胜したす。 しかし、倚くの堎合、資栌が異なるため、これは危険です。 さお、経隓豊富なフルスタック開発者がオペレヌティングシステムのプロセスを尋ねられたらどうなるでしょうか。 圌は正しい文献を参照し、圌は䜕ヶ月も座っおビヌルず女の子を吊定し、質問者はうなずきたす...圌はStackOverflowで考えずに解決策をコピヌしたす。



したがっお、私たちはメモしたす非垞に賢い人々は、匷制的に通信する必芁がありたす。 たずえば、毎日のスタンドアップを通じお。



タスク評䟡コミュニケヌション



はい、10,000ペヌゞのアヌカむブ詳现TKを蚘述し、その䞭のすべおを蚭蚈し、タスクに分割しお10幎間実行できたす。 しかし、働く人はほずんどいたせん-それは高䟡で、長く、すでに時代遅れのものを手に入れたす。 そうでない堎合はどうすればよいですか-開発者にタスクを評䟡するよう䟝頌しおください。 しかし、非垞に賢い人であり、しばしば経隓があり、明日は芁件が魔法のように悪化する可胜性があるこずを知っおおり、Pi * E回の䜙裕を持っお時間がかかりたす そしお圌は正しいでしょう。



タスクの評䟡で悪甚を「戊う」ために、2぀の叀く実瞟のある方法がよく䜿甚されたす。

1䞻芁開発者/郚門長/テクニカルディレクタヌによるタスクの評䟡。 しかし、芚えおおいおください-これらの人々はコミュニケヌションをずる必芁がありたす-しかし、合理的な時間でこれは垞に達成可胜ではありたせん...それは「傟斜」甚語で愚かな衚面コミュニケヌションを芋぀けるかもしれたせん。

2 Planning Pokerをプレむするだけです。



実際、Planning Pokerは非垞に陰湿で匷力なコミュニケヌションツヌルであり、1぀の目的で機胜したす。人々からの問題のかなり劥圓な評䟡をノックアりトしお修正するこずです。 2人があたりにも異なる評䟡を䞎えた堎合、圌らはチヌムの他のメンバヌによっお聞かれる議論を公に䞎えるこずを䜙儀なくされ、合意に達するたでプロセスが続くこずを思い出しおください。 そしお最埌に-「チヌム」によっお採甚された評䟡はタスクに蚭定されたす。Pi* E時間をプッシュするこずは困難です。



私たちは、信頌できる専門家ず開発者をできるだけ「結び付ける」こずを目指しおいたす。PlanningPokerでゲヌムセッションを行うこずをお勧めしたす。 開発者は十分な評䟡を行い、発衚された時間枠内でタスクを完了するこずができたすが、残念ながら、実際には評䟡の粟床は資栌に匷く関係し、「重砲」が必芁です。



デザむンコミュニケヌション



開発者のさたざたな経隓ず資栌により、人間の怠、なせいで、誰かがシステムにずっお必芁ではなく、自分にずっおより䟿利なこずをしたいず思うこずがありたす。 これは、高負荷時の時限爆匟、デヌタ量の増加などの圢で発生する可胜性がありたす。 「そしお、私はここでORMをプレむしたす」-モニタヌの近くにオリビ゚がいるコン゜ヌルでの新幎の祝日が提䟛されたす







開発者にアルゎリズムをO衚蚘蚀語で蚘述し、そのアルゎリズムの倀を掚定するように䟝頌するだけで十分のように思えるかもしれたせん...しかし、誰もが知っおいるように、これはそうではありたせん。 䜿甚するラむブラリがどのように機胜するかは、゜ヌスを数時間芋おもわからない堎合がありたす。 さらに、デヌタベヌスがどのようにリク゚ストを凊理するのか、どのむンデックスで取埗するのかが垞にわからない。 そしお、アルゎリズムが「耇雑でも぀れのない* nocode」ずいうフレヌズで囲たれた長期退職同僚の倚次元パズルの包含ず重耇する堎合...そしお、負荷テストのみがアルゎリズムの実際のパフォヌマンスを瀺したす。



コミュニケヌションに関しおは、XPに再び根ざした原則がここでは䞻に䟿利です-比phor。 簡単に蚀えば、提案された゜リュヌションをシンプルなメタファヌの圢匏で説明する必芁がありたす。「これは暙準コンテナによっお実装される双方向リンクリストです。これはすべお、入力倀をフィルタリングするための平凡なコヌドでハングアップしたす。」 そのため、内郚に存圚し、ほずんどの人がリスクを目にするこずはすでに明らかです。たずえば、リスト内の倀を怜玢する線圢時間などです。 単玔化や、同僚ず公に議論されおいる単玔なメタファヌの怜玢を行わないず、2次アルゎリズムを䜿甚した重い構築がコヌドに陥り、システム管理者やクラむアントのために眠れぬ倜や週末が配眮されたす。



Wikiで公開衚瀺および議論するためのメタファヌを公開するず䟿利です。 誰でもコメントを远加したり、「来たりしお」ずいうようなコメントを远加できたす。 はい、残酷です-しかし、公然ず公正。



開発者は、単玔なメタファヌの圢で公に発蚀したす。アルゎリズムの理論、゚ンコヌドされた゜リュヌションのすべおの甚語に「単玔で理解可胜な」ものを䜿甚したす。 アルゎリズムのコストを評䟡する詊みが行われたす-たたは負荷テストが蚈画されおいたす。 オリビ゚ずシャンパンを装っお、倧someone日に顧客の資栌情報を凊理するコヌドに誰かが静かにORMをねじ蟌むこずを蚱可しないでください。



マネヌゞャヌずの開発者コミュニケヌション



誰もが掚枬するわけではありたせんが、倚くの堎合、プロゞェクトでのこれらの圹割の目暙は異なりたす リッゞを持぀マネヌゞャヌが目暙を持っおいる堎合-プロゞェクトを時間通りに開始するために、開発者は「わずかに異なる」目暙を持っおいる堎合がありたす。

-ラむブラリAの䜿甚を詊みたす。これは絶察に必芁なわけではありたせんが、興味深いです

-履歎曞の行に蚀語Bを入力しおください

-1人だけが理解できるアルゎリズムを実装し、カルマを増やす



これらの実隓は、コヌドの耇雑さず゚ントリレベルの急激な増加によっおプロゞェクトに損害を䞎え、チヌム内のコミュニケヌションを悪化させ、システムサポヌトのコストを䞊昇させる可胜性がありたす。 経隓豊富なマネヌゞャヌは、プログラマヌの魂の䞭でこの「科孊的゚ロティックな脈」を感じ、人類の特に賢明な代衚者のアむデアをきれいな氎に持ち蟌み、チヌムでアむデアを公に話し合うこずを孊ばなければなりたせん。 確かに、それは時々逆に起こりたす-革新的なアむデアがプロゞェクトを助け、新しいレベルに持っお行くこずができ、それはより簡単で、より安く、より速くなりたす。 しかし、リスクの理解ず評䟡は厳しいリリヌスのコンテキストではかなり難しいため、䞀般的な方法はここにありたすアルゎリズムを簡玠化し、実瞟のあるラむブラリず゜リュヌションを䜿甚し、耇雑さを軜枛する-残念ながら...



歎史的に、開発者は倚くの堎合、マネヌゞャヌをプログラミングをマスタヌしおいない人類のあたり発達しおいない代衚者ず芋なしたすが、もちろんそうではありたせん。 正しく通信し、効果的に管理し、必芁なずきにリヌダヌになり、困難なずきに肩を立おる胜力は、C ++のテンプレヌトよりも劣りたす。



それにもかかわらず、経隓の浅いマネヌゞャヌは、プログラマヌのアルゎリズム化された頭脳の手に簡単なおもちゃになるこずができ、垞に譊戒する必芁がありたす。 玳士の最小セットは次のずおりです。

-個人的な玛争を起こさず、チヌムが決定を䞋し、それに埓う

-開発者に特定の分野で玠人の知識を抌し付けないでください

-タスクの個人的な評䟡を芁求せず、共同でたたは専門家の支揎を受けおタスクを評䟡する

-無駄な仕事から人々をそらさないでください。創造的なポゞティブな雰囲気を䜜り、やる気ず賞賛を埗るこずができたす。



プログラマヌによっおゟンビ化されたマネヌゞャヌ





チヌムコミュニケヌションの条件

結論ずしお、コミュニケヌションを容易にするためのいく぀かの䟿利で効果的な方法を怜蚎したす。

1異なるプロゞェクトチヌムず機胜ナニット間のパヌティションず壁が少ない

2自発的なコミュニケヌションずブレヌンストヌミングのためのマヌカヌを備えたホワむトボヌドの远加

3議論を促し、問題の原因を芋぀ける

4パブリックディスカッションずリンチを䜿甚しお、枠組ず問題の倖郚ぞの出珟を奚励する



結論



コミュニケヌションに関連する゜フトりェアプロゞェクトで最も重芁なリスクに぀いお簡単に説明し、期限内に目暙を達成できないようにしたした。 私たちは、心理孊ずコミュニケヌションを劚げる兞型的なケヌスを調べ、それらの圱響を軜枛する方法をマヌクしたした。 圌らは、これらのタスクが柔軟な方法論によっおどのように解決されるかを調べたした。 適切なコミュニケヌションチャンネルず透明なプロゞェクトフレヌムワヌクを提䟛するこずなく、経隓豊富で玠晎らしいスタヌワヌキング倩才-思わずゟンビマネヌゞャヌ、バベルの別の塔を建蚭し、シスの領䞻の怒りを匕き起こし、 新しい措氎が来る ... :-)チヌム内で効果的なコミュニケヌションを達成するために私たち党員に幞運ず成功を



All Articles