システムエンジニアとして必要なスキル

こんにちは。

今日はシステムエンジニアに必要なものは何かについて考えたいと思います。
※今回もあくまで僕の考えですので、ご参考までに。

◼️何が必要か

色々ありますよね。
よく言われるのがコミュニケーションスキル。
世の中に出ているものはほとんどが複数人のチーム開発で作られたものと言っても過言ではないのではないでしょうか。
更にソフトウェアとなると受託開発が多く、クライアントが存在します。
納期に間に合わせるためにも、しっかりした進捗管理が必要になります。
それもあって最低限のコミュニケーションスキル、つまり進捗の報告や相談がないとエンジニアはやっていけません。

また、エンジニアとしての専門知識も必要ですね。
プログラミングスキルや設計、試験、マネジメントのスキル。
しかも上記のスキルは、もっと細かい分野(プログラミングなら色んな言語、設計ならネットワーク、プラットフォーム等)に別れて、プロジェクトによって必要なスキルが変わってきます。

一体何が必要なのか、分からなくなってきますよね。
エンジニアになるにはこれが必要!って中々言いにくいんですよね。

◼️本当に必要なもの

その中でも、僕がエンジニアとして必要だと思っている普遍的なスキルがあります。
それは、浸透力です。

え、何それ?って感じですが、僕はこの表現が一番しっくりきています。
順応力という言い方もありますが、それを更に自然に行えるようなイメージです。

エンジニアとして働く限り、似ているような物を作ることはあっても、同じものを作ることは絶対にありません。
時には今までの知識や経験が全く通用しないプロジェクトに入って働くこともあるかもしれません。

そこでいかに素早く知識や技術を取り入れ、そのプロジェクトに浸透していくか、それがそのプロジェクトでエンジニアが活躍できるか否かを決めると言ってもいいと思います。
プロジェクトの初期段階で配属されたなら、そのプロジェクトのキーパーソンになること間違いなしですし、プロジェクトの途中段階で入っても、即戦力として重宝されます。

じゃあその浸透力を高めるにはどうすれば良いのか。
これこそ永遠の課題であり、システムエンジニアという職種が曖昧になってしまう理由だと思います。
なんせ相手は自分の全く知らない知識や技術、はたまた人です。

そんな相手とうまくやっていく方法に正解はないのかもしれませんが、ある程度の対策をとることはできます。
よく耳にしますよね。普段からアンテナを張っておきなさい、と。

自分のやっていることだけに捉われず、広く見渡しておくこと、それが重要なのかなと思います。
もちろん、自分の専門性を高めることも重要です。
しかし、必ず知らないことをやらないといけない時がきます。
その時に少しでも聞いたことがあるというだけで、その知識や技術に対する入り方が全然違います。
その技術を専門としている人が知り合いにいれば尚良いです。
わからないことがあれば、相談してみることができます。

人間知らないものに対しては構えてしまいがちです。
ぐんぐん進んでいける人は入りからして違うのでしょう。

誰しも全部を極めることはできません。
なので、自分の専門性を高めることによってその専門のことで相手が困っている時に手助けし、自分が知らないことはその専門の人に助けてもらうっていうのが一番効率が良いと思います。

書いていて、社会全体でエンジニアが助け合いながら仕事をできたらいいのになと思いました。
それこそフリーランスのエンジニアが増えている理由なのかもしれませんね。

今日のところは以上です。ではまた!

今こそプログラミングを勉強する意義を考える

こんにちは。

今日はちょっと記事風に、プログラミングを学ぶことについて考えたいと思います。
※あくまで個人の意見ですので、こんな考え方もあるんだな程度で参考にしてください。

というのも、今日ツイッターのタイムラインで、
「(自分は)現役SEだけど、プログラミングできてもあまり役に立たない。管理職になるほど使わなくなる」
といった趣旨のツイートを見かけました。

これをツイートした人の真意は分かりませんが、今からプログラミングを勉強してエンジニアになろうとしている人から見れば、
「おいおいマジかよ、じゃあプログラミング勉強するのやめよう」
とか思ってしまうかもしれません。

でもちょっと待ってください。
もう少しよく考えてみましょう。

◼️えらくなるほどプログラミングしないって本当?

これは難しい質問です。
確かに会社の方針を決定するようなポジションや大きなプロジェクトのリーダーになれば、仕事でプログラミングする機会はほぼ無いかもしれません。

その人たちの中にプログラミングの知識がない人がいることも事実でしょう。

会社の方針を決める管理職ならともかく、プロジェクトのリーダーにもそんな人がいるのかと思われるかもしれませんが、います。(少ないかもしれませんが)

要は、そのシステムに必要なものの判断ができればいいのです。
プログラミングはあくまでそのシステムを実現する方法なので、その部分は他のメンバに任せておけばいいことです。

そういう意味ではプログラミングを勉強しなくても、設計さえ勉強しておけば、偉くなれるのかもしれません。

◼️じゃあなぜプログラミングを勉強するの?

確かにプログラミングはキャリアを築くのに必要条件ではないのかもしれません。
ですが、学んでおいて損になることは絶対にありません。

考えてみてください。たとえプログラミングを勉強せずにプロジェクトリーダーになったとしても、プログラマーと関わる機会は絶対にあります。
その時に、プログラミングを知っているのと知らないので、どちらの方がコミュニケーションを取りやすいでしょうか。

もちろんプログラミングを知らなくても上手くプロジェクトを進めることができる人はいます。
でも、下手をすれば無理な要求をしてしまいプロジェクトが炎上、なんてことも。。。
ほとんどのプロジェクトのリーダーはプログラマーを経験していますが、それでも炎上するプロジェクトはあります。
プログラミングを知らない人がプロジェクトを回せば、そうなる可能性はもっと高くなるかも。。
しかもなぜ炎上しているかわからない。プログラマーと衝突してしまう。最悪の展開が待っています。

また、プログラミングはエンジニア以外の人でも、普段の業務の効率化をするのに役立ちます。
仕事でExcelを使う人はかなりいるのではないでしょうか?
その人たちがVBAを少しでも使えるようになれば、かなりの業務が改善されると思っています。

VBAって何?って人は以下をみてみるといいかもしれません。

普段のちょっとした作業でも、プログラミングを使えることによって、やり方や考え方がかなり変わってくると思います。
これがプログラミングを勉強しておいて損はないという理由です。

というか、勉強しておいて損になることなんてありません。
そういう意味では、こんなの勉強しても意味ないよっていうのはナンセンスなのかなと思いますし、それを勉強している人に対して失礼ですよね。

私も歴史が嫌いで勉強しても意味ないなんて思うことがあるので、気をつけないと。。。

◼️迫りくるプログラミングの義務教育化

ここまでは今現在の社会の状況をみてプログラミング学習について考えてきました。

ここではもっと先の未来まで考えて、プログラミングを勉強することを考えていきます。
(ここからが一番言いたかったことです)

今話題のプログラミングの義務教育化や、新センター試験での採用、
世間では、本田圭佑選手がRubyの勉強をしていると話題になりました。
情報社会によるIT技術者不足の解消に向け、日本が着実に動き出しています。

今までプログラミングは「できたらいいよね」でしたが、義務教育となると話は変わってきます。
足し算や引き算ができないと「え、なんで出来ないの?」となるように、プログラミングができなくても同様の反応になります。

今エンジニアではない社会人には考えられないかもしれませんが、プログラミングが「常識」となる時代がやってきます。
そしてこれから教育を受ける子供達は、10年後、20年後、確実にその「常識」を持って社会に進出してきます。

その時、上司となったあなたが「Hello World」のプログラムも書けないとなれば、後輩たちはどんな顔をするでしょうか。
四則演算の出来ない上司についていきたいでしょうか。
時代のせいにしても仕方ありません。それが彼らの「常識」なのですから。

プログラミングは突き詰めれば奥が深いですが、少しプログラムを書くぐらいであれば、そんなに難しいものではありません。
今の内に何としても学んでおかないと、という気になりませんか?

余談ですが、今後はおそらくクイズ番組などでもプログラミングの問題とか出てくるんじゃないでしょうか。
それほど当たり前のことになると感じています。

ということで、使わないからと言ってプログラミングを勉強しない理由にはならないという記事でした。

長くなりましたが、思っていたことが書けて良かったです。
ではまた!