ハードスキルとソフトスキルの話
自分はこういう言葉を知っていることで、抽象的に物事を捉えることができて、思考が進むタイプです。
カッツ理論などスキルの話は自分のスキルを上げるために咀嚼して色々勉強しました。
フリーランスエンジニアの方にも重要な話だと思います。この記事ではハードスキルとソフトスキルを簡単に説明した後、現在のIT業界で求められるハードスキルやソフトスキルや自分の考えをまとめたものです。
ハードスキルとは
ハードスキルは特定の分野の専門的なスキルのことをいいます。エンジニアなら言語やライブラリを扱って動くものを作ったり、設計したり、バグを取り除いたりする能力です。
ソフトスキルとは
ソフトスキルはコミュニケーションやヒトモノカネや自分自身のマネジメントなど職種に関わらずに必要とされる能力です。
エンジニアはハードスキルを強く求められるので、ソフトスキルが必要だと語られることはありません。
ハードスキル偏重のソフトウェアエンジニア
業界
ただし、最低限のソフトスキルはどの会社でも、どのプロジェクトでも求められてはいます。
しかしながら、IT業界ではエンジニアの採用が熾烈なため、ソフトスキルが多少低くても、エンジニアを管理する側が多少コストをかけることで解決してることが多いです。
例えば、いきなりスケジュール聞かずにスケジュールを考えるために必要な要素をエンジニアを管理する側が洗い出して、エンジニアがスケジュールを作るのではなく、管理側がエンジニアの作業スケジュールを作成したりします。
もちろん、ソフトスキルが一定以上のエンジニアが働いている環境ではスケジュール管理は全てエンジニア側に一切任されます。
ソフトスキルが必要ないわけはない
求められるソフトスキルは会社やプロジェクトによって異なりますが、高度なハードスキルを求められる現場では、高度なソフトスキルを求められることが多いです。
例えば、一般的な業務システムでは、コーディングやテストをする下流工程よりも要件定義や設計をする上流工程の方が必要となるハードスキルは必要になります。コードを書けない人は設計できませんし、テストができない人は要件定義ができません。
そして、要件定義や設計をする人の方が不確実性と対峙することが多く、コミュニケーションやタイムマネジメントなどの多くのソフトスキルを要求されます。
業務システムだけではありません。
とあるシステムで長年運用をしてきたクラウド環境の費用が事業を進める上でネックになっていたとしましょう。
これを解決するにはコンピュータリソースがどのように使われているか調査する能力やそれを再設計しコンピュータリソースの最適化を行ったり、不要な処理を削除するなどし、新設計に移行する能力が求められます。
単純にコードを書くだけしかできないエンジニアよりは格段に高いレベルのハードスキルが求められます。
難易度の高い機械学習のプロジェクトでもそうです。
機械学習プロジェクトでは、分析対象のデータクレンジングや特徴量エンジニアリング、統計分析、機械学習アルゴリズムの知識が求められます。
データサイエンティストやデータエンジニアが分析対象のデータのドメインエキスパートであることは少ないでしょう。そのため、クレンジングを行うにも特徴量エンジニアリングを行うにしても、組織内の誰に何を聞けば良いのかをコミュニケーションの中で紐解いて、手がかりを探っていかねばなりません。
結局のところソフトスキルとハードスキルは両輪なのです。難しい仕事をするにはハードスキルだけでは成り立たせることはできません。
ソフトスキルとハードスキルは両輪
よくコミュニケーション力と技術力がどちらが大事か?ということがTwitterで話題になりますが、どちらか片方だけにスキルが偏ってるエンジニアは、その片方もはっきり言って大したことはできないと言えます。
だからといって、ソフトスキルを磨けと私は思いません。必死にハードスキルを磨いていれば、より高次元のソフトスキルが身についてきます。
ハードスキルが不要とかソフトスキルが不要とか考えないことです。
(この辺りの裏付けはカッツ理論が有効だったりするのですが、また今度の機会に。)
どちらも大事な能力なので、他人が上手くやっていれば真似したり、もっと深ぼって調べてみたりして、どんどんレベルを上げていきましょう。