「文系からでもSEになれますよ」と言う求人が多い中、実際上手く続けていける人とはどんな人でしょうか。
4年近くIT業界を経験してどんな人がSEやプログラマーに向いているのかを紹介していきます。
SEってどんな仕事
意外と知らない方が多いと思いますが、SEと言っても全員がプログラミングをやっているわけではありません。
ざっくりと一つのシステムが出来上がるまでの流れを載せてみました。
よくIT業界を知らない方がSEと聞いて思い浮かべるのは、一番右端の「製造(コーディング)」のところかと思います。
分類するとこんな感じです。
工程 | 関係する人 |
業務分析 | 上流SE |
システム要件定義 | 上流SE |
基本設計 | SE |
詳細設計 | SE・プログラマー |
製造(コーディング) | SE・プログラマー |
単体テスト | SE・プログラマー |
結合テスト | SE |
システムテスト | 上流SE |
運用テスト | 上流SE |
保守 | SE・プログラマー |
実際にはもう少し登場する人も多いですが、ざっくりこのあたりが抑えられていればよいと思います。
上流SEの担当範囲
上流のSEはコンサルタントに近い仕事でもあることが多いです。
業務分析
システム要件定義
基本設計
詳細設計
製造(コーディング)
単体テスト
結合テスト
システムテスト
運用テスト
業務分析
お客さんの業務はどんなことをしているかを細かくヒアリングをします。
顧客はどんなビジネスをしたいか、予算はいくらかなど経営戦略的なところまでが範囲なので相当な経験と知識が必要です。
上流SEが身に付けておくべきスキルは、各業界の業務や経営に関する知識を得ることです。上流SEはシステム開発を依頼してきたクライアントと直接言葉を交わすことも多くなります。そんな時、相手の業界の知識を全く知らなければ何を言われているのかわからず、仕様書を的確に作成することができなくなってしまいます。
上流SEとは | 仕事内容・必要なスキル・平均年収・激務?より
また、一番最初が揺らぐと間違った方向に進んでしまうため、お客さんも時間をかけて進めていきます。
システム要件定義
その後、システムを作るときに要件をまとめてお客さんと詰めていきます。
要件定義は設計書までは細かく無いですが、どんなシステムの作りかなどを決めます。
開発はSEとプログラマーが行います。
システムテスト
そして、システムテストで要件を満たせているかという視点でテストを行って、お客さんと微調整をしていきます。
運用テスト
最後はシステムに切り替わっても運用できるかを実業務を通してテストします。
この辺りは、顧客の業務がしっかり把握できていること、どうあるべきかが分かっていないと行けないので、知識と経験が必要です。
ここは顧客と一緒に行うことが多いです。
SE・プログラマーの担当範囲
プログラミングをやっているのは、製造(コーディング)のところだけです。
プログラミングだけしかできないと、たくさんある工程で活躍できるのは1つだけです。
ただ、SEレベルになると、設計に関わってくるためコーディングと設計を担当することも増えます。
業務分析
システム要件定義
基本設計
詳細設計
製造(コーディング)
単体テスト
結合テスト
システムテスト
運用テスト
基本設計
ここはSEが行いプログラマーは行いません。
作るのはどんな画面のデザインか、どの業務をどの画面で行うかを考えて設計するのがメインです。
SEはシステムがどう動くべきか、どんな画面だとお客さんは使い勝手が良いかなどを考えながら設計します。
なので、お客さんと直接話をすることも多いので、業務もそこそこ理解していないと話が理解できません。
詳細設計
詳細設計はプログラムをどう作るかを設計するため、プログラマー兼SEレベルの人が行います。
SE的な技術は必要な理由は、システムの仕様としてこの動きは正しいかという視点を持ちながら設計するレベルが必要だからです。
詳細設計も経験が必要になります。
単純なプログラマーは作られた設計書を元にコードを書きます。
製造(コーディング)
設計書を元に、プログラムを書く(コーディング)工程です。
ここでようやく、純粋なプログラマーが登場します。
ただ、プログラマーも間違った設計書や、修正をしながら出てくる設計書を元に難しい処理をコーディングしなければなりません。
なので、大きなシステムを作る場合は、3年は経験がないと開発に携わっても技術的に厳しいです。
単体テスト
単体テストはコーディングを終えた後に最初に行うテストです。
テスト観点としては詳細設計の仕様通りにシステムが動くかをテストします。
単体テストでほとんどのバグやミスは見つかって修正されます。
結合テスト
結合テストは画面が基本設計通りの仕様かをテストします。
単体テストでは画面ごとの機能別のテストですが、結合テストでは画面をまたいで同じデータが正しく更新されているか、登録されているかなどを見ていきます。
保守
システムの保守とは開発が終わってお客さんへ納品した後の対応です。
システムを使っているのもお客さんなので、間違ってデータを登録したり、削除することもあるでしょう。
そんな場合のために、問合せに回答したりします。
また、やっぱりこういう動きにしたいと後からシステムを変更したいとお客さんが思うことも多いです。
なので、その時はシステムの改修(変更)を無料で行ったり、案件として開発をしていきます。
ここはお客さんの業務が理解できていないと、修正したいと相談されたときに話を理解できません。
なので、プログラマー・SEレベルが必要になります。
全員がプログラミングを経験する訳ではない
このようにシステム開発はいくつもの工程に分かれています。
ただ、入社してから数年間、プログラミングを経験できずに会社で過ごしてしまうことだってあります。
例えばこんな例です。
システムエンジニアの仕事として、テスト(システムが正しく動く事を確認すること)がありますが、これもまたコーディングができない人に回される仕事です。どんなことをするのかというと、
「この画面のこのボタンとこのボタンをずっと交互に押し続けて」とか、
「この操作を1000回やりつづけて」とか
「このサイトのボタン全部押してみてどこに遷移するか確認して」とかです。
文系からシステムエンジニアになった私が後悔していること【しくじり先生】より
私も最初の1年半くらいはテストや会社の事務作業をしていました。
事務に回せばいいのになぜシステム部門の人間が事務をしているのかと思っていました。
その間私は一人でプログラミングを独学していたので、途中からは保守に行くことができました。
そこでプログラムの変更、問合せ対応、データ修正などを行っていました。
保守SEになって2年後、私も上流よりの仕事に変わったので、1から開発を行った経験はない状態です。
会社とお客さんの事情も絡んでいると思いますが、がっつりプログラミングを仕事にしている人はそこまで多くはありません。
本当にプログラミングだけがしたいなら、会社があなたを使いたいと思わせるくらいレベルが高くないとだめだと思います。
向いている人
システム開発に携わる人はSEとプログラマーに分かれます。
それぞれ向いている人はどんなタイプか紹介していきます。
プログラマー
プログラミングを仕事にしている人にも2種類あると思います。
1.仕事だからやるしかないという人
2.プログラミングが楽しくて、家でも趣味で色々作る人
1.のように仕事なら何でも仕方なしにやる、またはやっていけるという人はあえてプログラマーやSEを目指さなくても良いかなと思います。
不向きという意味ではありませんが…
2.の人は向いていると思います。
納期に遅れたり、様々な問題が起こって簡単にいかないことも多いです。
なので、そんな忙しくて精神的にキツイときでも一瞬でも楽しいと思える人は仕事に対するモチベーションが高い状態を維持できます。
イメージで言うと、永遠とレゴブロックで何かを作くって楽しんでる人です。
特徴としてまとめてみました。
・何かを作るのが好き
・考えるのが好き
・細かいことが好き
・創造力がある
家にあるレゴブロックで永遠と作れるような人は、何かを作ることで達成感や感動を得やすいタイプの人です。
また、レゴの説明書を見ながら建物を組み立てていくのは、考えながら創造力を働かせる必要があります。
こうした細かいことが好きな人がプログラミング好きのイメージにしっくりきます。
上記に当てはまらない人でも、プログラミングが得意な方はいるのであくまで参考程度です。
SE
SEはお客さんと会話して、システムがどうあるべきかなどを考えることが多いです。
まとめると以下のような特徴があると思います。
・コミュニケーションを取るのが好き
・論理的な考えが得意
・マネジメントができる
イメージで言うと、野球のキャッチャーのような人です。
キャッチャーは試合の合間にピッチャーの調子が悪いと色々と声掛けをしてコミュニケーションを取ります。
また、前の打席でこのバッターはどの球を打ったかを見てどんな球で打ち取るか論理的に考えます。
ランナーがいる場合は、最悪のパターンリスクを考えて保険をかけた配球や守備シフトを指示してマネジメントを行うこともあります。
SEは開発プロジェクトになるとPM(プロジェクトマネージャー)のポジションになることも良くあります。
PMはプロジェクトを決められた期間とコストの中でやりくりするためのマネジメントスキルが必要になります。
また、SEは直接お客さんと話をして細かい話を詰めていくため、論理的に考えたことを伝える必要があるので高いコミュニケーション力も必要なのです。
まとめ:SEの仕事はプログラミングだけじゃない
SEと聞くとプログラミングのイメージが強いと思います。
でも、みんながプログラミングだけをしているのではありません。
私も初めはプログラミングをしたいと思って入社しました。
でも今はプログラミングより上流の工程に携わっています。
お客さんと直接話をしたり、打合せも多いです。
それも今は楽しいですし、どちらかと言えば自分に合っている仕事に感じます。
会社の状況によってはプログラミングができないことだってたくさんあります。
本当は自分に向いていないこともあり得ます。
なので、プログラミングの仕事だけなく、
システム開発のこの工程に自分は向いているのではないかと言う意識を持ちながらSE・プログラマーという仕事に興味を持ってもらえればと思います。
・文系からシステムエンジニアになった私が後悔していること【しくじり先生】
https://makicebu.com/engineer-regret#i-3
・捕手に求められる能力(メンタル面)
http://formation.kbaseball.net/kihon-catcher-abilitypower.html
・上流SEとは | 仕事内容・必要なスキル・平均年収・激務?
https://media.techstars.jp/archives/819