どんな仕事にも「必要なスキル」「求められる行動」というものがあります。
例えば、営業や販売職であれば「商品を売る」というスキルが必要です。顧客に「商品を買う」という判断に至ってもらうためには、話を聞いてもらうためのコミュニケーションスキルや商品知識、商品説明のスキルも必要となります。ときにはクレーム対応をすることや無理難題を言われることもあり、対応力や忍耐力やが必要になることもあるでしょう。
また、併せて顧客へアプローチを行うために積極的に話しかける、コンタクトをとるという行動が必要になります。
このように、エンジニアにも「必要なスキル」「求められる行動」があります。今回は、私がこれまで多くのエンジニアと仕事をし、彼らを見てきた中で「こんなスキルや行動はエンジニアに必要だ」と思う内容を私なりにまとめてみました。
これからエンジニアを目指す方も、現在エンジニアとして活躍されている方も、これからどのようなスキルを伸ばしていけば良いのか、どのような行動をとれば良いのかという点で、少しでも参考になれば幸いです。
エンジニアにとって必要なスキルは多々ありますが、「このスキルがないと業務が成り立たない」というスキルは以下の3つです。
それぞれ、詳しく説明していきましょう。
ひと言でエンジニアといっても「AI」「データサイエンティスト」「Webサイト開発」「ネットワーク」「サーバー」「組み込み」と職種は様々で、それぞれ必要な要素技術が異なります。フェーズごとに必要な内容は異なりますが、このテクニカルスキルがなければ業務ができません。
開発系、インフラ系で最低限必要となるスキルを下記に示すます。いずれか1つは自身の領域として保持しておきましょう。
【開発系】・プログラミングシステム開発に用いる言語は、案件や開発領域(Webアプリケーション、業務システム、スマートフォンアプリケーション等)によって異なります。また、WebサイトやWebアプリケーション開発では、画面に映る外観などユーザーの目に触れる部分の開発を行う「フロントエンド」と、ユーザーの操作によって異なるアプリケーションの動的処理やサーバーで扱うデータの管理に必要となるプログラム開発を行う「バックエンド」に大きく分けられます。それぞれ異なる言語を利用したり、スマホアプリ開発ではOS毎に異なる言語を利用したりします。(例)・Webシステム フロントエンド:HTML、CSS、JavaScriptなど バックエンド:PHP、Python、Ruby、SQLなど・スマホアプリ iOS:Objective-C、Javaなど Android:Java、Kotlinなど
その他にも、パッケージ製品の導入、カスタマイズにはそのシステムの仕様の理解や利用されている言語が必要になります。扱える言語が多いほど仕事の幅は広がりますし、開発系の業務ではプログラミングスキルは必須となります。
【インフラ系】・ネットワークネットワーク製品にはルーター、スイッチ、ファイアウォール、ロードバランサーなど様々な種類があります。ネットワーク技術の概念に加え、シスコやヤマハなど各種ベンダーのネットワーク製品を扱うスキルが必要になります。・サーバーWindows、Linux、UNIXが主流で、どのOSが求められるかは企業によって異なりますが、サーバーを扱う際に必要なスキルなのでいずれかは必須です。それに加え、近年はクラウドサーバーが主流となので、AWSやAzureといった主要なクラウドサービスの知識も必要になります。
また、サーバー上で動作するプログラムを組むこともあるため、バッチファイルやシェルスクリプトなども身につけておくと仕事の幅が広がります。
コミュニケーションスキルは他者と意思疎通を上手に図ることができる能力で、相手に理解してもらえるように伝えること、相手の意図をくみ取ることの2つに分けられます。
エンジニアは毎日パソコンに向かっているイメージが強いと思いますが、実際は日々顧客や関係者と様々な手段でコミュニケーションを取っています。例えば、システム要件を決めるためのヒアリング、仕様の提案、開発内容の指示、進捗確認と報告などが挙げられます。また、トラブル報告などでは、コミュニケーションの質がその後の業務にも影響を与えます。他にも各種ドキュメントを作成することが多いため、読み手に分かり易い資料を作成するスキルも必要です。
たとえコンピュータに関する知識や論理的思考能力が高かったとしても、コミュニケーションをとる相手のレベルに合わせて分かりやすく伝えることができなければ意味がありません。そのため、エンジニアにはコミュニケーションに必要な資料を作成する業務を含めたコミュニケーションスキルが必要になります。
論理的思考とは、道理や筋道に乗っ取って思考を巡らせて結論を導くことができる能力で、複雑な要件から、最適なシステムの仕様や設計を導き出すために必要です。クライアントからの要望を受けつつ、コスト・性能の面などを考慮し、最適な仕様を導き出しています。
そのためには、1つ1つの入力項目、データについての性質を理解してデータの使用方法を検討し、入力時の画面はどのような画面が適しているか、入力時はカナ入力、英数字入力なのか、処理速度は足りているのかなど様々なことを考えなければなりません。これらを考える際に必要なのが論理的思考です。
システムは「AだからB」という、その仕様を決めた理由が必ずあります。それらを理解しつつ仕様を決めていかなければならないため、論理的思考はエンジニアに必要なスキルとなります。
続いて、エンジニアに求められる行動についても触れていきます。ここでは、私がこれまでマネージャーとして自身で体験し、必要だと感じたことに加え、他の組織運営に関わる方々や実際にエンジニアの方々と意見を交わし、必要と感じたものを挙げています。
様々な技術に対して常に興味を持つことは大切なことです。新たな技術やプロダクトなどに興味を持ち、アンテナを広げ様々な情報に触れることを忘れないようにしましょう。
世の中の技術は目まぐるしい速さで日々進化しています。顧客や市場ニーズに合わせて技術革新のスピードも加速しており、製品のライフサイクルが短くなっている傾向があります。そのため、その進化に取り残されないように、新しい技術を習得する努力を怠ってはいけません。
もし、わからないことがあったとき、詳しい人に聞けばすぐに解決するかもしれません。ですが、人に聞いて知ったことより、自身で調べて理解したことの方が人は記憶に残ります。わからないことがあってもすぐ人に聞かず、まずは自分で調べることを習慣づけましょう。ただ、調べ続けることは大きく時間を取られるため、場合によっては本人の成長にマイナスに作用することもあります。自分自身で調べるところと人に聞いてみるところの線引きも大切です。
若手社員から先輩や上司に対して「話しかけて良いタイミングなのかわからない」「質問しづらい」という声をよく耳にします。エンジニアはパソコンと向き合って業務をしていることが多いため、相手がどんな作業をしているのか、また忙しいのかわからず、声をかけづらいかもしれません。しかし、わからないことや聞きたいことがあるときはどんどん質問するようにしましょう。
「失敗は成功のもと」ということわざがあるように、失敗はつきものです。そして、人は失敗したときに多くの学びを得ます。同じ失敗を繰り返さないためには、失敗した原因を考え、改善案を出すことでより成長につながっていきます。誰しも失敗することはあり、それらを周りに伝えることで他の人が同様の失敗をする確率が格段に下がります。私は失敗のコストは教育に必要な経費であると考えています。皆が失敗を語れる文化ができれば、多くの失敗はなくなっていきます。
ミスに気付かないまま作業が進んでいき、最終段階で全体的に修正になるととても大変です。そのため、作業が間違った方向に進まないように、節目節目で確認することが大切です。また、本番環境などで作業する際に誤った設定を入れてしまうと、システムがストップしたりと大きな影響が発生します。大事な作業、影響が大きそうな作業を行う際は確認を怠らないようにしましょう。
技術の進化に合わせて、エンジニアのキャリアにも多様なキャリアパスが存在します。自身がどのようなエンジニアになりたいのか、何を成し遂げたいのかなどのイメージをしっかり持つことで、現在の自分とのギャップを把握し足りない部分を補うことが可能になります。そして、その将来像を先輩や上司に共有しましょう。将来像に必要な経験を得られる業務を優先的に携わらせてもらえる可能性が高まるからです。声に出すことで周りからイメージを実現するためのサポートを得られることもあるので、自身だけに留めずに共有することが大切です。
今回はエンジニアに「必要なスキル」「求められる行動」について紹介しましたが、いかがでしたか。IT人材不足が叫ばれる昨今ですが、技術は日々進化しているので、たとえエンジニアでも、努力をしなければ社会に新しい価値を提供することは難しくなってしまうかもしれません。せっかくエンジニアという道を選んだのであれば、企業や周りの方々から求められる人材になりましょう。IT業界では自発的に行動できる人が重宝されます。
エンジニアに必要なスキル、求められる行動を知っているか知らないかで圧倒的な差がついてきます。エンジニアとして成長するために、目の前の業務に追われて忘れてしまいがちですが、好奇心や向上心を忘れずに自身のイメージする将来像に向けて日々の努力の積み重ねが大切です。
今回紹介した内容が、エンジニアの皆さんのキャリア・スキルアップの一助になれば幸いです。