パスワードを忘れた? アカウント作成
11731714 story
プログラミング

開発の遅れはプロセスの問題が大きく、開発者の責任は小さい 37

ストーリー by headless
原因 部門より
本家/.「It's Not Developers Slowing Things Down, It's the Process」より

ソフトウェアエンジニアはコードを書くペースを理解しているが、マネージャーは理解していないことが多い。1行のコードは1分で書けることもあれば、1日かかることもある。それでも全体的に見ればコードを速く書くかどうかよりも、目標が適切に設定されているかどうかの方が目標の達成に重要な役割を果たす。このことについて、プロジェクト管理ツールなどを提供するSprint.lyが開発サイクルに関するデータを分析し、裏付けるデータを公開している。開発者の作業時間は全般に平均的で変動も少ないのに対し、仕様や作業の優先順位の確定にかかる時間は変動が大きい。経験を積んだ開発者が認識しているように、要求仕様がはっきりしないことや、変更されることが作業速度に最も悪影響を与える。作業が遅れるもう一つの大きな要因は、複数の作業を並行して行ったり、切り替えて行ったりすることによる開発作業の中断だ。記事では仕様が過度に漠然としている場合、決定プロセスに開発者をかかわらせ、無理なら無理だと言える状況を作ることをマネージャーに勧めている。他に何か追加しておくべきことはあるだろうか。

  • 日本での事情に限定します(外国の状況には詳しくないので)が、記事の分析通り、要件定義を軽視しすぎていると感じます。
    要件は開発者側だけで決定できるものではありませんから、利用者側の都合で変更や追加が発生することはやむを得ないとしても、
    ・十分なヒアリングや検討を行い、変更の可能性を最小限に抑える
    ・それでも変更が発生してしまった場合は、工数を見直し、納期やコストが変動することに合意いただく
    ・「なぜこの要件なのか(要件が変更されたのか)」を最前線の開発担当者にも伝え、利用イメージを共有する
    といったことが重要になると考えます。

    私たちがこの辺を端折ってしまい、後から要件が膨らんでも納期や請負金額が変わらず、最前線の開発担当者にしわ寄せが来て苦労するのは避けたいです。
    あるいは、要件変更の合意が取れず元の要件のまま進めるのも、結局使えないものができるだけで、開発者も使えないものを作るモチベーションはありませんから、これも避けるべきです。

    価格競争に陥り、極端な安価で受注してしまう開発業者も多いと聞きますし、そういった会社は要件定義の能力に乏しく、また軽視していると思われます(営業担当者が要件定義の決定を下す会社もあるかも)。
    要件定義は実務や運用にべったりで、決して「アレゲ」ではないのですが、私たちも要件定義フェーズから積極的に関わる体制を作っていかないといけないでしょう。

    • by Anonymous Coward

      「私たち」とはどのような立場なのか定義してくれないとイメージが共有できない……
      >私たちがこの辺を端折ってしまい
      >私たちも要件定義フェーズから

      • 「私たち」とはどのような立場なのか定義してくれないとイメージが共有できない……

        イメージしているのは、要件定義担当の開発者です。

        本家の原文だと、
        (1)要件定義担当者:stakeholder(直訳は「利害関係者」なので、客先も含めた表現です)
        (2)プロジェクトマネージャ:manager
        (3)開発者:developer, dev
        と分けられています。

        先の文章では「私たち」で(1)を指しましたが、(3)の人が(1)を敵視するのではなく、開発プロセスの一部として(1)(3)に分かれているだけで、利害相反も上下関係もない立場であってほしいと思っています。

        また、(1)と(2)を同一視することもありますが、むしろこれを分離しないと開発プロセスは良くならないのではないかと感じます。スケジュールは(2)の立場で決めますから、(1)に引っ張られて無理なスケジュールを設定してしまうことがないように、顧客を相手にする(1)とチーム内を相手にする(2)は、適度な緊張感をもって活動すべきだと考えます。

    • by Anonymous Coward

      自社の管理職・上級職だけがネックならまだしも、客も同レベルだから救いようがない。しかも自分たちに問題ないと思ってるから、同じ失敗を何度も繰り返す。

      • 自社の管理職・上級職だけがネックならまだしも、客も同レベルだから救いようがない。

        管理職・上級職のどのあたりをネックと思っているのか、ご自身の言葉でもう少し説明してほしいかな。
        こちらでも想像はできるのですが、管理職や上級職の立場を理解していないか、少なくとも彼らの立場から問題を捉えようとしていないようにも思えるので。

      • by Anonymous Coward

        受注側の作成する要件定義もあやふやなのは
        発注側の要件定義が不透明なのが原因

        当然客に明確な答えがあるわけではないので
        要件を物理レベル近くまで具体化しなければいけない、
        時間をかけなければいけない。

        が、見切り発車の炎上が常。

        • by Anonymous Coward

          どんなに具体的に説明しても、客に「説明から出来上がりをイメージする力」がないから
          見切り発車せざるを得ず、ある程度進んでから「こうじゃない」と言われて要件を調整。
          というのが前提で、いかに巻き戻しを少なく見切り発車するかがミソというバッドノウハウ。

          末端作業者がパソコンの操作もおぼつかないようだと、出来たモノに「こうじゃない」
          「こうしてくれ」という要求をアウトプットする能力すらないことも…

          • プロトタイプでも紙芝居でもいいので、画面レベルで動きを見せるのが必要だし、実際に行っていると思います。
            顧客に出来上がりをイメージする力がないのと同様、開発側には業務の隅々まで察知する力はないので、細部にわたって要件を詰めないといけないのですが、曖昧な部分が残ってしまい問題となるのが実情でしょう。

            それを改善するためにどうするかを意識し、バッドノウハウで済まさないことが、要件定義工程に求められるスキルかな、と思います。

            • >開発側には業務の隅々まで察知する力はないので、

              これが、現状の最大の問題。
              最下層までは無理でも、開発側の中流には「顧客の用途」を知っている人間が関わるべき。
              何度も言ってるが、プログラマはプログラミングだけじゃなく、ユーザ側の業務知識が無いと無能なんだよ。

              言語なんていくつ覚えても、例えば、帳簿の付け方を知らずに会計関連の仕事が出来る筈が無い訳。
              「公認会計士の資格を持ったプログラマ」なら、会計関連の仕事を高価に受注可能か思われるけど、如何?
              //逆も真なんだけどね。

              --
              -- Buy It When You Found It --
              • >開発側には業務の隅々まで察知する力はないので、

                これが、現状の最大の問題。
                最下層までは無理でも、開発側の中流には「顧客の用途」を知っている人間が関わるべき。
                何度も言ってるが、プログラマはプログラミングだけじゃなく、ユーザ側の業務知識が無いと無能なんだよ。

                無能という表現はどうかと思いますが、おっしゃることはわかりますし、同意できる部分はあります。
                要件が曖昧で設計者が業務を理解していないと、往々にして開発者の思い込みで機能が作り込まれ、顧客の要望から食い違ってしまうことがあるので、顧客に近い上流の段階で不明点はつぶしていかないといけないでしょう。

                「公認会計士の資格を持ったプログラマ」なら、会計関連の仕事を高価に受注可能か思われるけど、如何?
                //逆も真なんだけどね。

                どうだろう。
                当方、「中小企業診断士の登録を受けた開発担当者」ですが、実感として人月単価(客先常駐です)そのものはそれほど上がっていない印象です。
                業務自体は上流をやらせてもらえるようにはなったし、工程が上がることで人月単価は上がりましたが。

              • by Anonymous Coward

                発注受注どちらでもなくコンサルの立場で間を持てないかと双方に提案したことが
                ありますが、いずれにもノーと言われましたねえ。
                その前年には発注者側で火消しに入って業務終了時にはずいぶんと持ち上げられも
                しましたけど、第三者として間に入るとなると事情も違うようで。

                炎上させといて発注元に常駐する他社の技術者に事態収拾を頼みにくるような所なんで、
                提案の翌年に「うちのメンバーとして入って欲しい」といわれた時もさすがにお断りしたなあ。

    • by Anonymous Coward

      日本の企業がITに無知なことも要因かと思います。
      転職してIT企業に発注する側になりましたが、安く早く仕上げるのが当たり前と思ってる人が多すぎます。
      機械や建物といった製造物・建造物には全然うるさくないのに、ことシステム構築となるとクレーマー並の注文ばかりつけます。
      IT企業って低く見られてるのだと思います。

      • 機械や建物といった製造物・建造物には全然うるさくないのに、ことシステム構築となるとクレーマー並の注文ばかりつけます。

        ハード重視、ソフト軽視ですね。人件費軽視と考えてもいいかもしれません。
        (政治ではハコモノを重視したり、飲食店では原価がこれだけなのに高すぎると感じたりするのと同じかと。)

        IT企業って低く見られてるのだと思います。

        むしろそれは、私たちIT企業の請負開発のあり方に問題があったわけで、価格を適切な水準に引き上げるか品質悪化を顧客に受け入れさせるかの二択を突きつけるべきでしょう。
        IT企業側が自分たちの見積もりを明確な根拠をもって提示し、価格競争をしない心構えが必要だと思います。

  • ソフトウェアエンジニアはコードを書くペースを理解しているが

    え!?

    • by Anonymous Coward

      自分も「ん?」と思いますが、

      1行のコードは1分で書けることもあれば、1日かかることもある。

      マネージャーはこれを把握できないってことですかね。
      ある機能の実装にかかる工数のマネージャーの見積もりは基本的に(エンジニアよりは)的外れである、というか。

  • by Anonymous Coward on 2014年11月24日 13時13分 (#2716514)

    開発者の価値は低いと言っていますね。
    責任が無いんだから。
    安いので十分。

    マネージャー向けのマーケティングだよね、これ?

    • by Anonymous Coward

      責任が無いってのは、責を負う立場じゃないという意味と、責を負うような事態を招いてないという意味とがあるよね。

      • by Anonymous Coward

        でも、誰を置いても責を負うような事態を招かないということは、
        その仕事は難易度が低く、置換可能な人材で構成できるということになるので、
        安く買い叩かれますよね。

        まあ、sprint.lyのプロジェクト管理ツール買ってね、という宣伝な訳ですけど。

      • by Anonymous Coward

        外国だと、中間管理職を作る専門学校・大学がありますからね(フランスのゴーン社長はその出身)。
        最初からプロセス管理専門の人を雇っていて、未達だとその人の首が飛ぶ。

        一方日本だと、就職面接で「課長できます、部長できます」はギャグとして扱われ…。
        プロセス管理は「現場からの上がりポスト」になってる

    • by Anonymous Coward

      開発が遅延さえしなければ品質など問わない、というのであればその通り。

      • by firewheel (31280) on 2014年11月24日 16時15分 (#2716557)

        開発が「遅延する原因」はプロセス。
        たとえばこれ→ 「要求仕様がはっきりしないことや、変更されることが作業速度に最も悪影響を与える」

        その基本となる、開発速度や品質を決めるのが開発者の質。
        そういうことじゃね。

        >マネージャー向けのマーケティングだよね、これ?

        >>このことについて、プロジェクト管理ツールなどを提供するSprint.lyが開発サイクルに関するデータを分析し、裏付けるデータを公開している。
        せやな

    • by Anonymous Coward

      マネージャーが知識や判断力に乏しく開発者のスキルに達していないとも読める。
      理解の仕方はお好きにどうぞ。

  • by Anonymous Coward on 2014年11月24日 22時14分 (#2716664)

    >要求仕様がはっきりしないことや、変更されることが作業速度に最も悪影響を与える。

    商品開発でも同じ事が言える
    現場を知らない営業が開発を遅らせるのはよくあること
    最終段階まで進んだ後で話をひっくり返したり
    コスト考えずに安易な思いつきで要件追加したり
    現場からみるとありえない馬鹿馬鹿しい要求をしてきたり
    そういうのは開発段階で言っておけよ
    何度も試作を見せて意見を聞いて、最終決定発表のはずの会議で
    それまで存在していなかった要件追加とかアホかと
    しかも、常識があればその点は問題ないことくらいわかるだろ!というアホなクレームで差し戻されたりする

    • by Anonymous Coward

      営業が「どこまで技術的に受け止められる範囲か」がわからないように、
      技術も「どこまで営業的に受け止められる範囲か」がわからないから、
      最後の最後まで営業の参画を許しちゃうんじゃないかな……と思うことはある。

      個人的には社内の引き継ぎをもうちょっと濃密にやっていいように思う。
      技術営業どちらがどちらへということではなく、お互いに。
      それをちゃんと業務負担だと評価するシステムが要るけど。

  • by Anonymous Coward on 2014年11月24日 13時35分 (#2716518)

    いくつめの銀の弾丸だよ

    • by Anonymous Coward

      これまでの「銀の弾丸」全て集めて16連射したら結構な効果があるような気もしなくもない

    • by Anonymous Coward

      Barbie「金の玉はない」

  • by Anonymous Coward on 2014年11月24日 14時44分 (#2716532)

    コンテクストスイッチは重い処理であるということか

  • by Anonymous Coward on 2014年11月24日 18時53分 (#2716613)

    バグ修正と画面の更新を同時にやってるけど、バグフィックスが多いせいで1日で済むはずのところが1週間近くかかってしまっている
    マイクロソフトみたいにバグ修正と新規開発で分業するというのが一番いいのかもしれないね

    • by Anonymous Coward

      画面を更新せずにバグ修正してたら1週間じゃ済まないでしょう。

  • by Anonymous Coward on 2014年11月25日 6時54分 (#2716723)

    現在のリソースでは無理なものは無理と言わないと、最終的に会社のためにならないと、経験上悟りました。
    数年前までは超絶技巧で乗りきったりしましたが、結局それは技術的な負債になって、その場しのぎにしかなりませんでした。
    人工知能でホワイトカラー従業員を一掃するみたいな、よほどすごいシステムでない限り、
    基本的に予算とスケジュールを追加すれば大体のシステムは作ることが出来ます。
    足りない場合は足りないと要求すべきです。

typodupeerror

開いた括弧は必ず閉じる -- あるプログラマー

読み込み中...