システム開発と聞くと、エンジニアがガリガリとプログラミングしているイメージを思い浮かべるかもしれません。しかし実際の開発の現場では、全体の作業の総量に対し、プログラミングは2割程度の作業量でしかないのです。

まだまだ開発の現場を経験したことがないエンジニアの卵にとっては意外な真実かもしれません。それではシステムエンジニアは、その他の8割の時間で何をしているのでしょうか。

プログラミングの工程までに5割の作業が終了している

システム開発は完成までにいくつもの工程があり、プログラミングの工程が始まるころには、全体のうち既に5割程度の作業が終わっていると思ってもらってよいでしょう。

プログラミングの前には大きく分けると要件定義、基本設計、詳細設計のフェーズが存在します。プログラムを組むよりも、これら設計フェーズの方がより多くの時間を費やすのです。

ウォーターフォールモデルだからこそ上流工程に時間がかかる

なぜ要件定義や設計などの上流工程に多くの時間を割くかといえば、現在のシステム開発はウォーターフォールモデルで開発が行われることが一般的だからです。

ウォーターフォールモデルでは、上流の工程に遡って作業をすることは許されません。もし上流の工程に遡るようなことがあっては、大幅に工数が膨らんでしまうからです。逆に言えば、工程を遡ることなく開発を終わらせることができれば、開発工数も最小限で抑えることができる、とても合理的な開発モデルとなるのです。

そして工程を遡るのは、なにかしらの不備が発覚した時です。たとえばプログラミングの工程にて、明らかにバグを生み出してしまうような設計になっていることが分かれば、設計フェーズに遡って作業をやり直さなければなりません。ときには要件定義まで遡ることだってあります。

このようにならないために、できるだけ上流工程で時間をかけて、不具合を生み出さないようなシステムを考え込まなければなりません。よってプログラミングよりも大事な作業となり、より多くの時間を費やすのです。

プログラミングの2割はただの作業です

設計工程が終わって設計書が用意できれば、いよいよプログラマーの出番です。ただしプログラミングの基本は、設計書に起こした仕様をプログラミング言語に翻訳するという作業でしかありません。

もちろんプログラミング能力が低ければ時間はかかってしまいますが、ある程度経験を積めば、プログラミングは大した作業ではなくなってきます。それに近年では人件費の安い海外諸国にプログラミングを外注するオフショア開発も普及しております。

近い将来は日本人がプログラミングを担当することもなくなるかもしれません。だからこそ日本人だからできるプログラマーのあり方も考えていかなければなりません。
※以下参考記事

残り3割はテストに費やす

要件定義・設計で5割、プログラミングで2割の作業量で、残り3割はテスト工程に時間を費やします。

テストの中にも単体テスト・結合テスト・総合テスト・受入テストといったように、さらに細分化された工程があるのですが、作業内容としてはテストケースを作成し、ひたすら消し込んでいくという地味な作業の繰り返しになります。

単体テストは新人エンジニアが担当することも多く、そこまで高度なスキルは必要としないのですが、テストは設計工程と同じくプログラミングよりも大事な工程といってもよいでしょう。それはテスト工程がシステムの品質を保証したり、品質を向上するために欠かせない工程であり、これがあって初めてプロが作成するシステムとなってシステムに値段をつけることができるからです。

テストについては「システム開発におけるテスト工程の基本【実施する意味や要点】」をご覧ください。

 

おわりに

システム開発といっても、実際の現場ではプログラミングをずーっとしているわけではないのです。実際はプログラミング以外の設計書を用意したり、テストを実施したりという地味な作業が多いのも事実。

それでもそうした作業を丁寧に行うからこそ、良質なシステムが出来上がることを覚えておいてください。

 



【X(旧twitter)でも情報発信中】

Xを最近始めたので、フォローしてもらえると嬉しいです(エンジニア界隈の方はフォローバックさせていただきます)! システム開発に関することや、最新テクノロジーのことなど、世のエンジニアにとって有用な情報を発信してます!

"X" @TECH_KEYSYS