僕は、大学院を卒業してからシステムエンジニアとして7年働きました。
大学や大学院では、バリバリの理系でした。
コンピュータ関係の学部だったので、新卒を募集してくる企業はほとんどがシステム開発を行う企業だったんです。
そんなわけで、僕はそのような会社に入り、システムエンジニアとして働きました。
そして、7年働いてみて思いました。
「システムエンジニアは別に理系出身である必要はない。むしろ文系の方がいいのではないか?」と。
今回は、なぜそのようなことが言えるのか、説明したいと思います。
基本的な知識は会社に入ってから身に付けられる
理系の学科出身の場合、大学でプログラミング言語という、コンピュータシステムの中身を記述する言語を学ぶ場合があります。
そのため、システムエンジニアをする場合において有利と思われるかもしれません。
しかし、プログラミング言語は、会社に入ってから研修で学ぶことができます。
また、大学でプログラミング言語を学ぶ場合、自分がやっている研究でプログラミングをするのが目的であることが多いです。
そのため、大学では研究に特化したプログラムを作ることが多いです。
一方、仕事で作るプログラムは、大学で行うものと方向性が異なります。
それは、大学の研究というのは、まだ世の中で普及していない実用化するために行うものが多いからです。
しかし、仕事というのは、すぐに世の中で役に立って、利益を生み出すことができることをします。
よって、大学では世の中で一般的ではない内容のプログラミングを行います。
しかし、仕事ではすでに世の中で一般的になったプログラミングを行います。
そのため、大学でいくらプログラム言語をやっていたとしても、仕事面ですぐに役に立つ経験にはなりにくいです。
よって、大学でプログラミング言語をやっていない場合でも、問題ありません。
文系の学科卒の人も普通にいる
実際、僕が勤めていた会社の上司に文系の学科を卒業している方がいました。
上司に文系卒の人がいるということは、長い期間その会社に勤め続けていたということになります。
このことからも、システムエンジニアは文系卒の人でも問題ないということがわかります。
SEの仕事はプログラムを書くことだけではない
システム開発の主な流れとしては、以下の通りです。
1. 要件定義…システムを利用するお客様が、どのような機能を求めているのか確定します。
2. 基本設計…要件定義で決定した機能を、どのようにシステムで実現するか設計します。
3. 詳細設計…基本設計に基づいて、具体的なシステムの細かいところまで決めていきます。
4. プログラミング…人間が見てわかる詳細設計を、コンピュータが理解できるプログラミング言語で記述します。
5. 単体テスト…詳細設計で記載した内容が、きちんとプログラミング出来ているか確認します。
6. 結合テスト…基本設計で記載した機能が、きちんと実現されているか確認します。
7. 総合テスト…要件定義で記載した要件が、きちんと実現されているか確認します。
システム開発やシステムエンジニアって聞くと、「プログラムを書いている人」という印象を持たれることが多いと思います。
しかし、上記の流れを見てみると、プログラムを書くのは4.のプログラミングだけです。
実は、システム開発は大部分において、プログラミング以外の作業が占めます。
システムエンジニアはプログラミング以外に、お客さんとの打ち合わせや、設計書の作成、テストなどといったことをしています。
プログラムを書くこと以外のこれらの作業は、理系の大学や大学院でやる機会はあまりありません。
そのため、理系でも文系でもあまり差はありません。
むしろ、文系でもレポートを書いたり論文を書いたりと、文書を書くことが多いです。
そのため、そういった経験は設計書を書くところで活かすことができます。
SEは全体の流れをつかむ力が必要
規模にもよりますが、システム開発は短くて3ヶ月、長くて1~2年という期間で行っていきます。
先程説明した1. 要件定義から7. 総合テストまで、1つ1つのステップに時間がかかります。
そのため、全体ではさらに時間がかかってきます。
そして、それぞれのステップは密接に関わっています。
例えば、前のステップで設計した内容を、テスト行程で確認するなどといった具合です。
この長いスパンで、計画を立てて物事を進めていくというのは、まるでストーリーのようであると感じられませんか?
このような、時間の流れととも移り変わっていく作業を、流れを意識して進めていくのは、歴史や物語といった分野が得意な文系の方が向いているのではないかと思います。
SEは全体を見て人をまとめる力が必要
システム開発は、ほとんどの場合チームで行います。
なぜなら、たった一人で作ることができる規模のシステムは少ないからです。
そのため、必要な人員を集めて、指示を出すことが求められます。
指示を受けてプログラムを書く人は、「プログラマー」です。
その一方、お客様の要望に沿って、人を集め、指示を出してシステムを作り上げるのが「システムエンジニア」なのです。
人に指示を与える立場の場合、「プログラムを作る」という、部分的な作業にとらわれてはいけません。
常に全体を見て、適材適所人員を配置していく力が必要があります。
このような能力には、物事を俯瞰(ふかん)で見るような、高いところから見下ろして全体を眺める力が必要です。
僕はこのような力は、地理の勉強が活かされると思います。
地理の勉強は、まさに高いところから、どこに何があるか理解することができるからです。
地理が得意なのは文系なので、これもやはり文系に利があると思います。
まとめ
ここまで説明してきたように、システムエンジニアの仕事は、文系の考え方が有利になることが多いです。
文系の方で、システム開発に興味がある方は、是非検討してみてください。
最後までお読みいただき、ありがとうございました。