各年次で磨くべきソフトスキルについて


# はじめに

ITエンジニアに求められるスキルは、プログラミングなどのテクニカルスキルだけでなく、ソフトスキルも非常に重要になってきています。ソフトスキルとは、コミュニケーション能力、問題解決力、リーダーシップなど、テクニカルな側面以外で必要とされる能力のことを指します。
本記事では、私自身の経験も交えながら、若手ITエンジニアを対象に、キャリアの各年次で磨くべきソフトスキルについて考えていきます。私も若手エンジニアの立場にあり、実際に仕事を通じてソフトスキルの重要性を肌で感じています。特に後半の内容は、今自分が直面し、身に付けなければならないと考えている課題が含まれています。読者の皆さんの参考になれば幸いです。

なお目安のために大体の年次を書いていますが、個々人の資質やプロジェクトのアサイン状況によって早く進む人も遅く進む人もいると思います。「n年目なのに～～ができている（できていない）」という考えはあまり本質的ではないと思います。

# 1年目: 基礎を築く

ITエンジニアになりたての1年目は、プロジェクトの全体計画であるWBS(Work Breakdown Structure)に従い、自分に割り振られたタスクをこなすことが何より重要です。クライアントと会話し、WBSを引き、日々指示を出すのは上司や先輩たちかもしれませんが、だから新人の存在理由がないわけではありません。各位の尽力によってプロジェクトは成り立っています。あなたの努力や活躍によって少なからずプロジェクトは成否の影響を受けます。では、何を目標に取り組めばよいかというと、まずは「ミスを減らし、安定的に業務をこなせるようになる」ことを目標に据えるとよいのではないかと思います。そのために、具体的には、「報連相(上司・先輩とのコミュニケーション)」と「自走力(主体的な学習姿勢)」を身に着けていくことが重要になります。

## 報連相

### 上司・先輩への適切な質問

プロジェクトを無事に遂行するためには、分からないことや躓きそうなところがあれば遠慮なく質問することが重要です。
新人の頃は知識や経験が乏しいのが当然です。そのため、作業を進める上で必ずつまずくポイントが出てきます。そういった場合に一人で抱え込まず、積極的に上司や先輩に質問をすることで、スムーズに課題を乗り越えられるでしょう。ただ、プロジェクトの暗黙知になっているだけで聞けば10秒で解決することが仕事にはたくさんあります（反対にこうした問題はググっても解決しない）。質問する際のポイントは、「いつ」「何を」「どのように」質問するかです。

- いつ質問するか 
作業を止めたまま遅延させるのはあまり望ましくありません。詰まって自力での解決が難しいと判断した時点で周囲を頼りましょう。

- 何を質問するか 
具体的な作業内容や、分からない箇所をできる限り特定すること。事前に困っている内容が整理されていればいるほど、先輩や上司からの回答は明確になるでしょう。また、この整理の過程で自力解決に至る可能性もあります。

- どのように質問するか
事前に調べた内容と、つまずいた経緯や根拠を示しながら質問する。先輩や上司もまた人間であり、自身の力で整理を試みたという努力の跡が見られる方がより好意的に質問に答えてくれるでしょう。

上手に質問をすることで、作業効率が上がり、成長のスピードも速まります。後々は後輩に同じアドバイスができる存在になれるはずです。
上司の目から見れば、報連相を大切にする人間は、プロフェッショナルとして信頼できる人材です。常にチームの一員であることを意識し、コミュニケーションを密にすることが、良き若手の証になります。

## 自走力(主体的な学習姿勢)を身に付ける

ITの現場では、日々新しい技術や手法が生み出されており、常に最新の知識を取り入れ続けることが求められます。自ら進んで情報収集し、学習を続けるという"自走力"を身に付けることが大切です。
自走力とは、単に技術的なスキルを指すのではなく、技術への関心を持ち続け、主体的に学習し続ける姿勢のことを言います。これはプロフェッショナルとしての基本的な資質とも言えるでしょう。

具体的には、以下のようなことから始めるとよいでしょう。

- 公式ドキュメントやガイドブックを入手し、丁寧に読み込む
- 信頼できる技術ブログやQ&Aサイトを活用し、新しい知見を得る
- オンラインの動画講座などを受講し、実践を重ねる
- 興味のある分野の書籍や資格を取得する
- 同僚の優れたエンジニアに積極的に質問し、アドバイスを仰ぐ

自走力を身につけることの最大のモチベーションは、ITの面白さや奥深さを実感できることだと思います。
新しい技術に触れ、自らその理解を深めていく過程自体に喜びを感じられるでしょう。そして習得した知識を活かして、より高度なモノ作りにチャレンジできるようになります。プログラミングやシステム構築の面白さは、自走力を高めれば高めるほど実感できるはずです。
さらに、幅広い知見を持つことで、自身の仕事の選択肢が広がるメリットもあります。特定の言語やフレームワークにとらわれずに、システム全体を俯瞰的に捉えられるようになり、プロジェクトに貢献できる場面が増えていきます。
このように自走力を高めることで、以下のようなメリットが期待できます。
- ITの面白さ、奥深さを実感できる
- 新しい技術を取り入れ、より高度なモノ作りにチャレンジできる
- 仕事の選択肢が広がり、プロジェクトへの貢献の幅が広がる
- 自身のキャリアを主体的に切り拓くことができる

こうした喜びや可能性を感じ取り、自走力を高める意欲につなげていくと良いと思います。初年次から意識的に自走力を養うことが、その後の飛躍につながるはずです。

# 3年目: チームをサポートする力

3年目頃になると、プロジェクトの中で右と左がわかるようになってきます。先輩や上司が早口で話していた技術の話にもなんとなくついていくことができるようになります。では、そこからどのように自分を伸ばしていくことができるのでしょうか。
自分だけでなくチーム全体がプロジェクトを円滑に進められるようサポートする役割が求められると考えます。
この章では「チームを率いるリーダーシップ」「プロジェクト遂行のノウハウ共有」について取り上げたいと思います。

## チームを率いるリーダーシップ
3年目にもなると、徐々にチームの中核的な存在になってきます。新人(後輩)育成やタスク割り振り、進捗管理など、リーダーシップが求められる場面が増えてきます。自らがチームをまとめる役割を自覚し、それに見合った行動力が必要となります。
新人(後輩)の育成においては、新人(後輩)の持つ特性や課題について正確に把握し、長所を活かし、短所を改善する施策を検討し、新人に伝えていく必要があります。
そのためには、まず、新人(後輩)との信頼関係構築が重要です。ときに仕事の話をし、ときに関係のないくだらない話をするなどして話しやすい先輩であることを伝えていく必要があります。また、自分の話をしすぎずよく相手に話させるように意識すると良いでしょう。思わぬ会話からその人の特性が見えてくることがよくあります。反対に話すことが苦手な人もいます。そうした人に対して積極的に話しすぎると、拾うべきシグナルを見失ってしまうかもしれません。万人に当てはまる万能薬はないので試行錯誤をしつつ、誠実に他者に向き合い続けるしかありません（誤った対応をしてしまった場合はきちんと謝罪しましょう）。
進捗の管理に関しては、基本的なEVMなど進捗管理の技法を習得することは前提として、チームメンバーから報告しやすい存在だと認識されていることが重要です。遅延は隠したいものです。（ひどい例として）遅延したことが怒鳴られるとわかっていれば遅延をこっそりと隠してしまうかもしれません。メンバーが安心して報告できる雰囲気をつくるコミュニケーションの工夫が求められているということです。

## プロジェクト遂行のノウハウ共有

おそらく数年の仕事への取り組みによって、あなたは様々な経験を得ているはずです。コーディングの技法だけでなく、プロジェクト遂行上の暗黙知を多く得ているはずです。「環境構築の際には～～のドキュメントも合わせて読むと理解しやすい」「〇〇についての認識をチーム内で揃えておくと開発がスムーズに進む」などです。これらの情報は技術の本質ではありませんが、ちょっとした生産性の差を生み出します。こうしたノウハウを適切に後輩や新人に継承していくことがチーム全体の生産性を高めるうえで重要です。

また、暗黙知を伝達するだけでなく、その暗黙知をドキュメンテーションし、形式知に変換していく努力も必要です。例えば、ソースコードのレビュー観点を事前にある程度共有できていれば、新人のセルフチェックや相互レビューなどにも使えます。

# 5年目: アジェンダ設定能力

（ここからは「これができていればよい」というより、日々の仕事の中で私の中で身につけたい能力についての分析です。それゆえ具体的でなくふわふわとしてしまっています）。
5年目頃になると、単に与えられた開発タスクを計画通りにこなすだけでなく、そもそも何を解決すべきなのかを考え決定して行く能力が求められているように感じます。
この章では「課題発見能力」「解決策提案能力」「ステークホルダーとのコミュニケーション力」について考えたいと思います。

## 課題発見能力

クライアントのビジネス要件や課題についてより深く理解できるようになっている必要があると思います。クライアントは解決したいテーマや解決すべき課題の専門家であり、その知識を如何に開発に取り込むことができるかが肝要だと考えています。
一方で、クライアントの中で暗黙の了解になっていることやクライアントが自覚できていない課題があるかもしれません。そうした潜在している課題を発見する能力についても鍛えていく必要があると思います。
そのために、現行システムや業務プロセスについて深い理解を得ていく必要があると思っています。

## 解決策提案能力

上記の課題に関して、ITの観点から現実的な解決策を提示できること、解決策の実現に向けたマイルストンの設定能力が求められているように感じます。クライアントの中で自覚できていない課題であればそのビジネスインパクトについても考えられると良いと思います。
また、解決策の実現に向けた要員・コスト面での算段を立てる能力も必要だと感じています。

## ステークホルダーとのコミュニケーション力

上記の課題を見つけて解決策を提示する過程でチームメンバーに対して求められるものとは異なる種類のコミュニケーション能力が必要だと感じています。一つは技術的な内容をわかりやすく説明する能力です。必ずしもITの専門家とは限らないステークホルダーに対して、ITの解決策を理解してもらい、共に前に進む必要があります。自分の中で理解する、開発メンバーに共有する以上の説明力が求められているように感じます。また、相手の立場に立った対話の姿勢をもつことや合意形成を図っていく説得力を求められているように感じます。例えばクライアントワークの現場では、クライアントにはクライアントの社内の承認フローが存在しており、その中でプロジェクトの意義を説明することが求められています。そうした相手側の状況も考えつつ立ち回ることが求められているように思います。

# おわりに
今回は各年次で求められるソフトスキルについて考察してみました。自分も日々不足を感じつつ精進の日々なのですが、皆さんの指針や参考になれば嬉しいです。