ITエンジニア(ソフトウェアエンジニア)を私が目指したときに、就活をしていて気づいたのは近年はどの企業も「技術力がある人を求めている」ということです。
就活やインターンを通して、色んな人と知り合い、仲良くなったりしましたが、就活が上手くいっている方のほとんどは「ハッカソンで賞を取りました」「趣味でこういうアプリ開発しています」「バイト(インターン)でサービスの開発をしています」といったような、日常的にプログラムを書いている人がほとんどです。
理系であれば、学部によっては大学の授業や研究でプログラムをほぼ日常レベルで書いている人もいるかもしれませんが、皆それだけでなく自主的に(好きで)プログラムを書いている人が多いです。
しかし、ただやりたい事をプログラムを書いて実現できる、コンピュータサイエンスの知識が豊富というだけでは企業が求める「技術力がある人」と解離がある、そう私は様々な経験を通じて感じました。実際に上記の経験がほとんどない方でも有名なところから内定貰っている人がいましたし、経験があっても就活があまりうまくいっていない人もいました。
そこで私なりにエンジニアとしての技術力を考察してみました。
この記事は主にエンジニアを目指している方向けに
- 最近技術力が伸びている気がしない
- 技術力をつけて就活頑張りたい
と思っている方のヒントになればいいなと思っています。
技術力とはそもそも何を指すのか
技術力という言葉は抽象的ですし、人によっても意味が変わってくると思います。そこでもっと具体化してみたいと思います。とりあえず多くの人が想像する技術力とは以下のようなことを指すのではないでしょうか。
- 高度な(深い)コンピュータサイエンスの知識を持つ
- 実装したいことがあったときに、プログラムを書いて自分で自力で実現できる。
これは間違っていないと思います。ただこれだけでは足りていないのだと私は考えています。私がさらに付け加えた方が良いと思ったことは
- 課題解決を自分事として考えられる
- コミュニケーション力
の二つです。
課題解決を自分事として考えられる
何かものづくりをするときには基本的に「こういう課題を解決したい」という考えがあるはずです。
企業が展開しているサービスはすべて何かの課題解決(簡単に言えばもっと便利にしたいとか)となっています。エンジニアとして働く場合、そのためのプロダクトを開発するので、課題解決の意識は必要不可欠なわけです。
今回私が重要と考えている「課題解決を自分事として考えられる」というのは、より簡易な言葉に換言すれば「もっと便利にしたいとか、より良くしたいと思って自分も取り組むことができているかどうか」です。
わかりやすくするために具体例を出してみます。
ある人が「会社の公式LINEアカウント作ったから、会社のホームページに公式LINEの紹介ページを作ってほしい。ページのこの辺に公式LINEを追加できるようにQRコードを貼ってほしい」とあなたに頼んできたとします。
課題は「ユーザーに会社の公式LINEの友達追加してほしい」です。
解決方法は「ホームページに公式LINEの友達追加できるようにQRコードを設置する」となるでしょう。
もし依頼されて言われたことをやればOKとだけ考えている人なら言われたとおりに実装して終わりだと思います。もちろんそれでも依頼人からは感謝されるでしょう。
しかし、もし課題解決を自分事として取り組むことができれば解決の部分が変わってきます。
「解決方法は公式LINEの友達追加のQRコードで本当に最適なの?」「ユーザーの気持ちになってみると、QRコードっていちいち写真のアプリ開かないといけないから面倒臭いような…」「友達追加のボタンをクリックするだけで友達追加できるようにした方が良くないか」みたいなことを考えられるようになります。
すると自分から依頼してきた人に「QRコードではなく友達追加ボタンというのがあるので、そちらの方がよりユーザーにとって使いやすいと思ったのですがどうですか?」と提案することができるのです。
こうなると解決方法が 「ホームページに公式LINEの友達追加できるようにQRコードを設置する」 から「 ホームページに公式LINEの友達追加できるように友達追加ボタンを設置する」に変わりました。
雑な例かもしれませんが、このように課題に対してHow(どうやって解決するか)の部分をどうすれば最適になるかを考えられることは非常に重要であると、私自身働いていても感じています。
言われたことだけ出来るエンジニアは必要ない、と厳しいですが企業の方が仰っていたこともあるので、この課題解決を自分事として捉え常に最適解を考える癖をつけるのは大事そうです。
コミュニケーション力
技術職はコミュニケーション力は特に要らない、というような言説をたまに見かけることがありますが、寧ろ技術職こそコミュ力が必要だろうと思います。
働く際には必ずチームで取り組むのでチーム間での意思疎通や、上に挙げた例のような顧客への提案などでは緻密なコミュニケーションが不可欠です。
・相手が言っていることをしっかり聞く力(そこから相手が望んでいることを組み取る力)
・自分が考えていることを正確に伝える力
わからないことがあったら有耶無耶にせず恥ずかしがらずに人に聞く、というのもとても大切なコミュニケーション力だと思います。
こういったスキルはソフトスキルと言われます。反対に純粋な技術に対するスキルをハードスキルと言います。
今回私が言いたいことはエンジニアを目指すとなるとハードスキルにばかり着目しがちですが、ソフトスキルに目を向けてみてはどうでしょうか。ということでした。
ちなみに私も意識して取り組んでいますが。まだまだできていない事も多く日々頑張っています。
技術力をどうやって身につけていくのか
今回技術力を以下の4つに分解してみました。
- 高度な(深い)コンピュータサイエンスの知識を持つ
- 実装したいことがあったときに、プログラムを書いて自分で自力で実現できる
- 課題解決を自分事として考えらえる
- コミュニケーション力
一番大事なのはこれらを身に着けていく方法ですが、上二つのハードスキルに関しては
- 実際に色々開発してみる
- 技術書などで勉強する
といったことで地道に力をつけていくしかないと思います。
反対に下二つのソフトスキルに関しては、今まで意識してこなかった人も多いかと思うので、
- 何か実装に取り組む際に、本当にその方法で良いのか考える
- 意思疎通に問題があると感じたらよりよい方法を考えてみる
といった、思考する癖をつけるように練習してみるのが大事です。
実は就活する上で技術面接(技術に関して聞かれる面接)がある会社で、非常に役立ったことがあるので、これらはエンジニアになるには大事というのは間違いありません。ぜひ普段から意識してみてください。
こういったことをするには、友人を誘って何かアプリでも開発したり、企業でバイトやインターンで開発するという経験が必要なのでおのずとハードスキルも身についていくと思います。色々とチャレンジしていきましょう!
コメント