うちのエンジニアはなぜやる気がないの?全力で弁明します!!

thumbnail

過去転職活動中色々な企業にお話を聞きにいったり、また実際に会社の中で働いている中でなんども聞いてきた言葉があります。

それは「うちのエンジニアはやる気がない!文句ばっかり言う!」といったエンジニア批判です。

この言葉は本当に多くの会社で聞いてきたので、多くの人が思っているのだと感じます。

私自身エンジニアをずっとやってきましたし、その中でひたすらコーディングをすることもあれば、マネジメントの仕事や企画の仕事をしたこともありました。

その経験から、短絡的なエンジニア批判に対してはどうしても懐疑的になってしまいます。

本当にエンジニアはやる気がないのでしょうか?

今回はエンジニアの立場から全力で弁明します!!

常に新しいことをやっている

エンジニアって常に新しいことをやっています。

新しいことだから予測がつかないし、時間がかかるんです。

新しいものを開発している

もちろんWordpressのブログだけをひたすら何年間も作ってます!みたいな人も中にはいるでしょう。

しかし大多数のエンジニアは全く作ったことのないものを新規開発しています。

なぜならすでに世の中にあるものを作ってもほとんど価値がないからです。

つまりいつまで経っても何も考えずにできる単純作業にはならず、必死に頭を使って行う作業がほとんどなのです。

新しい技術が導入される

技術分野の進歩が激しく、どんどん新しい技術が導入されていきます。

たとえるなら鉛筆で描いてた絵描きが次のプロジェクトでは色鉛筆になって、その次のプロジェクトではペンタブになって、その次のプロジェクトでは3Dモデルになって、その次のプロジェクトではVRになって…といった形です。

それはつまり、鉛筆で仕事してる人は3Dモデルの勉強したりVRの勉強しないとついていけなくなるわけです!

目の前の仕事に集中してないように見える

だから業務外で本買って勉強したり、業務でなんとか新しい技術をねじ込もうとします。

それは一見「目の前の仕事に一生懸命になっていない」ように映るかもしれません。

「プライベートでコード書いてる暇あるんだったら会社のコード書け!」と思われる方もいるでしょう。

しかし自分自身の将来のことを考えると、そういう戦略を取らざるを得ないのです。

逆に言えば勉強時間なくひたすら会社の仕事をやるような環境だと、技術的に遅れたエンジニア組織に繋がるかもしれません。

関連記事
40代エンジニア、居場所なし問題を考える
  • エンジニアは常に新しいものを作っているため、単純作業にできない
  • どんどん新しい技術が出るため、勉強が必要

コーディングは数学の文章問題

それでもよくわからないよ!という方のためにエンジニアの普段の仕事の内容をみなさんの知っているもので例えますね。

コーディングをしてるときの感覚は数学の文章問題をといてる感覚に近いです。

文章の意味を理解して、それを数式に落とし込んで、問題を解いていく必要があります。

そして常に新しい公式とか新しい問題が出てくるので、その公式の勉強をしないといけないし、いつまでたっても頭を使わないと解けないわけです。

集中力と思考力を使う

そのため作業には集中力と思考力がどちらも必要になります。

これも数学の文章問題を考えるとわかるのではないでしょうか?

初めて出会った文章問題を、話しながらとか、他の作業をしながら適当に解くことはできません。

文章をしっかり読んで、理解して、何の公式を使えば良いのか考えて、計算ミスしないように問題を解く必要があります。

それを「いつまでにここまで問題をとかないといけない」みたいな心理的プレッシャーの中でひたすら作業する必要があります。

雑談しながらワイワイ働いている環境でも、エンジニアだけ黙って黙々と作業していることが多いのは、話したくないわけじゃなくて話しながらできないからなんですね。

高いパフォーマンスには休憩時間が必要である

集中力の持続時間は大人は平均50分、最長でも90分と言われています。

ドローギエム・グループでの実験によると、生産性の高い人、そうでない人に比べ休憩を多くとっていたことがわかったそうです。

そして生産性の高いグループは、平均で52分の労働のあと、17分の休憩をとっていたそうです。

なぜかというと、認知能力は徐々に低下していきます。

そのため休憩を挟むことで認知能力を回復させたほうが、結果として生産性が上がるからだそうです。

ですので「私はずっと仕事している」という人たちは、むしろ生産性の低いを主張してることでもあります。

もしくは単純作業など、認知能力をあまり必要としない仕事をしているのではないでしょうか。

ですがエンジニアの仕事は認知能力や集中力を使います。

したがって休憩を挟まないと、生産性が落ちてしまうのです。

これは数学の文章問題を1日中やっているところを想像してみると、わかるかもしれません。

適度に休憩した方が、回答の質が上がりそうですよね。

うるさい環境は仕事がしづらい

集中力を思考力を使うため、うるさい環境だと仕事しづらいです。

エンジニアの仕事は数学の文章問題に近いということは、図書館で勉強している受験生に近い状態と言えます。

もちろんうるさい環境でも勉強できるという人がいるように、うるさい環境でもパフォーマンスの落ちないエンジニアはいます。

しかし多くの人が音楽で音をシャットダウンしたり、静かな環境で受験勉強していたように、うるさい環境下では仕事がしづらいエンジニアは多いのです。

数学の文章問題を解いてエンジニア感覚をつかもう

というわけでエンジニアの感覚を味わいたいのであれば、数学の文章問題を1日中やってみてほしいです。

解けない問題はどれだけ時間をかけても解けません。

そのため「ちょっとこの問題わからないから本買ってこよう」「作業から離れて後でもっかい考えてみよう」となります。

エンジニアも同じで、行き詰まった状態でPCの前に座っていても生産性は低下する一方です。

PCの前に縛りつけることに、意味はないのです。

  • コーディングは数学の文章問題に似ている
  • 作業には集中力と思考力が必要
  • 集中力・認知能力は持続できないので休憩が必要
  • 集中できる環境が必要

かかる時間と質はトレード・オフ

開発にかかる時間と質はトレード・オフの関係にあります

開発にかかる時間を早くするためには、何かを削る必要があるわけです。

たとえばテストコードを書かなかったり、荒いコードを書いてしまったり、あまり精査せずに技術選択します。

つまり例えると?

開発をジェンガに例えると、「10秒以内において!」と言われるのと「どれだけ時間かけても良いよ」と言われるのの違いです。

「10秒以内」だと焦って適当なところから積み上げてしまうのではないでしょうか。

それを繰り返すと、どこを抜いても崩れてしまうような歪んだジェンガが積み上がっていってしまいます。

これがよくいう技術的負債です。

一方「どれだけ時間をかけても良いよ」と言われたら、バランスを保ちやすい形で積み上げることができます。

そのため時間が経っても安定して抜きやすいジェンガに積み上がっていきます。

つまり開発期間をかけると、将来的にも安定したシステムが出来上がるわけです。

短い開発計画を立て、エンジニアを徹夜に追い込むことに、長期的な目線で意味はありません。

開発の速さの裏には失っているものがある

そんな中「とにかく早く出せ!」や「この前こんだけ早くできたんだから今回はサボってるはず!」とか「あいつはもっと早かった!」という目線で捉えてしまうと、どんどん荒い状態でシステムが出来上がっていきます。

そうしてどんどん拡張しづらくなっていって、余計に開発に時間がかかるようになってしまうわけです。

発注する側は「開発の速さ」が見える景色のほとんどになります。

そのためどうしてもそこにこだわりがちになります。

しかしそこにこだわることで失うものがあるというのも認識してください。

  • 開発期間をかけると、将来的にも拡張しやすいシステムが出来上がる。
  • 開発期間が短いと、その裏で失っているものがある。
  • 発注する側は開発の速さだけに注目してはいけない。

そもそも対立するもの

人は失敗の理由を他者に求めるものなので、そもそも対立するのは当然なのです。

何かあるとエンジニアは企画が悪いと言って、企画者はエンジニアが悪いと言います。

人は誰かのせいにして生きていきたいものなのです。

自分が見えない情報は全て思い込みにすぎない

自分に見えない情報は全て思い込みにすぎません。

たとえば他の人がどう思ってるかは、究極的に本人にしかわかりません。

そのため「だれがどう思っている」という考えは常に真実ではなく、自分の頭が生み出した推測に過ぎないのです。

それを真実だとして物事を進めるのは、思い込みに他なりません。

たとえば?

たとえば「エンジニアはやる気がない」と思ったとしましょう。

その根拠はなぜでしょうか?

おそらく「帰るのが早いから」「頻繁に休憩するから」などの理由があがるかもしれません。

なぜなら私たちに見える情報は行動だけだからです。

しかしその行動から「その人は確実にやる気がない」と言えるのでしょうか?

結局のところ誰がどう思っているのかは、推測の域を超えません。

つまり、その全ては例外なく思い込みなのです。

仮に本人が言っていたとしても、建前や状況によって言っているだけで、本当に思っている保証はありません。

本人自体も本当の理由を気づいてない可能性もあります。

ではどうすれば良いのでしょうか。

シンプルに思い込みに対して悩むのは辞めて、確実なものを元に判断すれば良いのです。

  • 私たちに見えるのは行動だけ
  • 行動からその人の考えを推測して、それが真実だと思い込んでしまう
  • 思い込みではなく、確実なものを元に判断しよう!

行動に注力する

自分にできることは行動です。

そして自分に見える確実な情報は、行動によって引き起こされる周りの人・環境の変化、そして自分の気持ちです。

つまりそこだけを注力すれば良いのです。

「誰がどう思っている」ではなく、「こういう行動をとったらAさんはこういう行動を取るようになる」と考えれば良いのです。

おわりに

この記事ではエンジニアに対しての思い込みに関して記載しましたが、本質的にはあらゆる対立は同様です。

エンジニアが営業に対して、「都合の良い契約ばかり結んで開発のこと考えてない!」と怒るようなこともあるでしょう。

くだらない対立にエネルギーを注ぐのは辞めて、前に進むことだけ考えたいですね!


@dorarep
小学生の頃からフリーゲーム作ってました。今はフリーランスでフルスタックエンジニアしてます。