仕事の同僚が、維持しようとしている設計を理解していない場合の対処方法[終了]


8

私が取り組んでいるソフトウェアプロジェクトには、私と別のプログラマが関わっています。プロジェクトには、MVCフロントエンドを備えたエンジンバックエンドが含まれていました。最初はプロジェクトで多くの作業を行っていたので、主に抽象化とテンプレート戦略を取り巻くいくつかの簡単な設計方法論をセットアップしました。

かなり長い間、私はエンジンのバックエンドを離れて、ウェブサイトで働いていました。しかし、いつかエンジンに戻る可能性があるとの情報を得たので、私はまだエンジンに興味を持っています。

プロジェクトは非常に厳しい締め切りにあるので、私たちは皆、フロントエンドとバックエンドの両方で完成させるために作られたように急いでいます。

私は自分が優れたプログラマであるとは思っていません。そのため、特定のデザインや方法論を人々に強制したり、実行したりすることはありません。より良いソリューションを考え出す。しかし、私はこのエンジンコードに変更が加えられていることに気づきました。私が開発者に別の方法で作業を提案するよう提案したとき、厳しい締め切りを考慮してもメリットはほとんどないため、彼はポイントを理解していないと述べました。

彼が入れたハックはリリース後にさらなる開発を意味する可能性があることを試して説明する必要があり、今すぐ修正できるときに他の人にスラックを拾わせるのは公平ではないと思いました。私は自分がやったことを30分ほどかけて過ごしましたが、その最後に、彼はコードをほとんど書いて、コピーできるようにしてほしいと頼みました。

私が最初に設定したものの基礎は:

  • 抽象クラスx
  • xの具象インスタンスを作成するための抽象ファクトリクラス

何が起こったのかというと、抽象クラスにvirtual / abstraceメソッドとして簡単に配置でき、それに応じて新しい変更が抽象クラスの他のメソッドと同じ原則に従っているので、それに応じて実装できるifステートメントをいくつか置いていました。

これは私には取るに足らないことのように思えますが、関連するクラスを見せても、彼はこれを理解することさえできませんでした。

今私の質問は:

  1. 彼がこの概念を理解していたはずであると想定するのは、これは不公平ですか?私たちは厳しい締め切りにあることを理解していますが、それは取るに足らないことだと思いました。プログラマーは、少なくとも中間レベルであることが想定されています。
  2. これは多くの場所で起こっており、私は常に彼に変化を起こさせようとしましたが、彼はそうではありません。無視してもいいですか?
  3. この問題を別の場所で提起するのか、それとも吸うだけでいいのか、プロジェクトを再開するときは、これらすべての変更を行ってみてください。

プロジェクトの彼の部分は完成しないので、私は戻って彼を助けなければなりません。私はあまり望んでいません。なぜなら、彼は素晴らしいとは言えないが、まあまあのアーキテクチャでプロジェクトを実行していて、達成しようとしていることを頻繁にフォローしていなかった多くの厄介なコードを実際に配置したからです。

質問が曖昧または不満である場合は、お知らせください。それに応じて編集します。

編集済み:計画されているフォローアップ作業と、私たちが当てはまらなかった作業が後で実施されることに同意されているため、プロジェクトは最初の締め切り後に続行される予定です。


あなただけではありません...私が見た新しいデザインを共有したいことがあり、それを素人の言葉で説明しなければならないこともあります...それほどエキサイティングではありません。
wleao

彼がジュニアプログラマーであっても構わないと思いますが、彼は中級レベルになるはずなので、プロジェクトの非常に重要な部分を与えられました。デザインについて話し合うために何度も試みましたが、なぜ私たちは何かをしたのでしょうか。ここから先に進むにはどうすればよいかわからない。
dreza

これはあなたの仕事に影響を与えていますか?プロジェクトの結果は?このプロジェクトにはクライアントがありますか?ボス?これらすべての質問に対する答えが「はい」、「はい」、「はい...」だった場合は、同僚や上司と話し合うことを考え始める必要があります。
wleao

4
プログラミングではなく、職場の人々と対話することなので、この質問をトピック外として締めくくります。
Ixrec

1
私は牛小屋で行くつもりです...しかし、私は職場だと思います。SEはその悪い習慣を考慮します。
James Snell

回答:


9

過去25年間で200人以上の開発者を監督することから、私は、あなたが話している設計の抽象化の種類に直感的に慣れている開発者の割合は、3番目のようなものだと考えています。私のアプローチは、これをコーチング、トレーニング、励ましで修正することを期待することから、コーチングなどに取り組むことへと進化しました。あなたはそれが公正かどうか尋ねました。あなたの経営陣が開発チームのメンバーにこの緊張とその影響に対する責任を負うことを期待するのは、公平ではないと思います。あなたの周りにリーダーがいる場合-あなたにではなく彼らの言葉で彼らに緊張を説明してみてください。他の開発者についてではなく、効率についてです。将来の影響とリスク=純利益、したがって明確な管理責任。関連するスキルを活用する組織ソリューションを探します。より多くのデザインガイダンス作業を引き受けて、他の人が仕上げをさらに行うことができますか。すべての開発者がこの役割を望まないだろうと思い込まないでください。多くの開発者は、顧客を迅速に満足させるために仕上げることが得意であり、他の誰かによって提供される高品質の設計環境に感謝しています。


ピート、乾杯。私は、すべての開発者がデザインとコンセプトに興味があり、何かをより良くするためのリファクタリングをしたいと思っていると思います。それ。
dreza

できれば最後の文に+をもう1つあげます。
mattnz

4

時にはそれはコンセプトではなく、それを理解するのにかかる時間です。誰かからすぐに説明されても、人々は物事を理解しませんが、メルフを探しに行く時間を与えれば、彼らはそれを手に入れます。場合によっては、概念が理解されるまでに少し時間がかかることがあります。

締め切りが厳しく、知識が限られているため、思った以上に影響があった可能性があることを理解していますが、この場合(そしてここでは仮定を立てています)、工場の設計パターンドキュメントを彼に向けましたか、それとも彼があなたのコードを彼の鼻の下に振って「あなたはそれを手に入れられない、あなたはそれを手に入れられないだけだ」と叫ぶことによって彼にあなたのコードを理解することを期待してください:)

私も同じことをしたかもしれません-コードを人々に示し、彼らがすぐに理解することを期待し、彼らが空白に見えたときに欲求不満になり、理解するために無駄な試みでズームし、さらに混乱したときにイライラします。邪魔にならないように肘を曲げて自分で行うか、私がとても賢いなら、自分で芝刈りして自分で行うように指示されます。これは、私の教師としての貧しい試みに対する理解できる反応です。


公平に言うと、それは私がやったことです。これは簡単にピックアップできると思いました。おそらく彼と一緒にこれらのいくつかを通過し、彼がそれについて読み
進んで

3

抽象クラス、クラスファクトリーは、私を誤解させませんが、鳥を殺す大砲のように聞こえます。パターンは、それらを作成しないように問題を解決するためにあります。あなたはプロジェクトが2人のプロジェクトであることを認めました。

しかし、同僚が間違っているのは、彼がガイドラインに従っていないということです。それは下流で混乱を引き起こします。プロジェクトがすべての方法で抽象化されている場合、彼はそれに従うようにすべきです。


それは二人のプロジェクトだと思います。私は他の人とWeb UIの作業をしているので、3人だと思いますが、その特定の人は2人だけでした。
dreza

@dreza:とにかく、なぜプロジェクトがどのように行われるのか、良い議論を見つけてみてください。一貫性があり、分割されていないアーキテクチャは、メンテナンスと拡張性の向上に役立つという考えをフィードバックしてください。これらのアイデアを同僚にフィードしてください。また、彼はいくつかの概念を理解するのに問題があるかもしれません。その場合は、選択したアプローチで本当に何かを得ることができる場所を示す簡単で具体的な例を見つけてみてください。同僚に抵抗なくそれを受け入れさせるには、余分な作業が無駄に行われていないことを証明する必要があります。
Coder、2011

歓声コーダー。メリットを十分に伝えていなかったのではないかと思いましたが、自分がやっていることよりも簡単なことを考え出すのに苦労しました。ただし、引き続き作業を行います
dreza

1

あなたは最初から彼にパターンを強制したくありませんでしたが、あなたがしたことのいくつかについて短い議論を持つことができたでしょう。時間の制約の下で、彼があなたのコンセプトを彼の「ハック」と同じくらい速く実装できるほど十分に理解できるとは思えません。あなたは彼が物事を今修正して他の誰か/あなたが後で修正しなければならないことを防ぐようにしたいのですが、プロジェクトは時間通りに行われることはありません。彼はあなたが何をしていたのか理解していないか、時間がかかりすぎて遅延のリスクを冒す価値がないと感じています。

プロジェクトをいつ完了できるかを知らせ、将来のこれらの制限や追加の時間の必要性について懸念を表明してください。あなたがクライアントが満足している場合、あなたのやり方で誰もがそれを見るのを得るのにいくつかの困難を伴うでしょう。それは正しくないかもしれませんが、それは現実です。


私は事実の後でこれらの懸念を提起すると思いましたが、これはあまりにも小さいので私は彼にそれを説明することができ、彼はそれをするだけでした。抽象メソッドを作成してオーバーライドすることは、非常に複雑なプログラミングタスクであることを理解していませんでした。
dreza

@Dreza-この同僚はあなたがこのコマパニーでより長く働いていましたか?
ラムハウンド2011

いいえ、1か月長く働いています。我々は両方の私たちは対等などであったと想定していた始めに、このプロジェクトのために使用された
dreza

1

おそらく技術的な問題ではなく、間違いなくプログラミングの問題ではありません。従来の「考えられる未来のためのプログラミングvs今日の締め切りを満たす」という議論にすぎないように思えます」1人以上のスタッフがいるすべての職場で毎日発生します。

あなたがこれを「勝ち取りたい」なら、あなたの管理とセールスマンのスキルは、あなたのデザインにおけるどんな技術的優越感よりも重要です。

「友達を獲得して人々に影響を与える方法」や「あなたは何色ですか」などの本や他の人々のスキルの本を読むことをお勧めします。


質問で与えられた実践のほとんどは、今日存在するものに代わる遅いものではありません。これは主に、コードを適切な場所に配置することであり、ラドムではありません。したがって、これは「可能性のある将来と今日の締め切りに間に合わせるためのプログラミング」ではありません。とにかく、右の人のスキルの本について。
deadalnix、2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.