2009-04-02 7 views
2

私は、ソフトウェア設計と実装の難しさを理解していない、あるいは評価していない開発マネージャをいくつか持っています。開発マネージャーにソフトウェア設計の難しさを教える方法は?

このようなマネージャーは、プロセスと方法論が問題を完全に解決すると信じています。私はそれがそうではないことや、最新のプロセス流行に関する本を読むことができず、です。

私が持っている最新の不満は、私のマネージャーに (0120)を納得させることです。(a)食糧ではなく、できるだけ大きな設定を私にお願いします。 (b)私のチームには、設計方法、いくつかの選択肢をスラッシュアウトする、実装スケッチを解説する、タスクを計画する、などについて考えるチームをリードタイムを与える。

アジャイルの方法論と解釈のために、それは、(滝のBIGの前のデザインとは対照的に)先行設計をしないと言いますが、製品の所有者はいつでも息子の要件を変更することができます。

これまでのところ、私は多くの成功を収めておらず、結果としての不満を抱かなければなりません。 あなたは私にそのようなマネージャーを説得するいくつかの議論を与えることができますか?

EDIT-1: レトロスペクティブはすべてのスプリントの終わりではありませんが、問題は発生します。しかし、私が言及したように、私のマネージャーは、デザインのリードタイムの​​必要性と片付けの必要性に対する不満を感謝していません。

EDIT-2 要件の変更には問題ありません。私はそれがそうであることを理解していますが、これを想像してみてください。数回の反復の後では、設計ではこれ以上処理できず、リファクタリングは不要です。これは、最初に先行設計を行い、関連する機能を一緒に調査して、よりうまく解決できました。そのBDUFではなく、私がソフトウェア工学の常識と呼ぶ自然な方法です。

私のマネージャーは、私が再設計する時間を頼んでいる理由を理解していません(数回、リファクタリングと呼ばれ、アジャイルなやり方に合っていますが、実際は再設計しています) 。

+0

プロセスで何がうまく機能しているかどうかを示すために行われたレトロスペクティブはありますか?私はそれがスクラム依存かどうかは分かりません。 –

+1

私はこの質問をトピックではなく、プログラミングではなく職場の問題のために閉じようとしています。 – EJoshuaS

答えて

1

アジャイルシンプルデザインは、デザイン/アーキテクチャーを前面にしないことを意味しません。 これは、合理的な変更要求に対して恐ろしい代償を払わないように、最小限の設計を最前線で行うことを意味します。

スコット・アンブラー変更するケースについて協議 - アジャイルアーキテクチャに関するhttp://www.agilemodeling.com/artifacts/changeCase.htm ジェームズCoplien会談 - このすべてでhttp://www.infoq.com/presentations/Agile-Architecture-Is-Not-Fragile-Architecture-James-Coplien-Kevlin-Henney http://blog.jaoo.dk/2009/03/04/handling-architecture-in-the-agile-world/

アート/クラフトができますように、アーキテクチャをスライスする方法である。

  • アーキテクチャー/インフラストラクチャ全体のコンバージェンスは比較的速く、開発期間の見積もり日数は1日あたりのオーダーです。
  • 各機能/要件ごとに「十分なだけの」アーキテクチャ/インフラストラクチャを開発する
  • 今日の機能に焦点を当てたものと比較して、将来の準備のバランスをとること。

あなたのプロダクトオーナーがこのバランスの取れた行為をすべて認識し、協力して作業することが重要です。彼は、将来のためにすべての考えを無視すると、それぞれの変更は非常にコストがかかることを理解する必要があります。柔軟性のために支払うべき価格があります。

QAとテスト自動化への投資に非常に似ています。あなたは今何かを支払っています。それはコードをテストしたX時間後に返済されます。コードが決して変化しないなら、それは努力の無駄であった。誰もがそのほとんどのコードの変更を知っているが...すべてこの問題の

4

要件が変更された(または増加)ので

  • 推定が完了するとする必要がありますされているたびに、
  • リスク

スタートあなたが持っている場合でも(更新推定値を与えるの評価推測)と更新された要件または新しい要件を取得するたびにリスクのリスト。これにより、マネージャが接続を確立するのに役立ちます。

"計画目的のために"役立つように、これを行うようにしてください。そうすれば、あなたは閉鎖的であるか「can-doの態度」として認識されません。見積もりが(理論的に)低下し、リスクを軽減できることを忘れないでください。

0

あなたのマネージャーthis bookを購入してください。それは私がやったことです、それは素晴らしい仕事をしました:)

3

あなたの仕事の必要条件はどこにあっても変わります。それはあなたのせいではない、それはあなたの上司のせいではない、誰のせいでもない。分割して要件を講じることの全体的なポイントは、問題を解決する必要があるかもしれないし、そうでないかもしれないいくつかの問題ではなく、問題のことを考えることを奨励することです。一度あなたがそれのリズムに入ると、それはかなり解放されます。

時期尚早な最適化としてupfrontデザインを考えてみましょう。あなたはそれを必要としないかもしれません。あなたがそれを必要としていることを知っていても、今日から2週間後にあなたが知っているより多くのことをあなたは知っています。これは、コードの状態に関する可能な限りの知識を持って、エンジニアリングの問題を解決するのに役立ちます。

言われていることは、edgは絶対に正しいです。要件を追加すると、見積もりが変更されます。これは開発者や他の誰かの過ちではありません。あなたがどのように正方形になっても、より多くの仕事はより多くの仕事を意味します。上司が要件を追加するとプロジェクトの見積もりが大きくなることを認識していない場合、アジャイルは何も支払わずにさらに機能を追加できる魔法の弾丸ではないことを彼に説明する必要があります。

+0

Upfrontデザインは、コードベースの非効率的なクロールの恐怖にロックされていないことも意味します。私は前もって設計されたコードではなく、何年も後に進化したコードに取り組んできました。あなたは? –

+0

うん、それはまさに私の状況です。私はメンテナンスの努力を想像すると震えます。 – trshiv

+0

私はコードベースに取り組んでいます。これは何年にもわたって繰り返し進化してきました。完璧ではありませんが、定期的にリファクタリングし、積極的にテストし、継続的に構築します。それ以外の方法はありません。ソフトウェアは建築家の脳から完全に形成されていません。 –

0

最初に私が書いた以下のすべては私の個人的な意見、必ずしも行うには賢明なことですが、非常に敏感らしいです。

私はあなたが解決すべき問題がわからないとソフトウェアを作ることはできません。要件が小さすぎて問題を監督できない場合は、欠落していると思われる部分について質問します。以下のような:マネージャが真ん中にある場合はもちろん、「...ソフトウェアはXを行う必要がありますので大丈夫、だけでなく、Yを意味するか、そうでなければ、多分Zがあるので、それはその後、Yの場合は...しかし、それは、その後Zであればということですか?」彼は答えることができませんが、少なくとも開発に影響を与える未解決の問題があることを知っています。

デザインのリードタイムについて:デザインと開発は、手を携えて行くことができる反復プロセスです。それはちょうどあなたの名前をどのように物事です。管理者は、一日の終わりにいくつかのコードを見たい場合は、大丈夫、私はちょうどその設計に基づいていくつかのコードを作るために設計し、その日の後半ためにその日の最初の半分を使用します。マネージャーがデザインを見たくない場合は、私と一緒に罰金をかけてください。コードを表示します。

関連する問題