システムエンジニアに必要な素養
知識量
前編の内容と矛盾するように感じるかもしれませんが、そんなことはありません。
狭く深くだろうが、浅く広くだろうが、ITに関する知識が豊かということはそれだけでシステムエンジニアにとっての大きな武器です。
ざっくり簡単に『IT』と括っていますが、それが指し示す知識領域はおそろしく広大です。
なおかつ、日々次々と最新の技術が開発・公表されていきますので、『これだけ知っておけば充分』というラインは一切ありません。
まさに知れば知るほどその広さと深さに眩暈を覚える世界であり、そうであればこそ『知っていること』のアドバンテージは想像以上に大きいのです。
『知っている』ことに加え『やったことがある、使ったことがある』等の実体験が伴うと更にGoodですね。
知識+経験=スキル
かと思いますので、得た知識についてはどんどん触ってみる・使ってみることで自身の血肉にしていくといいでしょう。
ロジカルシンキング
言い換えると、正論理的思考力 ってやつですね。
論理的な考え方のできない人に良いプログラムは書けない・・・というのは何となくイメージできるかと思います。
しかし、システムエンジニアの世界でロジカルシンキングの力が必要とされるのは、何もプログラムを書く時だけではありません。
お客様との打合せ、設計書の作成、開発やテスト・・・等々、あらゆるシーンで必要とされます。
そもそもシステムって何でしょうか?
学術的には『系』であると説明されますが、一般的には『仕組み』くらいの解釈で良いかと思います。
たとえば、自動販売機もシステムの一種であると言えます。
お金を入れてボタンを押せば商品が出てくる・・・そういう『仕組み』のシステムです。
非常に当たり前のことですが、百回買えば百回希望通りの商品が出てくるのは、その自販機がきちんと論理的に設計・開発されているおかげです。
お金を入れていないのに商品が出てきたり、コーヒーのボタンを押したにも関わらず日本茶が出てきたり・・・故障もしていないのにそんな不条理なことが起きたら、その自販機はただの欠陥品ですよね。
そんなの当然でしょ?と思われるかもしれませんが、これが実際にやってみると意外に難しい。
- 何が期待される機能なのか(要件定義)
- どのようにその機能を実現するのか(設計)
- 開発した機能に欠陥がないことをどう証明するのか(テスト)
すべてが不足なく理路整然と行われなければ、お客様の期待に沿った『仕組み』は完成しません。
当たり前と思っていた機能が当たり前には機能してくれない、欠陥品となってしまいます。
しかも予算やスケジュールといった制限付き・・・。
これがシステムエンジニアなら全員もれなく完璧に出来るのか?
悲しいかな『そんなことはない』のが現実です。
ロジカルシンキングが出来ないシステムエンジニアの、まぁなんと多いこと・・・。
私の勤め先にしろ、有名な外部委託先にしろ、
この道のプロですが何か? ( ・`д・´)キリッ
て顔しながら、まともな設計書ひとつ書けないシステムエンジニアなんざ腐るほど見てきました。
しかしロジカルシンキングって、
- どうすれば鍛えられるのか
- どうなれば正解なのか
方法論や目指すべき到達点が曖昧だというのも事実です。
私自身の知識不足もありますが、そのヒト固有の『性格』に左右される部分も大きいので・・・。
調べれば一応それ系の書籍や研修もすぐ見つかりますので、興味がある方は詳しく調べてみるのも良いかと思います。
文章力
個人的には超重要と思っていますが、実際の職場では存外軽視されがちなのがコレです。
システムエンジニアはパソコンに向かってずーっと何かしら開発してるイメージを持たれがちですが、実は 様々な『文書』を作成することの多い職業 です。
- プロジェクト計画書
- 要件定義書
- 設計書
- テスト仕様書
- 手順書
- スケジュール表
- 進捗管理表
- 課題管理表
- リスク管理表
- 報告書
等々・・・。
上記の1つ1つはさらに細分化されたりもしますので、全て挙げようとしたらキリがありません。
もちろん日常的に社内・社外とやりとりするメールもありますし、IT業界には意外と事務的な手続きが多いため『○○申請書』なんてものが上記に追加される場合もあります。
システムにバグ(不具合)があってはダメ・・・ということは、システムエンジニアの方でなくともお分かりいただけると思いますが、バグ(不具合)を生じさせる原因が設計書や仕様書の記載不備によるものだということはよくある話なのです。
- 記載の欠落
- 内容の誤り
- 読み手によって解釈が異なり得る曖昧な書き方
所詮人間が書くものなので凡ミスを完全に無くすことは出来ないのですが、文章力さえあれば3だけは回避することができるはず。
システム開発というものはチームで行う場合がほとんどですから、分かりづらい・誤解を招く・不十分な文章はそれだけでチームに混乱を招き、作業の効率と品質を著しく低下させてしまいます。
そのような文章しか書けないシステムエンジニアは、そのツケを読み手に支払わせているとさえ言えるのです。
しかし、だからといって丁寧さを優先するあまり冗長な文章を書いてもいいのかといえば、そうではないのが難しいところ・・・。
わたし自身の経験談ですが、むかし上司との面談でこんなことを言われました。
いいか。
報告書の内容は、大体3行くらいにまとめろ。
それ以上は読まねーからな?
サバサバした江戸っ子みたいな人だったのでこういうぶっきらぼうな語り口でしたが『必要最低限の内容は含めつつ、できるだけ簡潔に書け』というような趣旨でした。
え?それって1行あたり何文字の前提ですか?
・・・とか、間違っても聞き返してはいけません。
会社組織の中で少なからず経験を積んでいくと、これって確かにその通りだよなーと実感することがあります。
部長だとか役員だとか、年食ったエライ人ほど長文なんて読んでくれないんですよね。(その是非は別として・・・)
これは、相手がお客様であったとしても同じことが言えます。
もちろんその人の性格によるところもありますが、長文の書かれた報告書を持参していっても大抵の場合はチラ見した後に『で?』と聞かれます。(単に老眼なだけって可能性もありますが・・・)
つまるところ 誰にとっても分かりやすい文章を簡潔に書く という・・・毒にも薬にもならないような結論に行き着くのですが、それが如何にシステムエンジニアにとって難しくも重要なことかお分かりいただけたかと思います。
丁寧さと簡潔さ。
大事なのはそのバランスです。
トレードオフの関係にあるこれら2つは、どちらか一方を優先させるというより、状況に応じて双方のバランスを上手く取る必要があるのです。
コミュニケーション能力
これもシステムエンジニアにとって必要な素養としてよく挙げられるものですが、もしかすると学生さんに対してはその意味するものが伝わりにくいかもしれません。
- おれ友達すげー多いし、サークル内じゃコミュ力お化けって呼ばれてるよwww
- 接客業のバイトを通じてコミュニケーション能力が鍛えられました!
前者は論外ですね(汗)。
ここで言う『友達』が意味するものは “仲の良い友人” でしょうし、もちろん多いに越したことはありませんが、多いからといって必ずしもシステムエンジニアに必要とされるコミュニケーション能力があることにはなりません。
後者は “接客業” の内容次第でしょうか。
コンビニやファミレスのバイトで時々イヤな客にあたる・・・程度の話だと弱いです。
システム開発というものはチームで行う場合がほとんどですから、その中における自分の立場がどうであれ、チームメンバーとの円滑な意志疎通は必須です。
- 基本的な報連相(報告・連絡・相談)
- ブレインストーミング
- ぺアプログラミング
- コードレビュー
- 文書レビュー
・・・等を日常的に行う必要があるため、誰かとコミュニケーションを取らないで済むシステムエンジニアはまずいません。
しかも『相手』は社内のチームメンバーだけに限らず、お客様やパートナー企業、場合によっては外国人も含みます。
なおかつ、コミュニケーションを取る『状況』も様々です。
時間的に、精神的に、貴方と相手の双方に必ずしも余裕があるとは限りません。
たとえば今日中に片付けなきゃならない仕事がてんこ盛りの状況下でも、部下や後輩が障害の報告をしにきたら、迅速かつ冷静にその詳細を聞かなければなりません。
たとえばリリース直後のシステムに致命的な問題が見付かりお客様が激おこな状況下でも、これをなだめつつ早急に暫定対応と恒久対応の策を立案・説明し承認を取り付ける必要があります。
つまりシステムエンジニアに求められるコミュニケーション能力とは、噛み砕くと『情報収集力』であり『危機管理力』であり『折衝力』であり『ストレス耐性』であると言えます。
コミュニケーション能力が高いシステムエンジニアは、それだけで問題解決力が高い とも言えるでしょう。
システムエンジニアの中でも、特に『プロジェクトマネージャー』を務める人にとって重要とされる能力ですね。
正直わたし(たいぞう)は苦手とする能力なんですが、上記の意味において本当の『コミュ力お化け』なシステムエンジニアは、端から見てて引くほどスゴイですよ・・・。
仲の良い友人が多いだけの学生さんと比較するのもおかしな話ですが、やはり根本的に彼らとは異なるのです。
慎重さ・几帳面さ
システムエンジニアの仕事内容や必要とされる素養についてググッても、『慎重さ・几帳面さ』に触れているサイトはほとんど見当たりませんね。
おそらく “当たり前すぎる” からだと思いますが、システムエンジニアを目指す学生さんであれば強く意識することをお勧めしたいです。
ざっくり設計し、雑に開発し、片手間にテストしたシステム
・・・の品質が良いわけはありません。
非常に当たり前なことですが、非常に重要なことです。
それなのに、実際の現場ではいい加減な仕事をするシステムエンジニアの何と多いことか・・・。(うちの会社だけ?)
良くも悪くもシステム開発というものはチームで行う場合がほとんどですから、誰かがいい加減な仕事をしても、他の誰かにカバーしてもらえちゃいますからね。
慎重だったり几帳面だったりを通り越して、わたし自身は『神経質』なレベルであることを自覚しています。
なのでチームメンバーが作成したドキュメント等をレビューする際は『あー、絶対オレ面倒くさいやつって思われてるよなァ・・・』と自己嫌悪するくらい細かい指摘をしてしまうのですが、それと同時に
神経質さはシステムエンジニアの美徳
だと思って開き直ることにしています。
だってそうじゃありません!?
先ほどの例えの真逆になりますが、
慎重に設計し、几帳面に開発し、神経質にテストしたシステム
・・・のほうが品質は高いはずだし、お客様にも喜んでもらえるし、何なら稼働後の保守・運用メンバーにとっても有難いはずなんですよ!
ま、まぁ、その性格をそのまんま私生活に持ち込むと、色々とウザがられるってのはありますが・・・ (汗) 。
語学力
システムエンジニアにとって、必須ではないけれど『あったほうが良い』ことは間違いありません。
そういった意味での+1です。
残念ながら現在の日本はIT先進国と呼べるレベルではないため、最新の製品・サービスはその大部分が海外製なんですよね。
だから、それらを用いる際に内部のメニューは基本的にすべて英語です。
モーターショーみたいなイベントがIT業界でもよく開催されているんですが、そこの企業ブースに外国人が控えているシーンも決して珍しくありません。
話しかければ、もちろん丁寧に英語で応対してくれます。
(コロナ渦の現在では、それらイベントの大半がオンライン開催になってしまいましたが・・・)
海外製の製品・サービスを使ってて分からないことがあれば、当然英語で書かれたサイトを調べることになります。
以前、上司にこう言われたことがありました。
技術者たる者、英語なんぞ読めて当然
TOEIC 300~400点くらいの実力しか持ち合わせていない私としては、耳が痛いばかりの苦い記憶です (汗) 。
昔と比べて今はGoogle翻訳などの質がかなり向上したため、英語を読むだけならさほど苦労しなくなりました。
しかし『英会話』となると話は別です。
先述したイベント会場に加え、パートナー企業との打合せ等でも有識者として外国人エンジニアが同席することはよくあります。
そもそもグローバル展開しているSIer企業に就職したら、外国人が同じ社内で働いていることも普通にあるでしょう。
そして新型コロナウィルスが世界的に蔓延して以降、インターネットを通じたオンライン会議の利用が一気に加速したため、外国人エンジニアが同席する敷居は確実に低くなっています。
IT業界の外に目を向けても、社内の公用語を英語に統一している大企業はチラホラありますし、人口の減少&高齢化が進んでいる社会的状況を鑑み、継続的な労働力を確保すべく日本政府自体が『高度外国人材』の積極採用を各企業に勧めていたりもします。
まァそんな中でも依然として苦手意識を持つ日本人は多いわけですが・・・だからこそ英語が堪能なシステムエンジニアはそれだけで大きなアドバンテージを持つのです。
私も何度か海外出張には行かせてもらってるんですけどね。
英語ができないまま現地で右往左往するのは、結構な地獄ですよ・・・。
ちなみに出張へ同行した先輩が自動翻訳機(ポケ○ーク)を持参していましたが、成田空港でひと通り使い勝手を試した後、現地でそれが活用されることは一度もありませんでした(汗)。
まとめ
システムエンジニアに必要とされる素養として、以下の5つ(+1)を紹介いたしました。
- 知識量
- ロジカルシンキング
- 文章力
- コミュニケーション能力
- 慎重さ・几帳面さ
- 語学力
多分に私見を含んではおりますが、わたし以外の現役SEに見てもらったとしても、そう的はずれに思われることはないんじゃなかろうかと。
ちなみにこれらの素養って、客観的には見えにくいものばかりなんですよね。
知識量や語学力は『資格』という形で証明することはできますが、それ以外のものは目に見える形にすることが難しい。
しかし察しの良い方ならすでにお気付きかもしれませんが、上記5つ(+1)の素養が必要とされる職業って、実はシステムエンジニアに限定されないんですよ。
IT業界だけに関わらず、どの業界の社会人であったとしても、少なくとも会社員であるならば必要とされる素養のはずです。
優秀な社会人=優秀なシステムエンジニア
とは限りませんが
優秀なシステムエンジニア=優秀な社会人
には違いありません。
以上、システムエンジニアを目指す学生さんにとって何かしらお役に立てば幸いです。
コメント