「コードが書けるだけじゃ詰む」は本当だった。海外ITエンジニア(C#/WPF)が明かす、炎上PJTを鎮火させた「意外すぎるスキル」

エリートエンジニア、炎上プロジェクトで「詰んだ」日

やあ、みんな。海外の片隅で、今日も元気にWPFの画面とC#のロジックとにらめっこしてる、しがないITエンジニアです。

「海外で働くエンジニア」っていうと、どんなイメージ?

バリバリ英語で議論して、最新技術をビシバシ使いこなし、週末はヨットハーバーで乾杯…みたいな?

うん、まあ、半分くらいは合ってるかもしれない(ヨットは持ってない)。

でもね、今日はそういうキラキラした話じゃないんだ。

むしろ、俺が「エリートエンジニア(笑)」の鼻っ柱をへし折られ、マジで「詰んだ」と思った日。そして、C#のTask.Runでもawaitでも、WPFの{Binding}でも解決できなかった問題を、まったく別のスキルが解決した「あの日」の話をしようと思う。

これから海外を目指す君、あるいは今まさに海外で壁にぶつかってる君に、ちょっとした「得する情報」というか、「人生術」をシェアしたくてね。


あれは、俺がこっちに来て2年目くらい。

あるクライアント向けの、結構デカい業務アプリケーション(もちろんWPF製)のプロジェクトリーダー的なポジションを任されてた。正直、技術には自信があった。C#の非同期処理?MVVM?任せとけ。WPFの描画パフォーマンス?最適化の鬼だぜ。

俺はロジックで世界を構築するエンジニアだ。

合理性。効率。それがすべて。そう信じてた。

プロジェクトは中盤を過ぎ、デモを繰り返すごとに、なんだか空気がおかしくなってきた。

「なんか違う」「思ってたのと違う」

クライアントから、そんな曖昧なフィードバックが増え始めた。

いやいや、仕様書(Spec)通り作ってますよ?

こっちは、あんたらの要望(しかも無茶振り)を、見事にWPFのXAMLで具現化してるんだぞ?

俺のイライラは、そのままチームの空気になった。

ギスギスしたレビュー。増えるバグ。積み上がる技術的負債。

そして、運命の日。

「最終デモ」と銘打たれた、重役も勢揃いのテレビ会議。

時差のせいで、こっちは早朝。冷めたコーヒーをすすりながら画面を見ると、クライアント側のトップ、仮に「マーク」と呼ぼう、彼の顔が石のように硬い。

デモが始まった。

担当が新機能(俺が設計した、我ながらトリッキーな非同期データロード部分だ)を操作する。

…シーン。

…あれ?

画面が、固まってる。いや、正確には「ローディング中」のグルグルが、永遠に回ってる。

まさかのデッドロック?いや、ローカルでは動いた!なんでだ!

「…またか」

マークの低い声が、スピーカーから響いた。

その瞬間、俺たちのPM(プロジェクトマネージャー)が、早口でまくし立てた。

「あ、いえ、これは稀なケースでして!特定のネットワーク環境下では…」「仕様では、ここのデータ同期はベストエフォートと…」

ああ、もうダメだ。

技術的な言い訳が飛び交う。PMは仕様書(Spec)を盾にし、エンジニアは環境差異を主張する。

「技術的には正しい」

「契約上は問題ない」

でも、クライアイントのマークが、どんどん怒りのオーラをまとっていくのが、画面越しにビンビン伝わってくる。

「もういい!」

マークが叫んだ。

「君たちにいくら払ってると思ってるんだ!こんな動かないガラクタのために!仕様書?それがどうした!俺たちが必要なのは『動く』システムなんだ!」

PMは青ざめ、俺は(やべえ、あのawaitがマズかったか…?)と、必死にコードを脳内デバッグしてた。

完全に「詰み」だ。

会議室(というか、それぞれの自宅のPC前)は、凍りついた。

数秒が、永遠のように感じられる。

誰もが、次の「技術的な言い訳」か「謝罪」の言葉を探していた、その時。

俺は、気づいたら口を開いてた。

自分でも何を言うかなんて、0.1秒前まで考えてなかった。

「マーク。ひとつ、聞いてもいいですか?」

ざわつくチャット欄。俺を見るPMの(お前、何を!?)という目。

「俺たち、根本的に何か勘違いしてるかもしれません」

「もし、この機能が『完璧に』動いたとして…マーク、あなたは『本当に』ハッピーになりますか?」

シーン。

今度は、さっきとは質の違う静寂が訪れた。

え、俺、何言ってんだ?エンジニアが、機能の話じゃなくて「ハッピー」とか言っちゃったよ。

マークは、怒りで吊り上がっていた目を、一瞬だけ見開いた。

「…どういう意味だ?」

「俺は、マークが今、ものすごくガッカリしてるように見えます」

「それは、単にこのグルグル(ローディング)が回ってるからじゃなくて…もっと別の、『期待してた未来』が手に入らないことに対してなんじゃないか?って思ったんです」

「俺たちエンジニアは、仕様書に書かれた『機能』を作ろうとしてた。でも、もしかしてマークが欲しかったのは、『機能』じゃなくて…例えば、この機能で『部下の残業が月5時間減る』とか、そういう『結果』だったんじゃないですか?」

PMが息を呑むのがわかった。

技術的な炎上ミーティングが、一瞬にして哲学問答みたいになってる。

マークは、石のような顔のまま、こっちをじっと見ていた。

そして、数秒後、重いため息とともに、こう言ったんだ。

「…そうだよ、スミス(仮名)。俺が欲しかったのは、それだ」

「俺は、このシステムで、ウチのチームがバカみたいな手作業から解放されることを『期待』してたんだ。でも、出てくるのはいつもバグと、言い訳だけだ」

この瞬間、俺は「勝った」と思ったんじゃない。

「ああ、これだったのか」と、全身の力が抜けるような、それでいて、目の前がカッと開けるような、不思議な感覚に襲われた。

俺が、この絶望的な「詰み」の状況で、無意識に使ったスキル。

それは、C#の知識でも、WPFのテクニックでもなかった。

それは、「相手の感情(Empathy)を読み取り、自分の言葉で『翻訳』する」スキル。

いわゆる「エモーショナル・インテリジェンス(Emotional Intelligence:EQ)」とか、「共感力」と呼ばれるものだった。

俺たちエンジニアは、ロジック(Logic)とファクト(Fact)で戦うように訓練されてる。

でも、人間が、特に海外の多様なバックグラウンドを持つチームやクライアントと仕事をする時、ロジックだけじゃ絶対に越えられない壁がある。

その壁を、俺はこの日、期せずして「感情」というトンカチでぶっ壊したんだ。

「グルグルが回る」というファクト(事実)を議論しても、炎上は悪化するだけ。

「ガッカリしている」というエモーション(感情)を共有した瞬間、俺とマークは、敵対する関係から「共通の問題(=チームの手作業を減らす)に立ち向かう仲間」に変わった。

この「起」では、俺がエンジニアとして最大のピンチに陥り、技術ではなく「感情を読む」という意外なスキルによって、その突破口を見出した瞬間を語った。

でも、これは始まりにすぎない。

じゃあ、そのスキルって具体的に何なのか?

どうやってエンジニアがそんな「文系的」なスキルを身につけるんだ?

そして、その後の炎上プロジェクトはどうなったのか?

次の「承」では、そのあたりをガッツリ掘り下げていくぜ。

なぜC#より「感情」が重要なのか?ロジカルなエンジニアがEQを学ぶ本当の理由

(「起」のあらすじ:海外クライアントとの炎上プロジェクト。技術的な正論も仕様書も通用しない「詰み」の状況で、俺を救ったのはC#の知識ではなく、相手の怒りの奥にある「感情」を読み解くスキル=エモーショナル・インテリジェンス(EQ)だった…)


さて、前回の「起」を読んだ、特にエンジニアの君。

たぶん、こう思ったんじゃないか?

「は? 感情? EQ?」

「俺の仕事はコードを書くことだ。WPFのXAMLで美しいUIを組み、C#で堅牢なバックエンドを動かすことだ」

「そんなフワッとした精神論で、バグが治るか?納期が守れるか?」

わかる。

わかりすぎる。

俺も、数年前までまったく同じことを思ってたから。

俺たちエンジニアは、いわば「ロジックの獣」だ。

0か1か。trueかfalseか。コンパイルが通るか、通らないか。

曖昧さを徹底的に排除し、合理性で世界を組み上げるのが俺たちの仕事であり、誇りだ。

だから、「C#より『感情』が重要だ」なんて言われたら、「うるせえ、nullでも食ってろ」って思うよな。

でも、ちょっと待ってほしい。

俺は、「C#の勉強なんかやめて、自己啓発セミナーに行け」と言いたいんじゃない。

断じて違う。

俺が言いたいのは、**「君が必死に磨いたC#やWPFのスキルを『本当の意味で』活かしきるために、その土台としてEQが死ぬほど重要になってくる」**ってことだ。

特に、ここ「海外」では。

今日は、なんで俺たちロジカルなエンジニアが、「感情」なんていう一見不合理なものを学ばないといけないのか。

その理由を、俺の実体験(主に失敗談)ベースで、3つのポイントに分けて解き明かしていこうと思う。


理由1:「仕様書(Spec)」は、相手の「期待(Expectation)」の”不完全な翻訳”でしかない

まず、これだ。

俺たちエンジニアは「仕様書」を神だと思うように訓練されてる。

「仕様書にこう書いてある(だから正しい)」

「仕様書に書いてない(だから俺のせいじゃない)」

これが、プロジェクト炎上の第一歩だ。

「起」で話したクライアント、マークを思い出してほしい。

俺たちは、マークと合意した(はずの)仕様書通りに、完璧な(はずの)WPFアプリを作っていた。

でも、マークはブチギレた。

なぜか?

マークが欲しかったのは、仕様書のチェックボックスが埋まることじゃなかった。

彼が本当に欲しかったのは、「部下の残業が月5時間減る」という**『未来』であり『期待(Expectation)』**だったんだ。

でも、その「期待」は、PMやコンサルタントを経由して「仕様書」というドキュメントに翻訳される過程で、必ず劣化する。情報が欠落する。

「期待(曖昧で、感情的)」 → (翻訳) → 「仕様(ロジカルで、具体的)」

俺たちエンジニアは、翻訳後の「仕様」だけを見て仕事をする。

C#のコードは、仕様書に書かれたstringやintしか受け取れない。クライアントの「不安」や「期待」なんていうobjectは、そのままじゃコンパイルエラーだ。

でも、考えてみてくれ。

特に俺たちが作ってるようなWPFの業務アプリ。

ユーザー(クライアント)は、その画面を見るまで、自分が本当に何が欲しかったのか、わかってないことのほうが多い。

「うーん、なんか、ここ、もっとこう…シュッと動いてほしいんだよね」

(シュッ、とは!? async/awaitで非同期にしろってことか?それともAnimationを使えと!?)

ここでロジックだけで戦うエンジニアは言う。

「『シュッと』の定義を明確にしてください。仕様に落とし込んでください」

これが、日本国内ならまだいい。

「まあまあ、阿吽の呼吸で」とか「ちょっと飲みにいきましょう」で解決(先送り)できるかもしれない。

でも、海外ではこれが致命傷になる。

文化も言語も違う相手とのコミュニケーションで、「行間」なんて読めるわけがない。

だからこそ、俺たちは余計に「書かれたロジIC(=仕様書)」に依存してしまう。

結果、どうなるか?

**「仕様書通りだけど、誰もハッピーにならないクソシステム」**の爆誕だ。

EQ(共感力)が高いエンジニアは、ここで一歩踏み込める。

「シュッと、ですか。もしかして、今このボタンを押した後の『待ち時間』がストレスになってます? 例えば、〇〇さんがこの機能を使う時って、一番焦ってる時なんじゃ…?」

仕様(What)の裏にある、相手の感情や背景(Why)を探る。

これができると、クライアントは「こいつ、わかってる!」と信頼してくれる。

たとえ、その「シュッと」が技術的にクソ面倒なWPFの描画スレッドの問題だったとしても、「わかってくれてる」相手からの依頼なら、エンジニアだって「いっちょやったるか」って気になるだろ?

仕様書は「最低限の要求」。

相手の「期待」は「真のゴール」。

そのギャップを埋めるのが、ロジックじゃなくて「感情」を読むスキルなんだ。


理由2:チーム開発は「コード」ではなく「人間」が動かしている

次にこれ。当たり前すぎる話だけど、見失いがちな真実だ。

君は、自分のC#スキルに自信がある。

WPFで、クリーンアーキテクチャに基づいた、完璧なMVVMパターンを設計した。

Dependency Injectionもバッチリ。単体テストもカバレッジ100%。

「さあ、お前ら(チームメンバー)、この完璧な設計通りにコードを書け!」

…で、チームは動くか?

動かない。

特に、海外の多様なバックグラウンドを持つチームは、絶対に「正しいロジック」だけじゃ動かない。

  • ジュニア(新人)のA君は、君の「完璧な設計」を見て、プレッシャーで萎縮してるかもしれない。「こんな難しいことできない…」
  • インド出身のBさんは、君の指示が自分の経験(前の会社でやってた別のやり方)と違うから、内心「非効率だ」と不満に思ってるかもしれない。
  • ベテランのCさんは、「また若造が新しいことやりたがって」と、静観してるかもしれない。

全員、口では「OK, Boss」って言う。

でも、内心はバラバラ。不安、不満、疑念。ぜんぶ「感情」だ。

この「感情」を無視して、「ロジック(設計書)」だけを振りかざすとどうなる?

コードレビューは、揚げ足取りの「間違い探し」になる。

「ここの命名規則、規約と違いますね(ニチャア)」

「なんでTask.DelayじゃなくてThread.Sleep使ってるんですか?(怒)」

ロジックで殴り合うと、チームは疲弊する。

バグは減るかもしれないが、誰も新しいことに挑戦しなくなり、チームの生産性は地に落ちる。

じゃあ、EQが高いリーダー(エンジニア)はどうするか?

まず「相手の感情」をケアする。

  • A君には「この設計、難しく見えるかもだけど、一番大事なのは〇〇の部分だけだから。そこ、一緒にやってみようか」と不安を取り除く。
  • Bさんには「君の国のやり方もぜひ聞きたい。俺の設計とどっちがこのプロジェクトに合うか、ディスカッションしない?」とリスペクトを示す。
  • Cさんには「ベテランのCさんの目で見て、この設計の『リスク』ってどこにあると思いますか?」と知見を借りる。

やってることは、ただの「コミュニケーション」に見えるかもしれない。

でも、本質は「相手の感情(不安、プライド、経験)を認識し、尊重する」というEQの技術だ。

海外で働くってことは、自分とまったく違う「当たり前」を持つ人たちと、共通のゴール(=WPFアプリの完成)を目指すってことだ。

その時に必要なのは、C#の文法よりも、「こいつ(俺)のために一肌脱ごう」と思わせる「信頼残高」だ。

その信頼残高を貯める唯一の方法が、EQなんだよ。


理由3:エンジニアの市場価値は「技術」x「人間理解」で決まる

最後の理由。これが一番、君の「得する情報」=「人生術」になるかもしれない。

はっきり言おう。

「C#でWPFの画面が作れます」

「async/awaitが理解できます」

こんなエンジニア、世界中に(それこそ、日本より人件費が安い国に)ゴマンといる。

悲しいけど、技術(What)だけで差別化できる時代は、もう終わりつつある。

最近じゃ、AI(ChatGPTとかGitHub Copilot)が、そこらの凡百なエンジニアよりよっぽど綺麗なコードを書く。

俺たちがWPFの面倒なデータバインディングで悩んでる間に、AIは爆速でコードを生成してる。

じゃあ、俺たち人間のエンジニアの価値って、どこにある?

それが、**「AIにはできないこと」**だ。

AIは、C#のコードは書ける。

でも、AIは、ブチギレてるクライアント(マーク)の「怒りの奥にある本当の願い」を察することはできない。

AIは、不安で手が止まってるジュニア君の背中を押す、温かいコードレビューはできない。

AIは、「仕様書に書いてないけど、こっちのほうが絶対にユーザーは喜ぶ」という「おせっかい(=共感)」はできない。

これからの時代、エンジニアの価値は、掛け算で決まる。

市場価値 = 技術力(C#/WPF) × 人間理解力(EQ)

技術力が100点でも、EQが0.1点(=相手の感情を無視してロジックで殴る)なら、価値は10点だ。

技術力が70点でも、EQが10点(=相手の期待を読み、チームを動かせる)なら、価値は700点になる。

俺たちが海外で、高い給料をもらって、C#やWPFなんていう(ある意味、ちょっとレガシーな)技術で戦い続けるためには、この「人間理解力(EQ)」っていう、もう一つの武器を磨くしかないんだ。


C#のTaskは、非同期処理を「待機(await)」できる。

エンジニアのEQは、相手の「言葉にならない言葉」を「待機」し、受け止める技術だ。

どっちも、これからのエンジニアにとって、必須の「技術(スキル)」だと思わないか?

「わかった、わかった。EQが大事なのはもういい」

「で、具体的にどうやるんだよ、と」

「炎上プロジェクトで、お前は具体的に『何をした』んだ?」

そう焦るなよ。

次の「転」では、俺がまさにあの「詰んだ」プロジェクトで実践した、超具体的で、君が明日から使える「エンジニアのためのEQ実践ステップ」を、余すところなく解説する。

これは、ただの精神論じゃない。「技術」の話だ。

炎上PJTで実践した「共感」の技術。明日から使える3つのステップ

(「承」のあらすじ:海外でエンジニアが生き残るには、C#の技術力と「EQ(人間理解力)」の掛け算が必須だ。技術だけではクライアントの「期待」に応えられず、チームも動かせない。じゃあ、具体的にどうすりゃいいんだ?…)


お待たせ。

ここからが、このブログで一番「得する情報」だ。

「EQが大事とか、共感がどうとか、わかったよ」

「でもな、俺たちはエンジニアなんだ。もっと具体的に、public static void Main()から教えてくれ」

その気持ち、痛いほどわかる。

俺も「感情」なんていうフワッとしたものを、どう「実装」すりゃいいんだよ、って長年思ってた。

だから、俺があの炎上プロジェクト――クライアントのマークがブチギレた「あの日」の直後に、**ガチで実践した『技術』**を、3つのステップに分けて、そのままコード(手順)化する。

これは精神論じゃない。

WPFの画面遷移を設計するのと同じくらいロジカルな、**「対人関係デバッグ」**の技術だ。


ステップ1:【停止】ロジックで殴り合うな。「感情」を先にawaitしろ

あの凍りついたデモ会議(起を参照)の後、俺はすぐにPMに頼んで、クライアントのマークと、俺(エンジニア代表)だけの、1対1のミーティングをセットしてもらった。PMは「技術的な説明を…」とか言ってたけど、「いや、これは俺にやらせてくれ」と押し切った。

会議が始まる。画面越しのマークは、まだ怒ってる。

さあ、ここで普通の(=昔の俺)エンジニアがやる「最悪手」は何か?

「マーク、先ほどのバグ(デッドロック)の原因がわかりました!あれは非同期処理のコンテキストが…」

ダメだ、絶対。

相手が「怒り」や「失望」という感情に包まれてるときに、こっちから「ロジック(技術的正論)」を投げても、それはただの「火に油」だ。

相手からすれば、「俺はこんなに困ってるのに、こいつはまだ技術の言い訳か!」としか思われない。

だから、俺が最初にやったこと。それは、**「相手の感情を、そのまま受け止めて、言葉にする」**ことだ。

俺:「マーク、時間ありがとう。…正直に言うと、昨日の俺たちのデモは、クソだった」

マーク:「…(眉をひそめる)」

俺:「もし俺がマークの立場だったら、あんなもの見せられたら、激怒してる。期待してた分、失望もデカい。昨日は、本当に申し訳なかった」

ポイントは、「バグがあってすみません」じゃない。

「(あなたが)ガッカリしたであろうその気持ち、わかります」と、感情(Empathy)にフォーカスすることだ。

相手が感情的になっている時は、まずその感情の嵐が過ぎ去るのを「待機(await)」しなきゃいけない。

こっちがロジックで反論(throw new Exception())した瞬間、すべてがクラッシュする。

まず、相手の感情を「true」だと認める。そこからしか、デバッグは始まらない。


ステップ2:【深掘り】「人間の5 Why」で、真のExceptionを探れ

相手の感情(怒り)のトゲを、ステップ1で少し抜いた。

マークは、ふう、とため息をついた。「…そうだよ。本当にガッカリした」

さあ、ここからが本番だ。

多くのエンジニアはここで「では、どう修正しましょうか?」と、すぐ**「How(どうやって)」**の話に行きたがる。

これも「罠」だ。

俺たちはまだ、**「本当の問題(Why)」**を特定できていない。

トヨタの「なぜなぜ5回」を、コードじゃなくて「人間」に対してやるんだ。

俺:「マークが昨日、一番ガッカリしたのは、どの瞬間だった?」

マーク:「そりゃ、あのグルグル(ローディング)が止まらなかった時だ」

俺:「(なぜ1)あのグルグルが止まると、マークにとって『何が』一番マズい?」

マーク:「…ウチの部下が、それ(新機能)を使えないからだ」

俺:「(なぜ2)それ(新機能)が使えないと、『何が』困る?」

マーク:「…結局、古いExcelで手作業するしかないからだ」

俺:「(なぜ3)その手作業が続くと、『何が』起きる?」

マーク:「…来月の繁忙期、あいつらがまた徹夜することになる。もうウンザリなんだよ!」

見えたか?

俺たちが対処すべきだったException(例外)は、「async処理のデッドロック」じゃなかった。

真のExceptionは、**「部下に徹夜させたくない」というマークの切実な『想い(感情)』**だったんだ。

デッドロックは、その「想い」を阻む、数ある障害(バグ)の1つに過ぎなかった。

もし俺がデッドロックだけを光の速さで直しても、他の部分が使いにくくて結局Excel作業が残ったら、マークは絶対に満足しなかった。

「どう直すか(How)」の前に、「なぜ彼は怒ってるのか(Why)」を、しつこく掘る。

C#のコードでNullReferenceException(ヌルぽ)を見つけるのと同じくらい、執拗にだ。


ステップ3:【再構築】「仕様書」を捨て、「共通のゴール」で再Commitしろ

本当の問題が「部下の徹夜をなくすこと」だとわかった。

ここまでくれば、もう俺とマークは「敵」じゃない。「共通の敵(=徹夜作業)」と戦う「仲間」だ。

ここで俺が取った、最後の、そして最強の行動。

それは、**「仕様書を(一時的に)捨てる」**ことだ。

俺:「マーク、わかった。俺たちのゴールは『仕様書を終わらせること』じゃない。『マークの部下からExcelを奪い取ること』だ」

マーク:「…(ニヤリ)いい表現だ」

俺:「(仕様書を見せながら)正直に言う。この仕様書通りに全部作っても、たぶんExcelはなくならない。ここの機能、複雑すぎる」

マーク:「…だろうな」

俺:「だから、取引しよう。この仕様書の機能『10個』、俺の独断で『凍結(実装しない)』する。その代わり、部下の人たちが一番Excelで時間食ってる作業『トップ3』を今から教えてくれ。**それだけを、来週までにWPFで動く『何か』**にして持ってくる」

PMが聞いたら卒倒しそうな提案だ。

エンジニアが勝手に仕様を削り、勝手なマイルストーンを置いている。

でも、これが「効く」。

なぜなら、ステップ2で掘り当てた**「相手の本当の痛み(Why)」に対して、「最速で価値を届ける(How)」**というコミットメント(約束)だからだ。

ロジック(仕様書)で戦うのをやめ、相手の感情(痛み)に寄り添い、共通のゴール(徹夜撲滅)を設定し、そのための具体的な「次のアクション(Next Action)」を提示する。

これが、俺がやった「対人デバッグ」の全貌だ。

技術的な炎上は、技術で解決しようとすると悪化する。

人間が起こした問題は、人間の「感情」をデバッグすることでしか、根本解決できないんだ。


この後、どうなったか?

もちろん、俺はチームのメンバー(彼らにもEQを発動して事情を説明し、協力を仰いだ)とクソみたいに働いて、翌週、約束通り「Excel撲滅プロトタイプ(WPF製)」をマークの部下に見せた。

彼らが「おお…!」と声を上げた瞬間、このプロジェクトは「炎上」から「再生」に変わった。

「技術(C#)」は、その最後の「再生」のフェーズで、初めて本当の輝きを放つんだ。

さあ、残すは「結」。

この経験を経て、「コードは世界を変えない」という、ちょっと生意気な結論に至った俺の「人生術」の集大成を、最後に語らせてほしい。

コードは世界を変えない。でも、「感情」を理解したエンジニアは世界を変えられる

(「転」のあらすじ:炎上PJTの根本原因は「デッドロック」ではなく、クライアントの「部下を徹夜させたくない」という『想い』だった。俺はロジックで戦うのをやめ、①感情でawaitし、②人間の5Whyで深掘りし、③共通のゴールで再Commitする、という「対人デバッグ」技術で、プロジェクトを再生させた…)


さて、長い話に付き合ってくれてありがとう。

海外の片隅で、今日もWPFのXAMLをいじってる、しがないエンジニアの「炎上鎮火物語」は、これでおしまいだ。

「起」で詰んだあの日から、「承」でEQの重要性に気づき、「転」で具体的なテクニックを実践するまで。

俺は、この一連の経験から、エンジニアとして、いや、ひとりの人間として、クソでかい「気付き」を得た。

それが、今日のタイトルだ。

「コードは世界を変えない」

…おいおい、待てよと。

「俺たちエンジニアは、コードで世界をより良くするために(以下略)」

「お前だって、C#とWPFでクライアントの問題を解決したんだろうが」

そう言いたいよな。

もちろん、最終的にマークの部下たちのExcel作業をなくしたのは、俺とチームが書いたC#のコードであり、WPFの画面だ。それは間違いない。

でも、考えてみてほしい。

もし俺が、あの「詰んだ」会議の後、あのデッドロック(Taskのawaitの問題だった)だけを必死に直して、「ほら、仕様書通り動きましたよ!」とドヤ顔で報告していたら?

プロジェクトは、たぶん「成功(仕様書通り)」という判子だけ押されて、納品されていただろう。

そして、そのWPFアプリは、**「なんか使いにくいし、遅いし、俺たちの本当に欲しい機能じゃない」**と現場でソッポを向かれ、結局みんなExcelを使い続け…誰もハッピーにならない「動くゴミ」として、サーバーの片隅でホコリをかぶっていたはずだ。

コードは、書かれただけじゃ、何も変えられない。

それはただのテキストだ。

それは、public static void Main()から始まる「命令」の羅列でしかない。

じゃあ、何が世界を変えるんだ?

それは、「感情」を理解したエンジニアだ。

「部下を徹夜させたくない」というマークの**『痛み』。

「この面倒な作業から解放されたい」という現場の『切望』**。

その「感情」に、俺が「共感(Empathy)」し、それを「技術(C#)」で解決しようとCommitした、その『意志』。

それこそが、プロジェクトを動かし、クライアントを動かし、最終的に「徹夜」というクソみたいな現実を変えたんだ。

俺たちエンジニアは、ともすれば「技術」に恋しすぎる。

新しいフレームワーク、美しい設計(MVVM!)、効率的なアルゴリズム。

それ自体は素晴らしいことだ。俺も大好きだ。

でも、俺たちが作ってるのは、自己満足の芸術品じゃない。

(少なくとも、俺たちが作ってるC#/WPFの業務アプリは)

「人間」が使う、「人間」の「面倒くさい」とか「辛い」とか「もっと楽したい」っていう、ドロドロした「感情」を解決するための道具だ。

AIがどれだけ進化しても、ChatGPTがどれだけ流暢なコードを書けても、ここの領域は、まだ人間のエンジニアに残されてる。

ブチギレてるクライアントの、言葉にならない「本音」を読み解くこと。

不安で手が止まってるジュニアの「恐れ」に寄り添うこと。

これらは、AIにはデバッグできない、最高にクリエイティブで、最高に「人間臭い」仕事だ。


■ 俺たちエンジニアが、本当に「得する」人生術

ここまで読んだ君に、俺からの最後の「得する情報」を渡したい。

これから海外で働こうと思ってる君。

今まさに、海外の訳わからん仕様と、文化の壁にぶち当たってる君。

C#の勉強も、WPFのBindingの理解も、英語の学習も、もちろん死ぬほど大事だ。

でも、もし君が「その他大勢の、ただコードが書けるエンジニア」で終わりたくないなら。

AIに仕事を奪われたくないなら。

そして、どうせなら、クライアントからもチームからも「君がいてくれて、本当に良かった」と本気で感謝されるエンジニアになりたいなら。

今日から、ロジック(技術)で人を殴るのをやめてみないか?

コードレビューで、相手の「間違い」を指摘する前に、相手が「なぜ」このコードを書いたのか、その「意図(感情)」を想像してみる。

クライアントの「無茶振り(仕様変更)」にキレる前に、相手が「なぜ」今になってそんなことを言い出したのか、その「背景(不安)」を聞き出してみる。

俺たちの武器である「C#」や「WPF」は、研ぎ澄まされた刃だ。

でも、その刃を、誰の「どの問題」に向けるのか。

その「照準」を合わせるスキルこそが、「EQ(エモーショナル・インテリジェンス)」なんだ。

照準(EQ)がズレてたら、どんなに強力な武器(C#)を振り回しても、敵(真の問題)には当たらない。

C#のコードは、世界を変えるための「手段」だ。

でも、「世界を変えたい」と願う人間の「感情」こそが、すべての始まりなんだ。

俺は今日も、WPFの画面の向こう側にいる「人間」の顔を思い浮かべながら、awaitを打つ。

コメント

タイトルとURLをコピーしました