開発の遅延「技術的にはできます」の罠

素人仕様と開発遅延

なぜ、システム開発の進捗が悪いのか?
それは、ずばり素人が考えた仕様を開発者に伝えてしまうからである。
すべての原因ではないが、もしシステムのユーザー側の現場担当者や営業担当者がシステム仕様を決めている場合は、ほとんどの場合で満足のいくスピード感はだせていない。

潜む技術的負債

システム仕様さえ伝えていれば、きちんと動くものを作ってくれるので、あとはスピードを上げるだけ。と考えているようであれば、技術的負債が溜まっていることに気付けていない。非エンジニアが決して理解できない技術的負債の怖さは、開発スピードが遅いということだけではない。開発者側から見てシステムが複雑になっていて、メンテナンス性も低い状態になっている。

「できます」の罠

非エンジニアには技術的負債は見えないし説明もわからないことと思う。しかし、技術力でカバーしてくれているから、きちんと動いているのだと思っているなら、それは実は技術力ではない。
「技術的にはできます」このような言葉を聞いたことはないか?
システムエンジニアは「できない」と言えない。「できないことはない」ということが価値なので、素人が考えたシステム仕様でも、言われた通りに作ってしまう。

持続可能な開発へ

システムエンジニアから「技術的にはできます」を聞いたときは、いったん立ち止まるべきである。
エンジニアには、様々な影響範囲や未来のメンテナンス性への懸念などが見えている。これを必要以上のコストだと考えるのか、必要コストと考えるのかで、技術的負債は変わる。

まとめ

自分の理解の範囲でしか人間は発想しないので、システムのことを知らない非エンジニアは、システム仕様を考えるべきではないと言える。また逆に、システムにおいてはシステムエンジニアの方が発想の幅は広いが、業務に関する知識は乏しい。
システムをよく知り業務のこともわかるシステムエンジニアがシステム仕様を考えるべきだが、そんな万能な人は多くはない。だから、その間を取り持つ人間が重要なのである。

関連記事

QCDの死角

失敗の正体

システムの失敗は見えないことがある。ブラックボックスであるがゆえに隠せてしまうからである。失敗かどうかの線引きができないところがシステム構築プロジェクトの難しいところである。

エンジニアの真実

もしかしたら、エンジニアが都合の悪いことは隠していることがあるかもしれない。しかし、決めつけてしまうとエンジニアはへそを曲げてしまう可能性がある。隠しているつもりはなくても隠れていることもある。

成功の境界

失敗の線引きは、納期が遅れることであろうか。バグが多いということであろうか。実は、状況によって一概に言えないのである。QCDという言葉があるが、品質と費用と納期のバランスを上手にとったとしても成功か失敗か、すぐにはわからないのがシステムという無形物である。

コスパの本質

コスパという言葉があるが、かけるコストに対して、どれだけのパフォーマンスが出せるかが問題となる。システム開発では、コストからやりたいことを計算するのではなく、やりたいことを明確にしたうえで、コスト内でリッチ度合いを調節することが重要である。

まとめ

システム開発においては、失敗が見えにくいため、失敗しないように見えるのかもしれない。失敗しないことは、成功であるということでもない。時間が経つにつれて失敗を感じることもあり得るのである。

続きを見る >

開発の相場

相場の不在

フルスクラッチでのシステム開発に相場はない。相場とは商品が一般的に流通している商品など数が多い場合は、競争原理も働き、金額がある一定の範囲に収まってくるものである。

建築との差異

たとえば、一戸建て建築であれば、建物の規模と資材、それに加えて職人の人工で金額が決まる。フルスクラッチのシステム開発は、つまり極めて特殊な特注品を作るようなものであるため、システム開発に相場という概念が基本的にはないのである。

人件費の実態

システム(ソフトウェア)は一戸建てのように、基本的には材料費はかからない。システム開発の費用のほとんどは人件費である。大工職人の人工と同じように人月単価と呼ばれるSE1人が1ヶ月働く金額で相場を知ることができるのである。

工期の変動

建物を建てることと比べるとシステムやソフトウェアは無形の物となるため、1ヶ月の労働力を推し量ることは困難である。個人のプログラミングの早さによって、納期が早くなったり遅くなったりするのである。

まとめ

SEは過去のプロジェクト参画実績から、同じようなプロジェクトに何度も参画していれば手練れでスキルが高いと評価される。システムに関わる人材の評価が困難な点は、プロジェクトに参画する経験値と、本当の意味でのスキルが比例するわけではないことである。本当の意味でのスキルとはプロジェクトを成功させられるかどうかを指すのである。

続きを見る >

AIで変わるシステム開発

開発現場の変化

近年、システム開発の現場では深刻な人材不足と納期の短縮化が大きな課題となっている。従来の手法では限界を感じている企業も多いのではないだろうか。そんな中、AI技術の急速な進化により、開発工程に革新的な変化が起きている。コード生成からテスト自動化まで、AIが開発者をサポートする時代が到来した。本記事では、AI活用によってシステム開発がどのように変わるのか、その未来像を探っていく。

日々の開発業務

実際の開発現場では、AIはどのように活用されているのだろうか。要件定義フェーズでは、AIが過去のプロジェクトデータを分析し、最適な機能提案や工数見積もりをサポートする。コーディング段階では、GitHub CopilotやChatGPTなどのAIツールが、リアルタイムでコード補完や不具合検出を行い、開発速度を大幅に向上させている。テスト工程においても、AIが自動的にテストケースを生成し、バグの早期発見を実現する。これらの活用により、開発期間の30%削減や品質向上を達成した企業も増えている。

導入の注意点

しかし、AIの導入には注意すべき点もある。最も大きな課題は、生成されたコードの品質管理である。AIは便利だが、時として不正確なコードや非効率な実装を提案することがある。そのため、開発者にはAI出力を適切に評価できるスキルが求められる。また、セキュリティ面での懸念も無視できない。機密情報を含むコードをAIに学習させることのリスクや、著作権の問題など、法的な側面も考慮が必要である。さらに、既存の開発プロセスとAIツールをどう統合するか、組織全体での運用ルール策定も重要な課題となっている。成功の鍵は、適切なガイドライン設定と継続的な教育にある。

求められるスキル

AI活用が進む中で、開発者の役割も大きく変化している。単純なコーディング作業はAIに任せ、開発者はより創造的で高度な判断を要する業務に集中できるようになる。つまり、システム全体のアーキテクチャ設計、ビジネス要件の深い理解、そしてAIが生成した成果物を評価・改善する能力が重要になるのである。AIは強力なツールだが、あくまで人間の判断を補助するものである。技術トレンドを常に学び、AIとの協働方法を模索し続ける姿勢が、これからの開発者には不可欠である。AI時代だからこそ、人間ならではの創造性と批判的思考力が、より一層価値を持つようになるだろう。

まとめ

AI技術の進化により、システム開発は新たな段階に入った。開発速度の向上や品質改善といった明確なメリットがある一方で、適切な導入戦略と運用ルールが成功の鍵となる。重要なのは、AIを単なる自動化ツールとして捉えるのではなく、人間の能力を拡張するパートナーとして活用することである。技術と人材の両面からバランスよく取り組むことで、開発工程の真の革新が実現できるだろう。

続きを見る >