エンジニアになって思ったこと

エンジニアになって一年半くらいになった。一応、会社での自分の肩書きはシステムエンジニアということになっている。

自分がエンジニアになって、世間で思われているエンジニアやエンジニアを目指す人が持っているエンジニアのイメージとしてよくあるものと、実際のエンジニアの仕事がかなり違っているように思ったので、それを、これからエンジニアを目指す人に伝えておきたいと思う。なってから「え?こんなんだったの!?」とならないために。

ただこれは私の場合の話なので、人によって働き方が違うと思うから、当てはまらない人やこの話が必要ない人もいるかと思うけれど、参考までに。

※読者のかたへ
これからエンジニアを目指すかたで、ご自分のケースと違ったなどで、以下の話を読んだことで何かの不利益があった場合、私は責任を負いませんので、これは飽くまでエンジニアになった人の感想の一例としてご覧いただければと思います。

以下、思ったこと。


1. エンジニアの仕事も多種多様

エンジニアの仕事内容の幅がとても広いので、何をやるかによって全然仕事内容が違う。設計をやる人と設定をやる人とプログラミング(実装)をやる人とテストをやる人と、いろんな担当があるから、そのなかで何をやるかによって全然やる内容が違う。開発でも開発の初期から製造、リリース、その後の保守、障害対応までいろんなフェイズがあるので、どの段階をやるかによって全然違う。

よく、エンジニアになるためにプログラミングの勉強をするという話があると思うけれど、確かにそれは必要ではあるけれど、エンジニアの仕事のなかで全くプログラミングしない仕事もいっぱいある。むしろ、プログラミングする担当のエンジニアは、開発に関わるエンジニア全体のなかの一部。その人たちが本格的にプログラミングをやる期間も、プロジェクト全体のスケジュールのなかの一部の期間。実際はその前後がたくさんあって、プログラミングしていない期間のほうが長い。

だから、世間でときどき思われている「ITエンジニア=プログラミングする人」みたいなのは、全然違うと思う。あるいは、「エンジニアになりたい=プログラミングの勉強をする」みたいなのも違う。それはエンジニアの仕事のなかのほんのごく一部だと思ったほうがいいと思う。プログラミングの勉強は必要だけれど、でもその勉強が実際の仕事に活かせるかというと、活かせる類の仕事もあるし、全然活かせない仕事もある。だから、これからなる人は、「ITエンジニア=プログラミング」みたいには絶対に思わないでいたほうがいいと思う。もしプログラミングをしたいのであれば、プログラミングを担当できるポジションでやらせてもらわないといけない。


2. エンジニア以外の知識が必要

これは何のエンジニアをやるかによっても違うとは思うけれど、例えばシステム開発のエンジニアをやるのであれば、それは常に「何かのシステム」であるわけで、それに携わるためにはシステムのことだけではなく、そのシステムが何のシステムであるかによって、そのジャンルについての知識が必要になる場合がある。

例えば医療システムなら医療の知識もあったほうがいいし、金融関係のシステムなら金融の知識が必要になるとか。アプリケーション開発とかもそうだと思う。それが何のアプリケーションであるかによって、そのジャンルについての知識が必要になることがある。アパレル関係で使われるのならアパレルの知識、ヘルスケア系なら身体や健康についての知識、とにかく何の開発をするかによって、その「何」の部分の知識もないといけないことがある。

だから、エンジニアがエンジニアの知識と技術だけ持っていても、それだけだと何かの開発をするときに、その開発するものの分野についての知識が不足している状態になるので、その分野の知識を習得しなくてはならないこともある。だからエンジニアになるとしても、エンジニア以外の知識も必要になることがある。


3. どんなエンジニアをやりたいのか

「エンジニアになりたい」と言っている人を見ることがあるけれど、エンジニアになりたいだけなら、エンジニアを募集している会社を受けて通ればすぐになれると思う。今エンジニアが不足しているんだから、どこかは受かるんじゃない?エンジニアになるにはどうしたらいいのかって、そんなの、「エンジニアを募集してる会社を受ければいいんじゃない?」あるいは、会社じゃなくても「フリーで自分からエンジニアですって言ってエンジニアやればいいんじゃない?」と思う。それだけですぐなれるもの。

エンジニアになりたいということよりも、「どういう類のエンジニアになって何をしたいのか」ということが大事だと思う。なぜならエンジニアの仕事は、ものすごくいろんな種類があるから、そのなかの何になりたいかによってやらなければならないことが違うもの。やりたい仕事のジャンルが確定しているなら、そのための勉強をしてその方面の仕事をさせてもらえるところを受けるかフリーでその類の仕事を請け負えばいいんじゃないの?と思う。 だから、「こういうエンジニアになりたい」とか「○○のエンジニアになりたい」というのは分かるけれど、「エンジニアになるにはどうしたらいいか」っていうのは意味がよく分からない。なりたいならなればいいだけだから。


4. プロになったら趣味よりスゴいことができるわけではない

一般的に、ふつう、どんな職種にしても、趣味でやっている人よりプロのほうがスゴいことをやっているというイメージがあると思う。プロになったほうが技術的にレベルの高いことができると思うと思う。

でも、プロになったからと言って必ずしも趣味よりスゴいことができるわけではない。実際には、技術的には簡単な仕事もあるから。

私はエンジニアになる前、一人で趣味でゲームを作っていたけれど、そのときのほうが技術的には高度なことをやっていた。仕事のほうが、そこまで技術的に難しいことはやっていない。

それは仕事内容によるから、私はたまたまそうだったということであって、もちろん高度な技術が求められる仕事もある。でも、特に高度な技術は求められない仕事もある。

趣味でやるほうが好き勝手に自分のやりたいことをできるから、技術的にもちょうど自分がやり甲斐を感じるような、自分にできる範囲のなかで最大限のことにチャレンジすることができて、常に技術を発揮できるけれど、仕事になると必ずしもそういう自分のスキルにちょうどびったりのことや技術的な成長に繋がるような高度なことをやれるとは限らない。そういうことをやらせてもらえる場合もあるだろうけれど、いつもそうなるとは限らないと思う。というか、そうでないこともたくさんあると思う。

だから、趣味でやっている人のほうがプロでやっている人より技術的に劣っているということでもなく、むしろ趣味のほうが自分の技術を最大限に活かせるとは思う。もしプロとして最大限に技術を活かしたい場合は、きちんと技術を活かせる仕事内容をさせてもらえるところに確実に行く必要があると思う。


5. 必要な適性は論理的思考力以外にもある

よく、エンジニアに必要な適性として論理的思考力が挙げられると思う。実際、入社のための適性テストなども、そういうのを問うようなのが多いと思う。

でも、べつにエンジニアに必要な適性は論理的思考力だけではなく他にもあるから、他の適性を持っている人もその適性を活かせると思う。

私は、わりと論理的に合っているか合っていないか判断したり、ロジックを考えるのは好きなほうだったので、その点では適性があるようだったけれど、実際に仕事でやるとなると、それ以外にも必要な適性はいろいろあることが分かった。それは研修のときに、他の人たちと一緒に一つのプロジェクトに取り組むなかで特によく分かった。

例えば、「データを整理する能力、見やすくする能力」。当たり前のことのように思われるかもしれないけれど、これはとても大切なこと。私は趣味でやっていたときずっと一人でやっていたので、コードが複雑になったとき、ぐじゃぐじゃになっても自分さえ分かっていれば良いような状態でやってしまっていたけれど、人と一緒にやったり仕事で納品したりする場合にはそういうわけにはいかない。そういうとき、きちんと見やすくするとか、散漫になっているものを整える能力、無駄なものを省いてスッキリさせたり、こんがらがっているものを分けたりする能力が必要だと思う。だから、そういう整理整頓の能力がある人も、その面ではエンジニアに向いていると思う。

あとは、「他人から見たとき分かるかどうか、他人の視点に立って考える能力」。先に挙げたのと似たようなことだけれど、仕事で複数の人たちと開発するときには、チームの他の人あるいは自分がそのチームから抜けた後に入ってくる別な人が見ても分かるようにしておかないといけないから、例えば変数名を分かりづらいものにしないようにするとか、何の処理をやっている部分なのか誰が見ても分かるようにコメントを残しておくとか、そういうことに気を遣う必要がある。そういうことについてのルールが予め細かく決まっていることもあるけれど、決まっていない部分についても、常に他の人が見て分かるかどうか気にする能力がいると思う。これは恐らく他の業種でも同じだからエンジニアに限った話ではないかと思うけれど、特にエンジニアの場合、一個でも伝わっていなかったり別な意味に受け取られてしまったりすると、その結果、変更してはいけないところを変更されたりして、全体が動かなくなってしまうという事態にも繋がるから、特に他人との共有に関して意識の高い人が向いていると思う。

あとは「危険性を見抜く能力」とか。うまくいった場合のことは何も考えなくても想像できるけれど、もし何かの要因が重なったときにうまく行かなくなる可能性があってその対策をしておかなければならないような場合に、その可能性を想定する能力。いろいろな場合を想像できて、何かこのままでは危険だという欠陥があるときに、そのことに気づく能力。

あとは「単純なことを正確にやる能力」とか。けっこう淡々とした作業を長時間やらなければならないこともあり、そしてその一個でも間違うと後からエラーになって間違っている箇所を探してまた修正することになって時間をロスすることになるので、できるだけ正確にやれる人が向いていると思う。あるいは間違っても自分で気づける能力のある人。

私が研修のときに一緒にやらせてもらった他の同期のエンジニアは、皆、私とは違う適性を持っていた。でもその全てが、エンジニアに必要な要素だと思った。そのどれもが、エンジニアの仕事のなかで活かせる能力だと思った。私の場合は論理的思考力みたいなものはあるようだけれど、でもそれは、エンジニアに必要な能力の内の一つに過ぎないと思う。

それからここに挙げた能力は、よほどその能力が根本的に欠落しているわけでもなければ、努力で身に付けることができると私は思う。だから、ここにいろいろと必要な能力を挙げたけれど、この中で自分に無いと思う能力があったからといって、エンジニアになれないということは全くないと思う。私の場合は「見やすくする能力、整理する能力」がかなり欠けていたと思うけれど、実際に仕事をするなかで、その能力を付けざるを得ない感じになったので、しばらくしたら前よりかなりその能力が上回っていたように思う。だから、今の時点で無くても大丈夫だけれど、いずれはそれらの能力を付けないといけない、という感じだと思う。


6. 技術よりも根気

どんなエンジニアになりたいかにもよるけれど、自分が思う、エンジニアに向いている人は、以下のような人だと思う。

根気のある人、注意力のある人、考えるのが好きな人、ものを作ることに関心のある人、問題を解決させようとする意思のある人、技術習得が楽しい人。

あとは多角的に見れる人(一つのものを色んな方向性から見て、すべての場合で問題がないか頭のなかでチェックし、ある場合には問題がなくても別の場合では問題があるようなときにすぐ気づけるような人)。

あとは最低限、必要な技能を習得するための学習能力だと思う。

でも技術よりも、根気のほうが必要だと私は思う。上に挙げたなかで最も欠かせないのは根気だと思う。根気があった上での技術だと思う。

一般的にエンジニアになるために必要なものとして、根気みたいなものが挙げられていることもあるとは思うけれど、技術とか論理的思考力とかそういうことのほうがよく言われていて、あまり根気については殊更に言われていないと思う。エンジニアになる人やエンジニアを目指す人には元から根気のある人が多いからかもしれないけれど。つまり最初からあるからあまり意識してそれが言われていないのかもしれないけれど、まず根気が必要というのは言っておいたほうが良いと思う。

実際の仕事になると、かなり単調なことを長くやらなければならないこともあるし、一つの問題を解決させるのにかなり時間がかかることもある。そういうときに、諦めたり途中でへこたれたりしないためには、何よりも根気、持久力のようなものが必要だと思う。

この根気は「やるぞー!!」的な気合いの根気ではなく、淡々とした根気。ただ淡々と冷静にいつも同じ状態を保って、ひたすら黙々とやる、というタイプの根気。無駄なエネルギーを使わず、目の前のことをただずっとやり続ける力が必要ということ。


7. 最初から自分の望む仕事内容ができるところに入れなくても諦めないほうがいい

これは他の業種でも同じことかもしれないけれど、最初から自分の希望する仕事内容ができるポジションに行けなくても諦めないほうがいいと思う。最初は希望と違うことをやっていても、別な仕事内容をやれるチャンスがあったらそのときに移るとか、今のキャリアも活かして別な仕事に移るということもできる可能性はあるから。

もちろん、最初からやりたいことができるところに行けるならそれがいいだろうけれど、でも、そういうところが見つからない場合は、あまり希望する仕事内容にぴったり合うところだけにこだわるよりは、とにかく何かしらエンジニアの仕事をやって、それを足掛かりに希望の仕事に行けるよう努めて、それまでの仕事で得たものを本当にやりたい仕事をやるときに活かしたら良いのではないかと思う。



2020年12月



トップページへ


© 2017 Aida Ai  All Rights Reserved.