「コードが書ける」だけじゃ、もう勝てない。海外ITエンジニア(C#/WPF)の僕が見つけた「最強の隠し玉」の見つけ方

「それ、僕の仕事じゃないんで」が一番ヤバい。

(サブタイトル:起承転結の「起」)

どうも!海外(現在地はヨーロッパのとある国です)で、かれこれ7年ほどC#とWPFをメインに、デスクトップアプリの設計・開発をやっているITエンジニアです。カジュアルにいきましょう。

さて、突然ですが、皆さんに質問です。

あなたの「武器」って何ですか?

こう聞くと、たぶん9割のエンジニアはこう答えます。

「C#での非同期処理(async/await)が得意です」

「WPFのXAMLなら、複雑なUIでも組めます」

「クリーンアーキテクチャに基づいた設計ができます」

素晴らしい。本当に素晴らしいです。それ、全部「食える」スキルです。

でも、海外で数年間、多国籍チーム(インド、ドイツ、ポーランド、アメリカ…カオスです)にもまれながら働いてきて、ぶっちゃけ思うことがあるんです。

「技術力(ハードスキル)の『差』なんて、すぐ埋まる」

って。

いや、誤解しないでほしいんですが、技術力は「最低限」必要です。C#のTaskLINQも理解してない人が、いきなり海外で「隠し玉」もクソもない。

でも、ある一定のライン——例えば、「シニアエンジニア」と呼ばれるレベルに達すると、ぶっちゃけ技術力だけで「こいつ、ヤバいな」って差をつけるの、めちゃくちゃ難しくないですか?

みんなGitHub見てるし、みんなStack Overflow読んでるし、みんなカンファレンス動画見てる。キャッチアップの速度がエグいんです、世界は。

じゃあ、何が「差」になるのか。

僕がそれに気づいたのは、ある「大炎上プロジェクト」の真っ只中でした。

あれは3年ほど前。ある重要なクライアント向けの、WPFを使った業務管理ツールの開発でした。僕らのチームはC#のロジック、バックエンドとの連携を担当。UIデザインは別の(イケてる)デザインチームが担当。完璧な布陣でした。

プロジェクトは進み、僕らのC#コードは完璧に動作していました。MVVM(Model-View-ViewModel)パターンに則り、ユニットテストもバッチリ。asyncawaitを駆使した非同期処理で、データバインディングもサクサク。

「これ、勝ったな」

そう思ってクライアントにデモを見せた瞬間、空気が凍りました。

「…で、これは『何』? どう使えばいいんだ?」

クライアントの担当役員(技術のことは全く分からない)が、ポツリと言ったんです。

僕らエンジニアチームはパニックです。

「いや、仕様通りです」

「このボタンを押せば、データが非同期でロードされます」

「ここのグリッドは、XAMLでこう定義されていて…」

ダメでした。

技術的な「正しさ」をいくら説明しても、彼らには響かない。彼らが欲しかったのは「俺たちの仕事が“楽になる”ツール」であって、「MVVMで美しく実装されたソフトウェア」ではなかったんです。

デザインチームは「デザインは承認されたものだ」と言い、僕ら開発チームは「ロジックは仕様通りだ」と言い張る。

これぞ、海外あるある。「It’s not my job(それは私の仕事じゃない)」の応酬です。プロジェクトは完全に暗礁に乗り上げました。

その時、です。

もう、会議室の重い空気に耐えられなくなった僕が、ふと、口走ったんです。

「…あの、そもそも、この画面『多すぎ』じゃないですか?」

シーン。

全員が僕を見ます。

「Taku(僕の名前です)、君はC#の担当だろう。UI/UXはデザインチームの仕事だ」と、うちのプロジェクトマネージャー(PM)が目で訴えてきます。

でも、僕は続けました。

「いや、僕、昔(それこそ学生時代)、趣味でバンドのフライヤーとか、同人誌の表紙デザインとかやってたんですよ。全然、プロの領域じゃないんですけど」

僕はホワイトボードの前に立ち、マーカーを握りました。

「ぶっちゃけ、この画面でユーザーが『本当に』やりたいことって、たぶん、この3つだけですよね? なら、他の機能、全部『隠し』ませんか? ボタンも、この『デカいの一つ』だけにして」

僕は、WPFの技術的な話(GridがどうとかStyleがどうとか)を一切しませんでした。

代わりに、学生時代に学んだ「視線誘導」の話とか、「色数を減らす」とか、そういう「デザインもどき」の話をしたんです。

それは「C#エンジニア」の仕事ではありませんでした。

それは「WPFデベロッパー」の領域を超えていました。

でも、その瞬間、あの「氷の役員」が、初めて身を乗り出して言ったんです。

「…それだ。なぜ最初からそうしなかった?」

あの会議がターニングポイントでした。

プロジェクトは(紆余曲折ありましたが)大成功。

そして僕は気づいたんです。

あの日、プロジェクトを救ったのは、僕のC#のスキルじゃなかった。僕のWPFの知識でもなかった。

僕の「武器」は、「C#が書けること」と、「(趣味レベルの)デザイン知識があること」の『組み合わせ』だったんだ、と。

これが、僕が今日皆さんに伝えたい「Unlocking Your Own Unexpected Edge(予期せぬエッジ(武器)を解き放つ)」という考え方です。

2025年、そしてそれ以降。

AIがコードを書き、技術がコモディティ化していく世界で、僕らエンジニアが「生き残る」ため、いや、「圧倒的に勝つ」ために必要なのは、純粋な技術力(深さ)だけじゃない。

技術力 × あなただけの「隠し玉(Unexpected Edge)」

この「掛け算」なんです。

あなたの隠し玉は、何ですか?

「学生時代、演劇部でセリフを覚えるのが得意だった」(→異常な記憶力、ドキュメントの暗記力)

「やたらと友達の恋愛相談に乗っていた」(→高度な傾聴力、クライアントの「本当の」要求を引き出す力)

「週末はいつも料理を作っている」(→段取り力、リソース(食材)管理能力)

一見、ITエンジアの仕事と「全く関係ない」こと。

履歴書(レジュメ)には書かないような、自分では「才能」とすら思っていない、その「偏愛」や「趣味」。

それこそが、C#の知識なんかより、よっぽど強力な「差」を生む「最強の隠し玉」かもしれないんです。

このブログシリーズでは、僕がどうやってその「隠し玉」に気づき、どうやってそれを「武器」として磨き、海外の現場で活用してきたのか。

そして、皆さんが自分自身の「隠し玉」を見つけるための、超具体的なステップを、実体験ベースで余すところなくお伝えしていきます。

技術書を読むのは、いったん置いておきましょう。

今日は、あなたの「中」にある、まだ名前もついていない「才能」を探す旅に出かけましょう。

なぜC#エンジニアが「ガチの現場」で無双できたのか。その武器は、技術書には載ってない「共感力」だった。

(サブタイトル:起承転結の「承」)

さて、「起」では僕の「デザインもどき」の知識がたまたま役に立った、という話をしました。

あれは、いわば「ビギナーズラック」みたいなもの。

でも、その経験から僕は「あれ? もしかして、エンジニアとしての価値って、C#のコードの美しさや、WPFのXAMLテクニックだけじゃないんじゃね?」と、本気で疑い始めたんです。

僕の仕事は、C#とWPFを使ったデスクトップアプリケーションの開発。

その多くは、特定の「業務」で使われる、いわゆる「BtoB」のソフトウェアです。

例えば、工場の生産ラインを管理するシステムだったり、物流倉庫の在庫を管理するツールだったり。

そこには、明確な「ユーザー(使う人)」がいます。

僕らエンジニアは、彼ら「ユーザー」の要望を聞いて、WPFで画面(UI)を作り、C#でロジック(どう動くか)を実装していくわけです。

で、海外(僕のいるヨーロッパの現場)で働いていると、これがまぁ、一筋縄ではいかない。

まず、言語の壁がありますよね。(僕も最初はヒドかった)

それ以上に、「文化の壁」というか、「仕事に対するスタンスの壁」があるんです。

日本だと「阿吽の呼吸」とか「いい感じにしといて」が(良くも悪くも)通じることがありますが、こっちは基本、「仕様書(Spec)に書いてあること」が全て。

「書いてないことは、やらない」

「それは俺の仕事じゃない(Not my job)」

これがスタンダードです。

僕も最初は、その「ドライさ」に憧れていました。

「エンジニアはコードに集中すべき。要件定義はPM(プロジェクトマネージャー)の仕事だろ」と。

で、ある時。

僕は、ある物流倉庫向けの在庫管理アプリ(もちろんC#/WPF製)の改修を担当していました。

ユーザーからの要望は、明確でした。

「在庫一覧(DataGrid)から、特定の条件で絞り込んだデータをCSVでエクスポートする機能が欲しい」

はい、楽勝ですね。

C#エンジニアの皆さんなら、もう頭の中にコードが浮かんでるはず。

WPFのDataGridのItemsSource(データソース)をLINQで絞り込んで、StreamWriterあたりを使ってCSVに書き出すだけ。ちょろいちょろい。

僕はPMが書いた仕様書(「ここにボタンを配置し、押下したらCSVダイアログを開き…」)に基づき、完璧なコードを書きました。async/awaitを使って非同期で処理し、エクスポート中もUIが固まらない(フリーズしない)ように配慮。MVVMのパターンも崩さず、美しく実装しました。

「Taku、完璧な仕事だ!」

PMにも褒められ、意気揚々とリリースしました。

数日後。ユーザー(倉庫の現場マネージャー)から、僕のPM宛に、ブチギレのチャットが飛んできました。

「おい、Taku(僕)が作った機能、クソ遅いぞ! しかも、このデータ(CSV)じゃ意味ねえよ! 前より仕事が増えた! ふざけるな!」

…え?

「クソ遅い」? そんなはずはない。非同期処理も入れてる。

「データが意味ない」? 仕様書通りだ。

僕はパニックになりました。

PMは「仕様書通りだって反論しろ!」と言うし、僕も「コードは正しい」としか言えない。

ここでまた、「It’s not my job」合戦が始まるのか…?

もう、あの「炎上会議」はこりごりでした。

僕は、PMに「ごめん、ちょっとだけ時間をくれ」と言い、通訳(英語がまだ怪しかったので)を連れて、その倉庫の「現場」に直接乗り込むことにしました。(当時はまだコロナ前で、オフラインが基本でした)

現場に着くと、倉庫のマネージャー(ブチギレてた張本人)は、僕らを無視して、轟音(フォークリフトの音)の中でデカい声で誰かを怒鳴っています。

…最悪の雰囲気です。

「あの、Takuですけど…」

マネージャーは僕を睨みつけ、こう言いました。

「お前らか。PCの前に座ってるだけの『オフィス組』に、俺たちの何がわかる」

彼は、僕が作ったWPFアプリが動いている、薄汚れたデスクトップPCの前に僕を連れて行きました。

「見ろ。お前の『新機能』とやらを使うところだ」

彼が、僕が実装した「CSVエクスポート」ボタンを、マウスで(思いっきり)クリックします。

すると、僕のローカル環境では3秒で終わっていた処理が、現場のPCでは…

…30秒、経っても終わらない。

「おい、どうなってんだ」

「い、いや、今、非同期で処理してるはずで…」

1分後。

やっとCSVが出力されました。

「で? このCSVがどう『意味ない』んですか?」

僕は(震えながら)聞きました。

彼はそのCSVファイルを開き、僕に見せつけました。

「このCSV(A)と、こっちの別システム(B)から出すCSVと、さらにこっちの紙(C)のリスト。俺たちは、この3つを『全部』目で見て、突合(とつごう)して、次の発注リスト(D)を作ってんだよ!」

「お前の機能(A)は、確かにデータは出た。だがな、BやCと『データの並び順』が違う! しかも、Bにしかない『管理番号』が、お前のCSVには入ってない!

「だから、俺たちは結局、お前のCSVをExcelで開いて、並び替えて、BとCの管理番号を『手入力』で追加して、それからやっと突合(とつごう)してるんだ!」

「わかるか? お前のせいで、俺たちの仕事は『3ステップ』増えたんだよ!!!」

…頭をハンマーで殴られたようでした。

僕は、C#のコードが正しいか、WPFのUIが固まらないか、MVVMの設計が美しいか…

それ「だけ」を気にしていた。

彼が「なぜ」CSVエクスポートを欲しがったのか。

その「目的」を、僕は一切、理解しようとしていませんでした。

彼が欲しかったのは「CSVファイル」じゃない。

彼が欲しかったのは、「AとBとCを突き合わせて、Dのリストを『楽に』作ること」だったんです。

これが、僕のキャリアにおける「第二の転機」でした。

「起」で学んだ「デザインもどき(=技術以外の武器)」は、所詮、「どう見せるか」というテクニックでした。

でも、この物流倉庫で学んだのは、もっと根本的なこと。

「相手(ユーザー)が、本当に解決したい『痛み』は何なのか?」

それを、相手の立場に立って、本気で想像する力。

僕は、これを「エンジニア的 共感力」と呼んでいます。

「共感力」なんて言うと、「わかるー」とか「大変だねー」みたいな、フワッとした感情論を想像するかもしれません。

違います。

エンジニアにとっての「共感力」とは、

「ユーザーですら言語化できていない、潜在的な『Why(なぜ)』を、技術的に(ロジカルに)推測し、検証し、解決策を提示する能力」

です。

あの日、僕はブチギレてるマネージャーに、平謝りしました。

「すみませんでした。僕が、あなたの仕事を全く理解していませんでした」と。

そして、僕は「C#エンジニア」としての仕事を、その場で放棄しました。

代わりに、僕は彼の「弟子」になりました。

「マネージャー、すみませんが、今日の午後、あなたの『横』に座らせてください。あなたが、そのAとBとCのCSVと紙を、どうやってDのリストにしているのか、僕に『全部』見せてください」

彼は呆れていましたが、OKしてくれました。

僕は、彼のPC操作、Excelの関数(VLOOKUPを多用してました)、紙に赤ペンでチェックを入れる仕草、ため息の回数…すべてを観察しました。

そして、見えました。

彼が「本当に」欲しかった機能が。

オフィスに戻った僕は、PMに宣言しました。

「あのCSVエクスポート機能、捨てます」

「はぁ!? Taku、お前、何言ってんだ!」

「代わりに、新しい画面を一つ、WPFで作ります」

僕が作ったのは、こうです。

  1. 既存のCSVエクスポート(A)のボタンは、押すと「管理番号(Bの情報)」と「並び順(Cのルール)」を自動で付与した「新しいCSV(A’)」を生成するようにC#ロジックを全面改修。
  2. それだけじゃない。WPFに新しい画面(Window)を追加。
  3. その画面には、ボタンが3つだけ。「A’を読み込む」「Bを読み込む」「Cを読み込む」(Cは手入力用のDataGrid)。
  4. そして、中央にデカい「突合(とつごう)開始」ボタン。
  5. これを押すと、C#のロジックが裏で(もちろんTaskで非同期に)3つのデータを全部マージして、「差分」だけをハイライト表示。
  6. 最後に、その「差分リスト(=ほぼ、発注リストD)」をワンクリックで印刷orエクスポートできる。

僕は、ユーザーがやっていた「手作業(VLOOKUPと手入力)」を、C#のコードに「翻訳」しただけです。

これをリリースした時の、あのマネージャーの顔。

最初は「またお前か」と怪訝な顔をしていましたが、新しい画面の動きをデモした瞬間、彼の目が、カッと見開かれました。

「…おい、Taku。これ…」

「はい」

「これ、俺が…俺たちが、毎日3時間かかってやってた作業が…」

「たぶん、5分で終わります」

彼は、僕の手を、油のついたゴツい手で、バチン!!と握りしめてきました。

「…Taku。お前は…お前は、神か」

神、いただきました(笑)

あの日から、僕は「コード書き」であると同時に、「共感者」であると決めました。

技術力(C#, WPF, async/await)は、あくまで「手段」です。

その技術を、「誰の」「どの『痛み』」を解決するために使うのか?

それを見極める「共感力」こそが、僕らを「ただのコード書き」から、「価値を生み出すエンジニア」に変えてくれる「最強の隠し玉」なんです。

じゃあ、その「共感力」、どうやって鍛えるんだよ?

技術書みたいに「教科書」があるわけじゃないだろ、と。

その通り。

だから、僕が実践してきた「超・具体的なトレーニング方法」を、特別に3つ、伝授します。

(これは、僕が海外で、言語や文化の壁を乗り越えるためにも、めちゃくちゃ役立ちました)

エンジニアのための「共感力」ブートキャンプ

1. 「ユーザーの椅子」に座れ(物理)

さっきの僕の失敗談がまさにコレ。

開発者のハイスペックPC(SSD、デュアルモニター、高速回線)の上で動くWPFアプリと、現場のボロボロPC(HDD、低解像度モニター、不安定なWi-Fi)で動くアプリは、もはや「別物」です。

リモートワークなら、「Screen Share(画面共有)」を頼み込み、「あなたの環境で、あなたの操作で、いつもの作業をやってみせて」とお願いする。

ユーザーの「ため息」や「マウスの無駄な動き」にこそ、C#で解決すべき「痛み」が隠されています。

2. 「Why」ではなく「What for(何のため?)」で聞く

「なぜ(Why)この機能が欲しい?」と聞くと、ユーザーは「詰問」されているように感じ、身構えます。

そうじゃなくて、「もし、この機能があったら、何のために(What for) 使いますか?」「それができると、何が 嬉しいですか?」と、「未来のポジティブな体験」を聞き出すんです。

すると、ユーザーは「いやー、これができたらさ、あのムカつく手入力作業がなくなって、早く帰れるんだよね」みたいに、ポロっと「本音(=目的)」を話してくれます。

3. 「仕様書」の代わりに「業務フロー図」を書く(読む)

僕らエンジニアは「機能」で物事を考えがち。

でも、ユーザーは「業務(流れ)」で生きています。

「このボタンを押したら、このメソッドが呼ばれ…」という「機能仕様」の前に、

「朝、出社したら、まずPC(A)を起動し、次にシステム(B)にログインし…」という、ユーザーの「1日の流れ(業務フロー)」を理解する。

すると、「あれ? この流れなら、そもそもシステム(B)じゃなくて、僕らのアプリ(C)に最初からこの機能(D)があった方が、絶対早くない?」という、「仕様書の外側」にある「最強の隠し玉(=改善提案)」が見つかるんです。


C#のTaskを極めるのも、WPFのPrismをマスターするのも、もちろん大事。

でも、その技術を「誰の」「どの『痛み』」に向けるのか。

その「照準」を定めるのが、「共感力」です。

技術(ハードスキル)が「弾丸」なら、

共感力(ソフトスキル)は「照準器」。

弾丸だけ磨いても、当たらなければ意味がない。

海外という戦場で、僕らエンジニアが「最強」であるためには、両方が必要なんです。

…と、ここまで「共感力」サイコー!みたいに語ってきましたが、

実は、僕はこの「共感力」を突き詰めすぎた結果、ある「奇妙な壁」にぶち当たることになります。

「わかる」ことと、「解決できる」ことは、イコールじゃなかったんです。

そして、僕は気づいてしまった。

「技術」と「共感」だけでは、まだ足りない「何か」がある、と。

次回は、僕がこの「壁」を乗り越えるために、なぜかC#の技術書をいったん閉じ、全く別の「ある本」を読み漁るようになった…という、ちょっと「ヤバい」話をしようと思います。

「わかる」と「決める」は、別モノだった。僕がC#の技術書をいったん閉じ、代わりに「哲学書」を読み始めた本当の理由。

(サブタイトル:起承転結の「転」)

「承」で、僕は「共感力」という最強の武器を手に入れました。

ユーザーの「本当の痛み」がわかる。

だから、僕が作るWPFアプリは、いつも「ありがとう!」と感謝される。

C#のコードを書くのが、楽しくて仕方がなかった時期です。

「よし、次のプロジェクトも、共感しまくって、ユーザーを神扱いして、最高のアプリ作っちゃうぞ!」

そう意気込んで乗り込んだのが、全社的な「基幹システム刷新プロジェクト」でした。

僕の担当は、もちろんC#/WPFでのクライアントアプリ開発。

今回は、関わる「ユーザー」が、今までの比じゃありませんでした。

物流倉庫の現場マネージャー(「承」で登場した彼)に加えて、

  • 経理部のマネージャー(「データは1円たりとも狂うな。監査に耐えろ」)
  • 営業部のエース(「俺は客先(ノートPC)からでも使いたい。動きはサクサクじゃないと死ぬ」)
  • 経営企画室の役員(「とにかく全社の売上データ(BI)を、リアルタイムで見たい」)

…はい、地獄の釜が開きました。

僕は、得意の「共感力」を発揮します。

まず、経理部のマネージャーの横に座ります。

「わかります…。監査、大変ですよね。データの『整合性』が命ですよね。WPFのDataGridでの入力チェック、ガチガチに固めましょう。C#側でトランザクションも完璧に組みます!」

マネージャーは満足げです。「Taku、君はわかってるな」

次に、営業部のエースにヒアリングします。

「わかります…。客先で『重い』アプリなんて、使ってられないですよね。OKです。WPFのUIはあえてシンプルに、async/awaitを駆使した非同期処理で、レスポンスを最優先にします。データは『必要な分だけ』裏で読み込みましょう!」

エースはニヤリとします。「話が早いな、Taku」

最後に、役員のところへ。

「わかります…。リアルタイムの『数字』こそが経営のコンパスですよね。承知しました。C#のバックグラウンドTaskで、常に最新データをポーリングして、WPFのダッシュボードに(イケてる)グラフで表示し続けます!」

役員は頷きます。「頼んだぞ」

…さて。

C# / WPFエンジニアの皆さんなら、もうお気づきですね?

彼らの要望、全部「矛盾」してるんです。

  • 経理の「整合性(ガチガチのチェック)」と、
  • 営業の「速度(サクサクのレスポンス)」は、
  • 最悪の「トレードオフ」の関係にあります。

チェックを厳密にすればするほど、サーバーとの通信は増え、アプリは「重く」なります。

  • さらに、役員の「リアルタイム性(常時ポーリング)」は、
  • 経理の「整合性(ある瞬間の『正しい』数字)」と、
  • 営業の「速度(バックグラウンド処理がネットワーク帯域を食う)」の、
  • 両方とケンカします。

僕は、どうなったか。

「わかる、わかるよ…」と、全員に共感しすぎた結果、

「何も決められないエンジニア」

になってしまったんです。

会議室で、僕は板挟みになりました。

「Taku、営業の画面はまだか? 遅いぞ」

「Taku、経理のチェック機能、ロジックが甘いぞ」

「Taku、ダッシュボードの数字が更新されてないじゃないか!」

僕は、全員に「YES」と言ってしまった。

全員の「痛み」に共感してしまった。

その結果、僕が書いたC#のコードは、矛盾した要求を満たそうとした結果、スパゲッティのように複雑怪奇になり、WPFの画面は、あちこちに気を使いすぎた結果、誰にとっても「中途半端」なものになりました。

プロジェクトは、当然、大炎上。

僕は「共感力」という武器を振り回した結果、自分自身を刺し殺してしまったんです。

ここで、僕は(またしても)学びました。

「共感(わかる)」と「決断(決める)」は、まったく別のスキルだ、と。

ユーザーの「痛み」は、所詮「主観」です。

全員の主観的な「痛み」を、すべて同時に取り除くことは不可能です。

じゃあ、どうすればいい?

何が「正しい」判断なんだ?

PM(プロジェクトマネージャー)? 彼は「全員の要望を入れろ」としか言わない。

僕は、途方に暮れました。

技術書(C#のパフォーマンスチューニングとか、WPFのDI(Dependency Injection)とか)をいくら読んでも、答えは載っていません。

僕に足りなかったのは、「何を優先し、何を捨てるか」を決めるための「羅針盤(コンパス)」でした。

その時です。

僕が(文字通り)技術書を本棚にしまい、なぜか手に取ったのが、いわゆる「哲学書」…というとカッコつけすぎですね。

正確には、「思想」や「原則」に関する本でした。

それは、古代ギリシャのストア派の哲学だったり、

伝説的なデザイナー(ディーター・ラムスとか)の「デザイン10原則」だったり、

あるいは、優れた経営者が書いた「我が社の行動規範(Principles)」みたいな本でした。

僕が知りたかったのは、「どうやってTaskを並列実行するか(How)」じゃない。

僕が知りたかったのは、「『何のため』に、僕らはこのアプリを作るのか(Why)」という、たった一つの「軸」でした。

そして、僕は、自分なりの「エンジニアリング哲学(My Engineering Philosophy、略してMEP)」を、勝手に(!)定義することにしたんです。

僕のMEPは、例えばこんな感じです。


Takuの「エンジニアリング哲学」(MEP)※当時のメモ

  1. 「個人の快適さ」より、「全体のワークフロー」を優先する。(=たとえ営業(個人)が「重い」と文句を言っても、経理(全体)の整合性が担保されるなら、そっちを優先する。なぜなら、会社は「ワークフロー」で動いているからだ)
  2. 「多機能」より、「シンプルさ(学習コストの低さ)」を優先する。(=WPFで「何でもできる」モンスターアプリを作るな。たとえ役員が「あれもこれも見たい」と言っても、機能は「本当に必要な3つ」に絞れ。使われなければ、存在しないのと同じだ)
  3. 「その場しのぎ(Quick Fix)」より、「長期的な保守性」を優先する。(=C#で「汚いコード」を書くな。今、この瞬間、PMに怒鳴られようとも、「この実装は、3年後に必ず『技術的負債』になります。だから、こちらの『正しい設計』でやらせてください」と(データと共に)主張しろ)

…大したこと、書いてないですよね?

当たり前のことです。

でも、この「当たり前」を、自分の中の「憲法」として明文化したことが、僕の「最強の隠し玉」になりました。

次の、あの地獄の会議。

僕は、もう「共感マシーン」ではありませんでした。

「営業部のエース、Aさん。あなたの『速度が命』という気持ち、痛いほどわかります。ですが」

僕は、ホワイトボードに、このプロジェクトの「目的」と、僕の「MEP(のルール1)」を書き出しました。

「このプロジェクトの最大の目的は、『全社のデータ整合性を担保すること』です。したがって、僕は、あなたの『速度』の要求を、意図的に『捨てます』

シーン。

エースは、カッと目を見開きます。

「ただし」と僕は続けます。

「あなたの『客先で使えない』という痛みは、別の方法で解決します。WPFのフル機能版とは別に、『閲覧専用』の超軽量Webアプリ(当時はBlazorとか使いました)を、僕のチームで『勝手に』プロトタイプ作りました。これじゃダメですか?」

僕は、彼に「共感」した上で、「哲学(ルール)」に基づいて「決断」し、技術(C#)で「代替案」を提示したんです。

エースは、しばらく僕を睨みつけた後、

「…Taku。お前、面白いな。いいだろう、それで進めろ」

役員にも、経理にも、同じように「(僕の哲学に基づいた)決断」と「(技術に基づいた)代替案」をぶつけていきました。

もちろん、全員が100%満足したわけじゃありません。

でも、全員が「Takuは、少なくとも『軸』を持って判断している」と納得してくれました。

プロジェクトは、そこから一気に進み始めました。

「起」で手に入れた「デザイン(見せ方)」

「承」で手に入れた「共感力(痛みの理解)」

それだけでは、まだ足りなかった。

バラバラの「痛み」を、一つの「正解」に導くための「羅針盤」。

それが「哲学(決断する力)」でした。

技術(How) × 共感(What) × 哲学(Why)

この「3つの掛け算」こそが、2025年以降、AIがコードを書きまくる時代に、僕らITエンジニアが提供できる「真の価値」であり、「予期せぬエッジ(Unexpected Edge)」の正体なんです。

あなたの「哲学」は何ですか?

「絶対にユーザーを待たせない(速度こそ命)」ですか?

「絶対にバグを出さない(堅牢性こそ命)」ですか?

「絶対に美しいコードを書く(保守性こそ命)」ですか?

どれでもいい。

でも、その「軸」が、あなたの「決断」を支え、海外のタフな現場で、あなたを「ただのC#エンジニア」から、「信頼できるプロフェッショナル」へと変えてくれるはずです。

さて、これで僕の「武器」は出揃いました。

でも、皆さんはこう思ってるはずです。

「わかった。理屈はわかった」

「でも、Taku、お前だからできたんだろ?」

「私には、デザインの経験も、共感力も、ましてや哲学なんてない」

…そんなことは、絶対にありません。

次回、最終回「結」。

僕が特別だからじゃない。

あなたの中に「必ず」眠っている、あなただけの「隠し玉」を掘り起こすための、

明日から、いや、「今日から」できる、超・具体的なアクションプランを、全部お渡ししようと思います。

あなたの「最強の隠し玉」を見つける、明日からできる3つのアクションプラン

(サブタイトル:起承転結の「結」)

「起承転」で、僕は「技術(How)」に、「共感(What)」や「哲学(Why)」を掛け算することの重要性を話してきました。

これこそが、フック(記事のテーマ)にあった「ホリスティック(全体論的)なアプローチ」です。

C#が書ける。WPFが使える。それは「How(どうやって作るか)」。

でも、AIが台頭するこれからの時代、純粋な「How」の価値は(悲しいかな)相対的に下がっていきます。

じゃあ、僕ら人間の価値はどこにあるのか?

それは、

「**何を(What)**作るべきか?」

「**なぜ(Why)**それを作るべきか?」

を、「決める」ことです。

「承」で話した「共感力」は、「What」を見つける力でした。

「転」で話した「哲学」は、「Why」を決断する力でした。

そして、その「What」と「Why」の源泉こそが、あなたの「隠し玉」…すなわち、

「あなたが、技術(C#)以外で、夢中になれるもの」

に隠されています。

さあ、見つけにいきましょう。


アクションプラン 1:『あなたの「偏愛」マップ』を作る(=認識する)

まず、PCを閉じてください。

(いや、この記事は読んでほしいんですが)

技術書も、Qiitaも、Stack Overflowも、いったん全部忘れてください。

そして、真っ白な紙(か、テキストエディタ)を用意してください。

そこに、あなたの「スキル」や「職務経歴」を書くのは禁止です。

代わりに、今から僕が言う「質問」に、ひたすら答えて、書き出してみてください。

  • Q1. この1年間で、人から「頼まれてもいないのに」、つい語ってしまった「趣味」は?(例:あのキャンプギアの良さ、昨日のサッカーの試合、あのアイドルの凄さ…)
  • Q2. 人に「よく相談されること」は?(技術以外で)(例:旅行のプランニング、PCの選び方、人間関係の愚痴、おすすめのレストラン…)
  • Q3. 自分の「弱点」や「コンプレックス」だと思っていることは?(例:飽きっぽい、頑固、人見知り、無駄に几帳面(きちょうめん)…)
  • Q4. (もし宝くじが当たっても)たぶん、それでも「学び続けてしまう」と思うことは?(例:英語、料理、歴史、筋トレ、コーディング… ※C#でもOK!)

さあ、どうですか?

これを僕は『偏愛マップ』と呼んでいます。

「起」で話した僕の「デザイン知識」は、Q1(学生時代の趣味)でした。

「承」で話した「共感力」は、Q2(昔から、なぜか人の愚痴を聞かされることが多かった)が元です。

「転」で話した「哲学」は、Q3(頑固で、白黒ハッキリさせないと気が済まない)という僕の「弱点」が、裏返ったものです。

大事なことなので、もう一度言います。

あなたの「隠し玉」は、あなたの「職務経歴書」には載っていません。

あなたの「偏愛マップ」の中に眠っています。

「週末は、ひたすらスパイスカレーを作ってる」?

最高じゃないですか。それは「段取り力」と「化学(再現性)」の才能です。

「推しのアイドルの遠征計画を立てるのが生きがい」?

ヤバい。それは「プロジェクト管理」と「予算管理」のプロフェッショナルです。

「MMORPGでギルドマスター(まとめ役)をやってた」?

それ、僕が「転」でぶち当たった「利害関係の調整」そのものです。

まずは、あなたが「何に」異常な熱量(=偏愛)を持っているのかを、「認識する」こと。

これが、すべて(・・)の始まりです。


アクションプラン 2:『エンジニア語』に”翻訳”する(=武器化する)

さて、「偏愛マップ」が書けましたね?

でも、そのままじゃ、ただの「趣味人」です。

次のステップは、その「偏愛(隠し玉の原石)」を、僕らITエンジニアの現場で使える「武器」に「翻訳」する作業です。

これは、思考の「筋トレ」です。

「もし、この『偏愛』を、C#エンジニアの仕事に『無理やり』活かすとしたら?」

と、こじつけて考えてみるんです。

いくつか「翻訳」の例を挙げましょう。

  • 偏愛:「スパイスカレー作り」
    • → 翻訳(エンジニア語): 「僕は、カレー作りで『プロセス管理』を学んだ。玉ねぎ(A)を炒めるという『重い処理(I/Oバウンド)』の間に、スパG(B)と野菜(C)を切るという『CPUバウンド』な作業を並列で実行する。これは、C#のasync/awaitを使った非同期処理によるリソース最適化と『全く同じ』だ。僕の書くコードは、無駄な『待ち時間』を許さない」
  • 偏愛:「推しのライブ遠征(プロジェクト管理)」
    • → 翻訳(エンジニア語): 「僕にとって遠征は『プロジェクト』だ。チケット(リソースA)、宿(リソースB)、交通(リソースC)には『依存関係』があり、一つでも欠けると『デプロイ(=現地到着)』に失敗する。僕は、常に『クリティカルパス(=絶対にミスれない手順)』を洗い出し、複数の『バッファ(代替案)』を用意する。この『リスク管理能力』は、WPFアプリのリリース計画でも必ず役に立つ」
  • 偏愛:「MMORPGのギルドマスター(利害調整)」
    • → 翻訳(エンジニア語): 「ギルド運営は『組織開発』そのものだ。火力(A)が欲しいアタッカーと、安定(B)が欲しいヒーラーの『要求』はトレードオフだ。僕は、その両者に『ギルドの討伐成功(=プロジェクトの目的)』という『共通のWhy(哲学)』を示し、『決断』を下してきた。これは、『転』でTakuが直面した『営業 vs 経理』の構図と全く同じだ」
  • 偏愛:「人見知り(弱点)」
    • → 翻訳(エンジニア語): 「僕は『人見知り』だから、会議で『話す』のが苦手だ。だからこそ、会議の『前に』、誰よりも『書く』。僕が書く『ドキュメント(仕様書、設計書)』は、会議で議論する必要がないほど『完璧』でなければならない。僕の『弱点』が、僕のコードの『保守性』と『可読性』を担保している」

どうです?

バカバカしいと思いましたか?

でも、この「翻訳」作業こそが、「承」の「共感力」と、「転」の「哲学」の「タネ」になるんです。

あなたの「偏愛」は、あなたの「ユニークな視点」そのもの。

その視点こそ、他のエンジニア(技術しか見てない)が気づかない「バグ」や「改善点」を見つける「最強の武器(エッジ)」になります。


アクションプラン 3:『10%の越権行為』を試みる(=実践する)

さあ、これで「隠し玉」が「認識」され、「翻訳(武器化)」されました。

あとは、どうしますか?

…そう、「使う」んです。

(宝の持ち腐れが、一番もったいない)

でも、いきなり「転」の僕みたいに、会議で「僕の哲学に反する!」なんて叫ぶ必要はありません。(普通に、クビになります)

僕がおすすめするのは、**『10%の越権行為(えっけんこうい)』**です。

「越権行為」とは、つまり「It’s not my job(それは私の仕事じゃない)」の「逆」をやること。

自分の「本来の仕事(C#を書く)」から、「10%だけ」はみ出してみるんです。

  • もし、あなたの隠し玉が「デザイン(by 偏愛マップ)」なら…
    • 10%の越権: 次のWPFの画面実装の時、仕様書通りに作る(90%)だけでなく、「(起)の僕みたいに」こっそり、「ここのボタン、色を変えた方が絶対押しやすいです」という「代替案(10%)」を、PMに(ビクビクしながら)提案してみる。
  • もし、あなたの隠し玉が「共感力(by 偏愛マップ)」なら…
    • 10%の越権: 次の機能開発の時、仕様書を読む(90%)だけでなく、「(承)の僕みたいに」、「すみません、この機能が『本当に』使われる現場の動画(か、画面共有)、見せてもらえませんか?」と、ユーザーの「痛み」を知ろうとする「10%の質問」をしてみる。
  • もし、あなたの隠し玉が「段取り力(by 偏愛マップ:料理)」なら…
    • 10%の越権: 次のタスク見積もりの時、自分のC#コードのことだけ考える(90%)だけでなく、「このタスク(A)と、あのタスク(B)は、依存関係があるから、先にこっちを潰さないと『手待ち』が発生しますよ」と、チーム全体の「ワークフロー(10%)」について、口を出してみる。

最初は、ウザがられるかもしれません。

「エンジニアはコードだけ書いてろ」と言われるかもしれません。

でも、続けてみてください。

その「10%の越権」が、あなたの「隠し玉」を、現場で「研磨」してくれます。

そして、その「10%」が、一度でも「刺されば」。

(「Taku、お前、神か」みたいな瞬間が来れば)

もう、あなたは「ただのC#エンジニア」じゃない。

「デザイン(あるいは共感、あるいは段取り)の視点を持った、替えの効かないエンジニア」

として、認識されます。

そうなれば、こっちのもの。

あなたの「隠し玉」は、「予期せぬエッジ」から、「誰もが認める最強の武器」に変わるんです。


結論:あなたの「ムダ」こそが、最強の武器だ

僕らは、ITエンジニアとして、常に「効率」や「合理性」を求められます。

C#のコードも、WPFのXAMLも、いかに「ムダ」をなくすかの戦いです。

でも、キャリアにおいて。

特に、海外という「何でもアリ」の戦場で、その他大勢から「突き抜ける」ために必要なのは、

その「効率」や「合理性」の「外側」にある、

あなただけの「一見、ムダなもの(=偏愛)」

なんです。

このブログシリーズで僕が伝えたかったことは、ただ一つ。

あなたの「技術力」は、あなたの「偏愛」と掛け算された時、初めて「爆発」する。

AIが「How(どう作るか)」の大部分を担う未来は、もうすぐそこです。

僕ら人間のエンジニアの仕事は、「What(何を)」、「Why(なぜ)」を決めること。

その「What」と「Why」の答えは、技術書の中にはありません。

あなたの「偏愛マップ」の中に、あなたの「ムダ」な人生経験の中に、全部眠っています。

さあ、今日、家に帰ったら、

あなたの「偏愛マップ」を書き出してみてください。

それが、あなたの「予期せぬエッジ(Unexpected Edge)」を解き放つ(Unlocking)、最初の「一歩」です。

4回にわたる長い旅路にお付き合いいただき、ありがとうございました!

また次の現場(ブログ)でお会いしましょう!

コメント

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