エンジニアにおけるソフトスキルの重要性
こんにちは、うえすぎゆうきです。
私はこれまで5年間Webエンジニアとして働いてきましたが、その中でエンジニアのソフトスキルの重要性を痛感する場面が何度もありました。
ソフトスキルとは、問題解決力や判断力など、職種や業種を問わずに必要とされる汎用的なスキルのことです。一方、例えばPythonのコードを書くスキル、AWSでインフラを構築するスキルなどはハードスキルと呼ばれたりします。
もちろんエンジニアとして活躍していくためにはハードスキルも鍛えていく必要がありますが、特にIT業界では技術の進歩が早く、ある特定のプログラミング言語やフレームワークの知識を身につけても陳腐化してしまいやすいという特性があります。
しかし、ソフトスキルは一度身につけると一生物の武器になる汎用性の高いスキルなので、特にキャリアの初期で磨くことでずっと活用することができます。
この記事では、特に自分が大事だと思った3つのソフトスキルについて実例を交えながら紹介します。
1. コミュニケーション能力
一言でコミュニケーション能力といってもさまざまな意味がありますが、ここでは「相手の気持ちや考えを想像しつつ、自分の気持ちや考えを伝える能力」と定義したいと思います。
論理的に会話することは大事ですが、相手の情緒的な面を尊重することも重要です。特に技術に関する会話であれば「技術的・論理的に正しければ、それでいい」という態度のエンジニアもいなくないですが、そういった態度だとチームワークに支障をきたす可能性が高いです。
これまで見てきた、コミュニケーションが得意なエンジニアの行動の例としては以下のようなものがあります。
コードレビュー時に、自分が書いたコードの意図や機能を丁寧に説明する(口頭・文章・動画などで)。
プロダクトマネージャーと仕様の機能を検討する際に、技術的観点だけでなく、ユーザビリティの観点や営業的観点も踏まえて意見を言う。
チームメンバーの良い点に気づいたらすぐに共有する。ネガティブなフィードバックも、適切なタイミングで伝える。
いずれの例も、自分の考えを一方的に伝えるのではなく、相手のことを思っての行動でした。
2. 問題解決能力
私たちがプロダクトを通して実現したいのは、ユーザーの課題を解決するということです。コードを書くことは、課題解決の方法の一つにすぎません。
またユーザー自身も課題に気づいていない場合があります。そんな時に、言われた内容をそのまま技術的に解決しようとするのではなく、もっと多面的に捉えることでよりよい解決法を見つけられる場合があります。
例えば僕が開発を担当していた案件において、お客さんから「ページ内にある、とある文字を含んだ要素を見つけられる機能が欲しい」と言う要望をもらったことがあります。
その要望をそのまま捉えると、検索の機能を新規で実装することが解決策になりそうですが、それでは工数が膨らんでしまうし、お客さんのやりたいことに対してオーバースペックな機能になると感じました。
そこで、その時はブラウザに組み込まれている「ページ内検索機能」を使うことで代替できませんか?と提案してみたところ、確かにそれで十分そうだ!という話になりました。結果として、新規開発をすることなくお客さんの要望を満たすことができたのです。
もちろん、場合によっては他の手段が正解の時もありますが、どんな時でも手段にとらわれずに多面的に問題をとらえて解決策を考えることが重要だと思います。
3. リーダーシップ
チームで開発を行う場合、複数のエンジニアで議論をしてより良い案を検討することは重要です。しかし、それと同じくらい、誰かがリーダーシップを持ってチームを引っ張ることが効果的な場面もあります。
私がかつて所属していたチームでの話です。そのチームで開発していたプロダクトのコードが古くなり、負債になりかけていました。どのエンジニアもコードを新しく書き直した方がいい、と頭では思いながらも、新規開発と並行して古いコードを書き直すのは大変な労力だということもわかっているので、なかなか踏み出せずにいました。
そんな状況で、一人のエンジニアが「まず自分がある程度までコードの最新化を行うので、そこで得られた知見を踏まえて残りの箇所は分担してすすめましょう!」という提案をしてくれ、実際にその手順で進めることになりました。そして、そのエンジニアがリーダーシップを持って進めてくれたことで、開発を止めることなくコードの最新化を終わらせることができました。
時にはリーダーシップを持ってえいやで進める胆力も大事だと感じる出来事でした。
ところで、どうやってソフトスキルを磨けばいいの?
インプットとアウトプットを繰り返すのが良いのではと思います。特に、書籍を読んでその内容を実践していくのがおすすめです。
検索すれば良い本は色々出てくると思いますが、僕のおすすめは「エンジニアリング組織論への招待」です。
エンジニアリングというものを抽象的に捉え直し、組織としてどのように立ち向かっていくべきかがわかりやすく書かれています。気になった方はぜひ読んでみてください。
おわりに
エンジニアのソフトスキルの重要性について書いてみました。言うはやすし、行うは難しかと思いますので、少しずつ意識して実践できると良いのではと思います!