私はIT機器メーカーでソフトウェアエンジニアをしているのですが、
ってよく分からない方多いんじゃないでしょうか。
ざっくりですが、ソフトウェアエンジニアってどういう仕事をするのかを紹介しますので、新卒の方やジョブチェンジで新たにエンジニアとして働きたい方にはぜひ参考にしていただければと思います。
目次
メーカーって?
そもそもメーカー系、メーカー企業ってどういうものでしょうか。
ざっくり言いますと、
自社でモノを作って売っている会社
です。
仕事内容
メーカーでのソフトウェアエンジニアの仕事は大きく分けて6つあります
- 企画:新たな売れる製品を考案
- 設計:製品の仕様を決める
- 実装:設計したとおりに製品を作る
- 検査:製品に問題がないかを確認する
- 販売:製品をユーザーや販社に売る
- 保守:製品のメンテナンスやクレーム対応
大企業であれば、どれか一つに従事することになると思います。
中小企業なら、複数を兼任することもあるかもしれません。
もう少し詳細を見ていきますね。
企画
様々な情報をリサーチして、新たな売れる製品を提案することがメイン業務です。
- トレンド
- ユーザーニーズ
- 市場の動向
- 競合他社の分析
- 自社分析
- 世界、国内情勢
- 売上予測
などなど、リサーチ能力や数字を読む力はもちろんですが、説得力のある企画書を書く能力やプレゼン能力も必要になってきます。
どちらかといえば、技術力というよりもマーケティング力が必要ですね。
トレンドが好きな人、数字に強い人、何かを分析して結論を導き出すのが好きな人には
とても向いているポジションです。
設計
製品の仕様を決め、必要な技術、人員、コスト、スケジュールなどを
総合的に勘案して、設計書や計画書をアウトプットすることがメイン業務です。
- 技術調査
- 基本設計(ユーザーへの見え方)
- 詳細設計(プログラム内部の設計)
- コスト算出(必要な人員、機材、ソフトウェア)
- スケジュール立案
- 想定し得るリスクと対策
- 品質確保のための施策
など、いわゆる上流工程を担当する分野です。
ここで仕様バグや見積もり不備が発生してしまうと、
後の工程で手戻りが発生してしまうため、ここの工程は非常に重要です。
上記はいわゆる「ウォーターフォール型」の開発スタイルです。2大スタイルの「ウォーターフォール型」と「アジャイル型」は言葉の意味だけでも押さえておきましょう。従事するプロジェクトによって開発スタイルは全然違ったものになってきます。
なお、他にもスクラムとかスパイラルとかがありますが、これらはその都度覚えればよいと思います。
未経験者であれば、国家資格であるIPA(情報処理推進機構)の情報処理技術者試験
「基本情報技術者試験」「応用情報技術者試験」を勉強すると、体系的に学習できるので、
まずはこの資格を狙ってみることをお勧めします。
IPA 独立行政法人 情報処理推進機構:情報処理技術者試験・情報処理安全確保支援士試験
ゆくゆくはプロジェクトマネージャーとして活躍したい人は、ぜひこの分野で仕事をしてみると良いでしょう。
実装
設計した仕様通りにプログラムを実装する仕事です。コーディング・コードレビュー・テストなどをして製品を作り上げることがメイン業務です。
必要なスキルは、プログラミング能力です。プログラミング言語にはC言語やjava、C#、Python、PHPなどたくさんありますが、必要とされる言語は従事するプロジェクトによって異なります。
組み込みソフトウェアであればC言語が、WindowsアプリケーションであればC#が多い気がしますね。
じゃあ何の言語覚えればいいの?と疑問に思う方多いかと思いますが、そんなに難しく考える必要はなく、自分が入りやすい言語を1つでいいので使いこなせるようになればOKです。どれか1つの言語をマスターしていれば、他の言語を習得することはさほど難しくないからです。
なぜなら、どの言語も似通った部分がかなり多いので、他言語の知識がそのまま生きます。
javaしか知らなくて、従事したプロジェクトがC#だったとしても、仕事をしながら勉強していけば十分通用すると思います。
プログラミングが好きな人は、ぜひこの分野で活躍してください!
検査
作成した製品(プログラム)が仕様通り作られているか、動作にバグがないかをテストし、
世の中に出せる品質かどうかを確認することがメイン業務です。
テストする内容は、ざっくりですが
- 全機能確認
- 組み合わせ確認(ブラックボックステスト)
- 条件分岐確認(ホワイトボックステスト)
- 負荷動作確認(24時間連続稼働など)
- タイミング動作確認(操作するタイミングをずらしてみるなど)
- 使用リソース確認(メモリ使用量、CPU使用率など)
これらを何週か繰り返し実施し、発生したバグがすべて改修されているか?発生しているバグの数が頭打ちになっているか?などを確認して出荷可能なレベルの品質に到達しているかどうかを判断します。
必要なスキルは、テスト技法やテストツール、品質管理・品質保証の知識(QC7つ道具やISOなど)です。
なお、検証作業は単調になりがちなので、単純作業が嫌いな人には不向きかもしれません。逆に単純作業が好きな人やバグの傾向分析をして品質向上の施策を考えたりすることができる人にはとても向いている分野だと思います。
販売
ここでいう販売とは、単に営業をする人ではなく、営業の人と一緒にお客様のもとへ同行し、技術的な難しい話をかみ砕いて明瞭に伝えることで、お客様とのコミュニケーションを円滑にするサポート役がメイン業務です。セールスエンジニアと言ったりしますね。
営業の人は技術的なことはよく分からない場合が多いので、技術トークしやすいように技術の勉強会を開催することも仕事の一つですね。
必要なスキルは、なんといってもコミュニケーション能力です。そしてプレゼン能力。
技術も好きだし、営業にも興味がある!という方はぜひセールスエンジニアを目指してみてはどうでしょうか。
保守
販売した製品に対し、メンテナンスや質問・クレーム対応を行うのがメイン業務です。
サービスエンジニアやカスタマーエンジニアと言ったりします。
必要なスキルは、コミュニケーション力と、自社製品の理解です。
質問・クレームは多岐にわたりますので、細かい部分まで答えられるだけの知識・理解が必要になります。
なお、職務上お客様から怒られることが多いので、メンタルが丈夫な人が向いていると思います。また、お客様の困りごとを直接解決できる点がやりがいにつながるケースが多いです。
直接人の役に立ちたい、困っているお客様を助けたいと思ってらっしゃる方はこの分野に就くと活躍できると思います。
まとめ
いかがでしたでしょうか?
今回は、ソフトウェアエンジニアの仕事6つについて紹介しました。
これやってみたい!これ自分に向いてそうだ!と思える仕事がありましたでしょうか?
もし少しでも興味を持っていただけたら、ぜひソフトウェアエンジニアの世界に足を踏み入れてみてくださいね。