こんにちは、シュプレです。
前回、未経験でエンジニアになるために知っておきたいことという記事で、ざっくりエンジニアについて語りましたが、スキルセットの掘り下げもしていきましょう。
スキルセットとは一言で言っても、いくつかの切り口によって見えてくる形が違ってきます。
今回は、開発工程(V字モデル)の切り口で、エンジニアに必要なスキルセットを考えてみます。
また、この記事でエンジニアという場合、ITエンジニアについて言及します。
開発工程(V字モデル)でみたスキルセット
V字モデルからみた各開発工程におけるスキルセットをみてみましょう。

要求分析・要件定義
顧客からの要求をヒアリングし、課題として抽出する能力が必要になります。
具体的には、コミュニケーション能力、課題から実装へのイメージ力、ロジカルシンキングなどが必要とされます。
またこういった上流工程の担当会社など(所謂「元請け」や「一次請け」と呼ばれる立ち位置の会社)は、全工程のマネジメントする力も求められたりします。

また次の工程の設計も含め、数多くのドキュメント・資料を作成するので、そういった部分の能力も必要かもしれません。
基本設計・詳細設計
要件定義から、仕様を着実に作り込み、ドキュメントに落とし込みます。
スキル的には、仕様把握、ドキュメント作成能力、UML図作成、アーキテクチャとその重要性の理解などが必要です。
セキュリティ上の懸念などもこれより上の段階で見つけておきたいですね。
設計手法はかなりの種類があり、それらの把握も必要です。UML設計などは、業界ではオーソドックスな設計の仕方ですが、書き方・見方がわからければ話になりません。
コーディング
実際にコードを書いて実装するフェーズですね。
プログラミング言語などへの精通はもちろん、アーキテクチャやUMLなどの理解も必要です。
設計から実装(コード)に落とし込むので、設計がUMLで記述されていれば、それを理解していないと、実装に落とし込めないので、設計としての共通言語であるUMLの知識は必要となります。
プログラミング言語で言えば、JavaやPHPなどのサーバサイド言語、フロントエンドのHTML/CSS(厳密にはマークアップとスタイルシート)やJavaScriptなどがありますが、それぞれ担当に応じて習熟している必要があります。
開発を効率化する工夫なども必要です。例えばエディタやブラウザのプラグインを入れたり、静的解析ツールを使いこなしたりして、少しでも開発の生産性を上げる工夫が必要だったりします。
単体テスト・結合テスト・システムテスト・受け入れテスト
単体テストと呼ばれるコードベースのテストからはじめ、ユースケース単位、システム単位でのテストをしていきます。
具体的には、テスト観点、テスト設計、品質マネジメント能力などが必要です。
「何をどのようにテストすべきか」といった観点があるのと無いのでは効率なども違ってきます。効率という点では、単体テストなどは自動化しやすいので、テスト自動化のスキルもあるといいですね。
また、結合テスト以降になってくると、他のシステム担当者とのやり取りも増えてくるのでコミュニケーション能力は必須です。
Web系の開発では後回しにされやすい工程ですが、非常に大事な工程です。
ちなみに、先にテストコードを書いてから、機能のコーディングに入るテスト駆動開発と呼ばれる手法もあったりします。
まとめ

各工程において必要なスキルセットは以上のように分類できました。
コーディング工程においては、クライアントサイドとサーバサイドに区分けできるので、それぞれについてを次回の記事でまとめようかと思います。
コメント