記事を書こうと思ったきっかけ
就職活動をする際「どんな仕事をするのか?」を調べない人はほぼいないと思います。
ただ、ネットで検索をかけても具体的な仕事内容がイメージしにくいことは結構あります。
自分が「ITエンジニアになりたい!」と思って転職活動をしていたとき、一番イメージが湧かなかったのが「システム設計」についてでした。
いまの会社に入社して半年。
新人エンジニアとして設計業務に携わる機会があったので、そこで経験したことを備忘録的に記しておきます。
ITエンジニアやIT業界に興味があって、仕事内容を知りたい方向けの記事です。
ツッコミ所は多々あるかと思いますが、自分なりにイメージをお伝えできたら幸いです。
システム開発における設計とは
「システム設計」と聞いて思い浮かぶものは何でしょうか。
IT業界に興味がある方は、よくあるウォーターフォールモデルの図を思い浮かべるのではないでしょうか。
参考:ウォーターフォールモデルとは アジャイル型開発との違いを2つの視点から紹介
「要件定義」の後、「コーディング」の前の「基本設計」とか「詳細設計」とかいうやつですね。
要件定義は、どんな成果物が欲しいのか、お客さんからヒアリングをするイメージ。
コーディングは、エディタや開発環境を使って文字通りコード(プログラム)を書くイメージ。
これらの工程は少し調べればイメージが湧く方も多いと思います。
では、2つの設計工程では何をしているのでしょうか?
転職活動していた頃のぼくは、なんとなくCADみたいな小難しいソフトウェアを使って図を書いたりするのかな?というイメージでした。
確かに、システム設計を行うためのソフトウェアはたくさんありますが、それはあくまで手段であって目的ではありません。
システム設計の目的を体現する、具体的な業務とは何か?答えはシンプルです。
それは「設計書を書くこと」です。
設計書は、お客さんからの 要望 要件を満たすシステムを作るのに必要な情報が詰まった文書です。
そしてコードを書く時も、テストをするときも作業は設計書を見ながら行います。
つまり、要件定義が終わっていないと設計書は書けないし、設計書がないとコーディング以降の工程に進めないのです。
だからこそ、設計書こそが設計工程の成果物なのであり、
設計書を書き終えることで、設計工程が完了するのですね(超ざっくりした説明)。
基本設計と詳細設計は分けて説明されることが多いですが、実際にはその境界はあいまいです。
また、どちらも「設計書を書く」という点では同じなので、この記事ではその違いには触れません。
設計書を書くとはどういうことか(具体例)
さて、一口に「設計書を書く」と言ってもイメージが湧かないのではないでしょうか。
そして、新人エンジニアに設計書なんて書けるの?という疑問もあるでしょう。
では、ぼくが実際に経験した業務を具体例として書くと以下のようになります。
「設計書を書くこと」
=「先輩エンジニアの指示や資料をもとに、お決まりの形式のExcel文書を記入すること」
どうでしょうか。これなら、大分イメージが湧いてきました。
なんとなく、新人でもできそうな気がします。
先輩エンジニアはお客さんの要望を聞いて、「これとこれとこれを組み合わせたらこーんなシステムができるだろうなー」というのを考えてきます。いわゆる、技術仕様を決める、というやつです。
これは、本当の意味での設計です。流石に知識のない新人にはできませんね。
では、先輩がいきなり設計書を全部書くのかというと、そうではありません。
設計書というのは公式な文書なので、書き方に細かい決まりや制約(会社によって違います)があって、結構な作業量が必要なのです。
そこで、先輩は頭で考えたシステムの仕様を、メモ書き程度の資料(適当なExcelファイルだったりテキストファイルだったりする)にまとめておくわけです。
新人エンジニアであるぼくの業務は、先輩の指示やメモ書き資料を、設計書に「清書」していくことです。
設計書の書式は、過去の案件のものをコピペしたりマネしたりします。
時には、先輩の指示が理解できなかったりメモ書きが足りなかったりするので、その都度確認や質問をします。
そんな感じで作業をしていると、設計書っぽいものが一応出来上がります。
これを先輩に提出→添削してもらうという手順を何回か繰り返すと、無事に設計書が完成します。やったね。
新人のぼくは技術的な理解がある程度深まりますし、
先輩エンジニアは設計書を書く作業そのものに時間をとられなくてWin-Winですね。
実際には設計段階で決まらない細かい仕様があったり、コーディング時にミスを見つけて設計書のほうを直すことがあったりします(無論、よくないです)。
何事も、教科書どおりにうまくいくわけではありませんね。
また、あくまで個人の経験談ですので、現場における具体例のひとつとして考えてくださいね。
まとめ
- システム設計の具体的な業務は「設計書を書くこと」に要約される。
- 新人エンジニアに課せられた「設計書を書く」業務は、「先輩の考えた技術仕様を、決まった形式のExcel文書に清書する」ことであった。
2022/04/19 コメントでご指摘いただいた内容をもとに内容を微修正しました。