👌

【ポエム】エンジニアは性格悪い云々に対するエンジニア視点の思考共有

2025/03/10に公開

はじめに

エンジニアは性格が悪い云々というツイートがタイムラインに流れてきたので、それに対するエンジニア視点の思考回路を非エンジニアの方向けに書いてみようと思います。ただあくまで私個人の私見です。とはいえ、同じような考えのエンジニアの方も一定数いると考えてます。

また、以下の前提になります。

  • 正直個人的にどうでも良い議題なので時間取って網羅した記事ではなく、ぱっと思いついた程度の書き殴りになります(たまには話題に乗るだけの記事も書いてみようかなという試み程度です)
  • 元ネタは「エンジニア」という括りでしたが、幅広いので「プログラマ(プログラミングする人)」視点で書いていきます

プログラマ(サンプル数1 = 私)はどんなこと考えながら日々の仕事をしているか

プログラマのお仕事は、プログラミング(コンピュータへの指示出し)です。
そして、コンピュータというのは、指示されたことはしっかりやってくれますが、人の心を読んでよしなには行動してくれません。

1つ具体例を挙げると、例えば遠くの物体を運んできてくれるロボットを開発する例の場合、

上流のふわっとした要件段階だと、「あそこまで歩かせてあれ取ってこっちに持ってきてほしい」くらいになりがちですが、実際にロボットに対してプログラミングをする際には、「どの程度の速度で歩いて、ロボットのどの部分に物体を持たせて、自分とどの程度離れた距離まで運ばせるか、そして運んだ後は音声を出すのか何かしら挙動をするのか」あたりまでをロボットに実装する必要があります。

ここがミソだと思っていて、つまりコンピュータに指示出しする際は、1から100まで指示出ししないと期待通りに動かない可能性が高いのです(でもこの辺は今後AIの発展で上手くいくかもしれない)。

コンピュータのこの挙動は仕方がないとして、ではプログラマはどうしないといけないかというと、当然1から100まで指示しないといけないことになります(某構文みたいになった)。

ということは、プログラマは1から100までの仕様を把握しておく必要があることになります。

この前提のもと、起きうるケースを考えてみます。

(1) プログラマが採決権を持っていて(例えば社長がプログラマ)、責任を自分で取れる場合
社長と書きましたが、個人開発などでもこれに該当します。
要は自分がすべて決めて良い立場の場合、最初の要件定義が多少あいまいでも、プログラミング時によしなに実装できるでしょう。
ただ一般的なお仕事の場合は、このケースはあまり多くないでしょう。

(2) プログラミングより前段の上流が1から100まで決めてくれる場合
この場合は、プログラマは言われた通りの1から100までを実装するだけなので、分かりやすいです。

(3) プログラミングより前段の上流が1から100まで決めない場合
この場合は、さらに以下に分かれると思います。
(3-1) 未定義の部分はプログラマがよしなに実装して良い場合
これがまたプログラマの判断が難しくて、「どれをよしなにやって良くて」「どれがよしなにやっちゃ駄目なのか」という問題になりがちです。場合によっては損害賠償の話にまで発展してしまいます。

(3-2) プログラマから上流工程の方に要件を細かく決定してもらうように依頼する場合
おそらく元ネタがこのケースです。プログラマの感情的には、上記3-1に書いたように、どれがよしなにやって良くてどれがよしなにやっちゃ駄目か判断するのが面倒(≒ 1つずつ確認取ってたらそれこそ工数かかる)なので、いっそプログラマが自分で判断せずに上流の方に返信して決めて頂くケースですね。

この中でどれが正解というものはなく、組織やフェーズによると思っています。

例えばスタートアップでとりあえず最速リリースをしたい場合で、今時点で多少の問題が起きても大したことにならないという判断ができるのであれば、上記(3-1)を採用して、その際に事前に社長あたりから「なんかあっても責任は自分が取るから最速でやってほしい」という言質が得られているという場合もあったり。

一方で大企業などで、ちょっとした認識齟齬が大問題に発展する場合であれば、上記(3-2)を採用したり。

あるいは雇用形態でも変わってくると思っていて、例えば自社開発の正社員は割と自由にできがちですが、一方で業務委託の方は正社員の方よりかは責任に問われやすく、そして無理して最善策を取るよりかはなるべく責任逃れられる方の思考で作業しがちなので、上記(3-2)を採用しやすかったり。

さいごに

ということで、個人的な纏めとしては、仕事の進め方はケースバイケースかなと。
その中で、エンジニアは一概に「すべてを厳密にしたがる」とか「言葉がきつい」とかになるわけではなく、上記のような試行錯誤のもと、そういった言論にあえてしている方も居るよ、ということを非エンジニアの方にも最低限共有してみたくて本ポエムを書いてみました。

前述したようにケースバイケース(あるいは本当に性格が悪いだけ)なので、一概には言えませんが、少なからずコミュニケーションの参考になれば幸いです。

よくプログラマは言われたことだけをやるだけと言われることもありますが、プログラマのあり方は以下のどちらかかなと思います。

  • 言ったことを実装してくれる人として働いてもらう
  • あるいは、プログラマが発言しやすい環境(要件定義段階でプログラマに参画させたり、要件や設計fix後でも思いついたことがあれば発言および訂正の余地を与えたりなど)のもと働いてもらうか

後者の環境が整ってないのであれば、前者になるのもある程度仕方ないかなと思います(個人的には前者の場合でもとりあえず意見述べて、反対されたらされたでその後考える、くらいやってくれる人を好みはしますが、これはあくまで好みの問題)。

Discussion