新人エンジニアとその先輩たちへ、OJTの前にこの本「ずっと受けたかったソフトウェアエンジニアリングの授業」を

2010年4月20日

4月に新入社員として入社した新人エンジニアの方々は、早ければそろそろOJTという形で現場にやってきて、若手の先輩社員が新人の教育担当、あるいはOJTリーダーに任命される時期。

そんな新人エンジニアと教育担当におすすめしたい本を今回は紹介します。

プログラミングテクニックの解説は一切なし

fig

一般にソフトウェアの開発は、顧客と相談して仕様を考え、それを外部仕様書、内部仕様書といったドキュメントに落とし込み、プログラミングを行い、ソースコードレビューやインスペクションを行い、単体テスト、結合テスト、運用テストといった工程を経て完成します。いわゆる「Vモデル」と呼ばれるものです。そしてこれらは1つのプロジェクトとしてマネジメントされます。

こうしてみると、ソフトウェア開発の中でプログラミングの技術が占める割合というのは決して大きくなく、仕様策定や仕様書の書き方、ソフトウェア開発プロセス、レビュー、テスト、そしてプロジェクトマネジメントなど、プログラミング以外にもエンジニアとして知識を身につけ、実践しなければならないことがたくさんあることが分かるでしょう。

ずっと受けたかったソフトウェアエンジニアリングの授業」は2冊構成で、こうしたプログラミング以外に必要とされているソフトウェア開発の知識をまとめて教えてくれます。

本書にはプログラミングテクニックの説明は出てきません。その代わり、プロジェクトマネジメントや開発プロセスの全体像、設計書の書き方、開発プロセスの種類、コードレビューのやり方、テストの実施方法といった説明が詰まっています。

現場を意識したリアルな説明

本書は2冊構成で、1冊目では第2章でウォーターフォールとアジャイルという基本的な開発プロセスの概要を学び、第3章ではシステム提案書と開発計画書の作成方法を、第4章では外部設計書の書き方を、そして第5章では設計のための分析方法、データ中心設計、オブジェクト指向設計といった典型的なパターンを学びます。

内容はつねに現場で使われることを想定して解説されています。第4章の「外部設計と内部設計の違い」から引用しましょう

提案したシステムでよいかどうかをお客様と意識あわせするためのドキュメントが外部設計書です。外部設計書の内容をお客様に説明し、この内容でシステムを作ってよいかどうかをお客様に確認してもらうのです。

2冊目では内部設計、プログラミングとコードレビューの実施方法、単体テスト、結合テスト、そして品質保証の実施方法を学び、またプロジェクトマネジメントとしてPMBOKを解説しています。

「ソースコードレビュの目的」から一部を引用しましょう。

ソースコードレビュは、内部設計の内容が、きちんとソースコードに反映されているかどうかを確認するために行います。ソースコードレビュは、ソースコードを作成し、コンパイルエラーがなくなったものについて行います。ソースコードを作成したらいきなりレビュに入るのではありません。

巻末にはシステム提案書、開発計画書、内部設計書、品質見解、テスト項目表など多くのサンプルが掲載されていて、これを見るだけでも実用価値があるはずです。

本書をある種のベンチマークとして

本書で説明されている内容は教科書的でオーソドックスなものを集めていると思いますが、もちろん本書のやり方が正しく、標準的なものであるかどうかは、会社やプロジェクトごとに見方が異なるかもしれません。本書の内容と違うことをしているからといって、間違ったやり方だと考える必要もありません。

それよりも「その違いはなぜ生じているのか?」という疑問を持つことが大事なはずです。

開発のプロセスやプロジェクトマネジメントについては、多くの会社ではOJTを通して学ぶケースが多いと思われます。しかし現場ではいろんな例外やトラブルが起こるもの。いきなりそれをOJTとして目にすると、何が例外的に起きていることなのか、顧客や自社の都合で独自のやり方をしているのはどこなのか、などを分からないまま、例外的なことを普通のこととして覚えてしまい、異例のやり方を通常のやり方として身につけてしまう心配もあります(いまのIT業界ではいつのまにか異例なことが普通のことになって現場を苦しめている例も少なくないと思います)。

そうした現場と本書の内容をときどき見比べて、両者に違いがあるときに、その理由を考えてみる、あるいは先輩に説明してもらう。そうしたベンチマークのように本書を使うことで、現場の特徴や起きていることを深く理解し、より充実したOJTになるのではないでしょうか。

ずっと受けたかったソフトウェアエンジニアリングの授業(1) ずっと受けたかったソフトウェアエンジニアリングの授業(1)
日本のIT技術者は100万人に達すると言われるが、その半数以上がITの専門教育を受けていない。そんな現状を憂いた筆者が、ソフトウエア・エンジニアリングのエッセンスをやさしい語り口で解説する。全2冊のうち、1冊目である本書は、開発プロセスの大枠の説明から、提案書や外部設計書の書き方などを解説


ずっと受けたかったソフトウェアエンジニアリングの授業(2) ずっと受けたかったソフトウェアエンジニアリングの授業(2)
著者が高知工科大学で実践したソフトウェアエンジニアリングの授業の記録。情報システムの企画提案、設計技術、品質管理、プロジェクトマネジメントというソフトウェア開発の仕事を一貫して理解できるように、平易に記述する。

あわせて読みたい

働き方 システム開発 書評




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本