海外で燃え尽きないために。C#エンジニア(兼アーキテクト)が見つけた「減圧室」の秘密

憧れの海外エンジニア? 冗談抜きで「潰れる」かと思った日々のこと

やあ、どうも。こっち(今いるのはヨーロッパの某国)で、シニアC#デベロッパーとして働いてます。メインはWPFを使ったデスクトップアプリの設計と開発。クライアントは医療機器とか、ちょっとお堅い(ミスが許されない)業界が多いかな。

さて、このブログを読んでくれてるってことは、君も「将来は海外でエンジニアとしてバリバリ働きたい!」って思ってるクチだよね?

わかる。すっごくわかるよ、その気持ち。

日本にいた頃の僕もそうだった。

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

高い給料、自由なフレックスタイム、デカいモニターが3枚並んだおしゃれなオフィス(もちろんフリードリンク)、優秀な多国籍チームと英語で交わすスマートな技術ディスカッション、週末はサクッと隣国へ旅行…。

うん、だいたい合ってる(笑)。

正直に言うと、そういうキラキラした側面は間違いなくある。コードレビューがGitHub上でサクサク進むし、リモートワークも当たり前。日本で満員電車に乗ってた頃を思うと、天国みたいな環境だ。

でもね、今日はあえて、そのキラキラの裏側にある「マジでキツい現実」について話そうと思う。

なんでかって?

スキルさえあれば、英語さえできれば、海外でハッピーになれる――そんな風に思ってたら、君、半年で潰れるよ。

僕が、まさにそうなりかけたから。


「ソフトウェア・アーキテクト」という名の重圧

僕の専門はC#とWPF。もう10年以上このスタックで飯を食ってる。日本でもそれなりにデカいプロジェクトの設計(アーキテクチャ)を任されてた自負はあった。

だから、こっちに来た時も「まあ、WPFなら負けないだろ」って、ちょっとナメてたんだよね。

甘かった。

こっちで僕が直面したのは、日本とは比べ物にならないレベルの「複雑さ」と「要求のシビアさ」だった。

まず、コードベースがデカい。平気で10年モノのレガシーコードが鎮座してる。WPFアプリなんだけど、XAMLのバインディングは地獄みたいに絡み合い、ViewModelは数千行の「神クラス」化。もちろん、前任者たちはとっくに退職済み。

「おいおい、MVVM(Model-View-ViewModel)はどうしたんだよ…」って頭を抱える日々。

君もWPFエンジニアならわかるよね? WPFって、データバインディングやDI(依存性注入)をきっちりやらないと、一瞬で「保守不可能なゴミ」が出来上がる。

で、僕の役割は、この「ゴミ」…いや失礼、歴史的建造物(レガシーコード)を改修しながら、新しい機能を「堅牢かつスケーラブル」に実装すること。しかも、僕は「シニア」兼「アーキテクト」の肩書き。つまり、僕の設計が、この先の5年、10年のプロダクトの命運を左右するわけだ。

プレッシャー、ヤバくない?

新しい機能の設計レビュー。会議室には、ドイツ人の厳格なプロダクトオーナー、インド人の超優秀なテックリード、アメリカ人のやたら早口なQAマネージャー。

僕がホワイトボードに書いた設計図(クラス図やシーケンス図)に対して、質問の嵐が飛んでくる。

「その設計だと、将来の拡張性に問題がないか?」

「ここのパフォーマンスボトルネック、どう解消するつもりだ?」

「なぜRepositoryパターンを使わない? その理由を説明しろ」

全部、英語で。

日本でなら、10秒で答えられる。でも、ここは海外。

「えーっと、それはですね…(because, uh…)」

言葉に詰まる。

言いたいことの7割も伝わらないもどかしさ。技術的には間違ってないはずなのに、英語のせいで「自信なさげ」に見えてしまう。

その結果、どうなるか。

「OK、わかった。ここは、俺たち(ネイティブ)がもう一度議論し直すから、君はとりあえずそこのバグ修正やっといて」

…これ、言われた時の絶望、わかる?

プライドも自信もズタズタ。俺、設計(アーキテクト)として雇われたんじゃないのかよ? WPFの知見なら誰にも負けないのに、それを「伝える」ことができない。

これが、僕が最初にぶち当たった「クリエイティブ・ブロック」であり、キャリアの危機だった。


24時間鳴り止まない「時差」という名の敵

技術的なプレッシャーだけなら、まだマシだったかもしれない。

僕のチームはグローバル分散型。僕がいるヨーロッパ。アメリカ(東海岸)にQAチーム。そして、開発の一部はベトナムのオフショアチーム。

地球をまたにかけたプロジェクト。聞こえはいいけど、現実は「24時間戦えますか?」状態だ。

ヨーロッパの朝イチ(日本時間だと夕方)。ベトナムチームからの大量の質問(昨日の夜に投げたタスク)に目を通す。

昼間。自分の開発と設計に集中。ドイツ人やフランス人の同僚と(英語で)議論。

夕方。定時? そんなものはない。ここからがアメリカチームの「朝」だ。QAチームから「おい、このバグ、クリティカルだぞ!」ってSlackが飛んでくる。

そこから、アメリカチームとのオンライン会議。WPFの画面(UI)の挙動について、画面共有しながらデバッグ。

「こっちの環境では再現しないんだけど…」

「いや、こっちでは100%出る。OSのバージョンは?」

「ログ送ってくれ!」

気づけば、時計は夜の10時を回ってる。

晩飯? シャワー浴びながら食パンかじってたよ、マジで。

日本にいた頃は、「仕事とプライベートの分離」なんて意識しなくても出来てた。会社を出れば、物理的にオフになれたから。

でも、海外でのリモートワーク(あるいはフレックス)は、その境界線をいとも簡単に溶かしちまう。

時差があるから「今対応しないと、アメリカは明日になっちゃう」という焦り。

言語の壁があるから「Slackのテキストチャットで済ませられることも、会議で1時間拘束される」という非効率。

家で仕事してるはずなのに、家で全く休まらない。

Slackの通知音(あの「カコッ!」って音)が鳴るたびに、心臓がビクッて跳ね上がる。ベッドに入っても、頭の中では英語でバグ報告の文章を組み立ててる。

「これは、やばい」

身体は疲れてるのに、脳がずっと「オン」の状態。

アドレナリンが出続けてるのに、パフォーマンスは一向に上がらない。

これが「燃え尽き(バーンアウト)」の入り口だって、その時の僕はまだ気づいてなかったんだ。


決定打:あの日の深夜デバッグ

忘れもしない。ある大規模リリースの3日前。

僕が設計・実装したWPFの新しいモジュールで、致命的なメモリリークが見つかった。特定の操作を繰り返すと、アプリがクラッシュする。

「おい、Taro(僕の名前とする)。お前の作った機能が原因だ」

テックリードからのチャット。冷や汗が噴き出す。

すぐに調査開始。

WPFのメモリリーク調査って、やったことある? 地獄だよ。

Visual Studioの診断ツールを睨みつけ、イベントハンドラの購読解除漏れ、バインディングのゾンビ、静的リソースの参照切れ…考えられる原因を片っ端から潰していく。

XAMLの複雑なツリーと、ViewModelのロジックが絡み合い、どこでメモリを掴んだまま離してないのか、全くわからない。

時間は刻一刻と過ぎていく。

ヨーロッパは深夜。アメリカは昼過ぎ。ベトナムは朝。

「Taro、進捗どうだ?」

1時間おきに飛んでくる、悪魔のチャット。

「今、調査中です(Investigating…)」

もう、それしか返せない。

設計(アーキテクチャ)のミスだ。僕が「イケてる」と思って導入した某ライブラリが、WPFの特定のコンテキストと相性が悪かったんだ。

でも、今さら設計変更なんて間に合わない。

「クソッ、クソッ…!」

声に出してキーボードを叩いてた。

その時、ふと、窓の外を見た。

空が、白み始めてた。

「あ、俺、何やってんだろ」

憧れてた海外エンジニア。

設計(アーキテクト)として活躍するはずだった自分。

現実は、異国の地でたった一人、誰にも(まともに)相談できず、WPFのメモリリークと格闘し、徹夜明けの死んだ目でモニターを睨みつけてる。

技術力? C#の知識? WPFの経験?

そんなもの、この「絶望的なプレッシャー」の前では、何の役にも立たなかった。

スキルを積み上げることばかり考えていた。でも、それ以前に、自分を守る「何か」が完全に欠けていた。このままじゃ、スキルアップどころか、再起不能(リタイア)だ。

「もう、無理かもしれない」

本気でそう思った、あの朝。

これが、僕が「ただのスキル」や「気合と根性」以外の、何か別の戦略的ツール――今、僕が「デコンプレッション・ゾーン(減圧室)」と呼んでいるもの――の必要性を、骨身にしみて理解した瞬間だったんだ。

「気合」と「技術書」じゃダメだった。僕がさまよった暗黒トンネル

あの徹夜明けの朝。

結局、メモリリークのバグは、リリースに間に合わせた。

ほぼ30時間ぶっ続けのデバッグの末、特定ライブラリのイベントハンドラの解除が、WPFの特定のウィンドウ破棄(Window Closing)のシーケンスと競合してた、っていう超マニアックな原因を突き止めて、なんとか修正パッチをねじ込んだんだ。

チームからは「Taro、ヒーローだ!」「よくやった!」ってSlackで褒められたよ。

でも、僕の心は、ビタイチ嬉しくなかった。

「ヒーロー」だって?

冗談じゃない。これは、僕の設計(アーキテクチャ)のミスが招いた、ただの「デスマ」だ。

しかも、僕はボロボロ。

その日を境に、僕のパフォーマンスは目に見えて落ちていった。

いや、「落ちた」っていうか、「落とした」んだ、無意識に。

もう、あんな思いをしたくない。

もう、徹夜でデバッグしたくない。

もう、あの心臓が縮み上がるような「お前のせいだ」っていうプレッシャーを浴びたくない。

その恐怖心が、僕を「守り」に入らせた。

新しい技術の採用?

「うーん、リスクがあるから、既存のやり方でいこう(I prefer the traditional approach because it’s stable.)」

設計レビューでの指摘?

「ああ、そうだね、そこは直しておくよ(Sure, I’ll fix that.)」

(前は、技術的に正しいと信じるなら、英語がしどろもどろでも食い下がってたのに)

僕は、海外まで来て「アーキテクト」として雇われたはずの僕が、「ただの言われたことを(波風立てずに)こなすC#コーダー」に成り下がっていくのを感じてた。

WPFの新しいUIデザインを考えるのも億劫。前は「ここにPrismのRegionをこう配置して…」なんてワクワクしてたのに、今は「頼む、これ以上ややこしいXAML、書かせないでくれ」って思う始末。

これが、燃え尽き(バーンアウト)の典型的な症状だって、後から知った。

情熱の枯渇。そして、極度の防衛本能。


失敗した処方箋(1):エンジニア的「根性」アプローチ

このままじゃマズい。それはわかってる。

僕は、典型的なエンジニア脳で、この「問題」を解決しようとした。

問題: パフォーマンスが低い。自信がない。

*原因: * スキル不足だ。英語力の不足だ。

解決策: もっとインプット(勉強)するしかない。

そう結論付けた僕は、狂ったように「インプット」を再開した。

日本から「Domain-Driven Design(ドメイン駆動設計)」「Clean Architecture」の分厚い技術書を取り寄せ、寝る前に読む。

朝は1時間早く起きて、ビジネス英語のオンラインレッスン。

昼休みは、WPFの最新技術(.NET Core以降の進化とか)を追うためにテックブログを漁る。

週末?

もちろん、趣味の個人開発だ。C#とWPFで、何か「イケてる」アプリを作ろうとした。

君、これがどれだけ「最悪の処方箋」だったか、わかる?

バケツの底が抜けて、水がダダ漏れになってるのに、上から必死で水を注ぎ込むようなもんだった。

脳みそは、すでに日中の「英語でのコミュニケーション」と「レガシーコードの解読」で、CPU使用率100%に張り付いてるんだ。

そこに、さらに「勉強」という名の負荷(プロセス)を起動しようとする。

どうなる?

フリーズだよ。

技術書を読んでも、同じ行をグルグルと目でなぞるだけ。英語のレッスンも、先生の言ってる意味はわかるけど、口から出てこない。

インプットすればするほど、自分のできてなさが浮き彫りになって、自己嫌悪が加速するだけだった。

「ダメだ、俺はもう、アーキテクトとして終わってるかもしれない…」


失敗した処方箋(2):「なんちゃって」リラックス

「OK、わかった。勉強がダメなら、逆だ。休もう」

次に試したのは、いわゆる「リラックス」だ。

「今日はもう仕事のことは一切考えない!」

そう宣言して、夜7時にPCを(強制的に)閉じる。

こっち(海外)の連中は、アフターファイブの切り替えが上手い。ビール片手に談笑したり、ジムに行ったり。

僕も真似てみた。

同僚に誘われて、パブに行った。

「Taro、最近元気ないじゃないか。飲め飲め!」

楽しい。確かに、その場は楽しいんだ。

でも、心の底で、ずっとタイマーがカチカチ鳴ってる。

(あ、今メールの通知が来た。アメリカのQAチームからだ…)

(さっきのパブでの会話、あの表現で合ってたかな…変に思われてないかな…)

家に帰って、Netflixを開く。

面白いドラマを見てるはずなのに、30分後、ストーリーが全く頭に入ってないことに気づく。

脳が、休んでない。

日本にいた頃は、よかった。

物理的に会社(オフィス)から離れれば、嫌でも「切り替え」ができた。

でも、今は違う。

僕の「家」は、僕の「オフィス」でもあるんだ。

(リモートワークとフレックスが主流だからね)

リラックスしてるはずのこのリビングルームのソファは、昼間、アメリカチームと(英語で)激論を交わした「戦場」でもある。

PCの電源はオフにできても、僕の頭の中の「Slack」と「Visual Studio」は、バックグラウンドで動き続けてる。

休もうとすればするほど、休めていない自分にイライラする。

意味、わかるかな?

「リラックス」すら、僕にとっては「達成すべきタスク」みたいになってたんだ。


「関心の分離」ができてない

僕は、絶望してた。

頑張ってもダメ。休んでもダメ。

じゃあ、どうしろと?

ある週末。

僕は、もう何もする気が起きなくて、近所の公園のベンチで、ただぼーっと、噴水を見てた。

(ああ、もうダメだ。日本に帰ろうかな…)

キャリアも、自信も、全部失って、ただ途方に暮れてた。

その時だ。

僕の、C#エンジニアとしての、WPFアーキテクトとしての「設計脳」が、最後の力を振り絞って、ささやいた。

「おい、お前…自分の『人生』の設計、破綻してるぞ」

…え?

「お前、いつもWPFアプリ作る時、何て言ってる?」

「**『関心の分離(Separation of Concerns)』**が大事だ、って」

「WPFアプリ(View)が、ビジネスロジック(Model)とベッタリ癒着してたら、保守もテストもできない『神クラス』が出来上がる。だから、間に『ViewModel』を置いて、きっちり責務を分離するんだろ?」

「今の、お前の人生、どうなってる?」

「『仕事(Work)』と『プライベート(Life)』が、完全に癒着してるじゃないか」

「お前の『脳(Brain)』は、ViewModelどころか、ViewとModelがぐちゃぐちゃに混ざり合った、最悪の『コードビハインド』(※WPFでアンチパターンとされる書き方)だ」

…ハッとした。

そうだ。

僕は、技術的なスキル(勉強)や、単純な休息(リラックス)の問題だと思ってた。

違う。

これは、「設計(アーキテクチャ)」の問題なんだ。

僕の人生は、「仕事」という強烈なプレッシャー(High Pressure)と、「プライベート」という平穏な日常(Normal Pressure)を、直接つなごうとしていた。

そりゃ、ぶっ壊れるに決まってる。

高圧のガスボンベのバルブを、いきなり全開にするようなもんだ。

何が必要か?

スキルじゃない。休暇でもない。

高圧と常圧の「間」にあって、安全に、ゆっくりと、圧力を調整するための「何か」。

深海ダイバーが、海上に上がる前に必ず入る、あの部屋。

「そうだ…『減圧室』だ」

僕には、精神的な「減圧室(デコンプレッション・ゾーン)」が必要なんだ。

仕事という名の深海(高圧)から、プライベートという名の地上(常圧)へ、安全に「浮上」するための戦略的な「空間」と「時間」が。

僕は、技術や英語にばかり目を向けて、自分の「精神のアーキテクチャ」を、完全に無視していた。

じゃあ、その「減圧室」って、具体的にどうやって作るんだ?

僕の「設計」は、そこから始まったんだ。

C#エンジニアが設計した「精神の減圧室」Ver 1.0 と、その大失敗

公園のベンチで、「僕の人生、アーキテクチャが破綻してる」って気づいたあの日。

僕は、エンジニアとして、この「精神の破綻(System Failure)」に対して、まともに取り組むことに決めた。

もう、根性論(=CPUに無駄な負荷をかける)や、なんちゃってリラックス(=スリープモードのフリしてバックグラウンドでプロセスが動いてる)は、やめだ。

僕がやるべきは、「人生のアーキテクチャ」の再設計。

特に、「仕事(高圧)」と「プライベート(常圧)」の間で安全に圧力を調整する「デコンプレッション・ゾーン(減圧室)」の実装だ。

C#エンジニアとしての血が騒ぐ。

よーし、いっちょ、最強の「減圧室」を設計(デザイン)してやるか。


【設計フェーズ】減圧室の「要求仕様」

まず、僕はこの「減圧室」モジュールに、どんな「要求仕様」が必要か定義した。

  1. 分離(Isolation):「仕事」モジュールと、「プライベート」モジュールから、完全に分離・独立していること。依存関係(Dependency)は一切持たない。(=仕事のスキルアップや、プライベートの用事・タスクであってはならない)
  2. バッファリング(Buffering):「仕事」の高速で高圧な思考(ロジカル、英語、緊張)を、直接「プライベート」(リラックス、日本語、弛緩)に流し込まない。一度、このモジュールで受け止めて、ゆっくりと圧力を下げる。
  3. 非同期(Asynchronous):このモジュールが実行中、他のプロセス(仕事、プライベート)からの割り込み(Interrupt)を極力ブロックする。(=Slackの通知や、家族からの「メシまだ?」コールに邪魔されない聖域であること)
  4. 低CPU負荷(Low CPU Load):このモジュール自体が、脳のCPU(特に論理思考や言語野)を食いつぶさないこと。むしろ、CPUを解放(Release)するものであること。

完璧だ。

WPFアプリの設計(アーキテクチャ)で、UIスレッドをブロックしないために非同期処理(async/await)を使うのと同じ発想だ。

僕の「人生」という名のUIスレッドが、仕事(重い処理)のせいで固まって(フリーズして)たんだ。


【実装フェーズ】Ver 1.0:物理と時間で「分離」してみた

設計書はできた。次はいよいよ実装(コーディング)だ。

僕は、手始めに「わかりやすい」分離から試してみた。

試作A:物理的コンテナ(場所)分離

僕の家は、リビングの一角が仕事場(リモートワークスペース)になってる。

だから、「仕事」と「プライベート」が癒着してた。

なら、物理的に分けてしまえ。

僕はまず、近所のカフェと契約した。

「朝9時から夕方6時までは、絶対に家で仕事をしない。カフェでやる」

そして、「カフェから一歩出たら、絶対に仕事のことは考えない」

というルールを課した。

結果:大失敗。

まず、カネがかかる(笑)。

いや、それより問題だったのは、アメリカチームとの時差だ。

僕が「さあ、仕事終わり!」ってカフェを出る夕方6時。それは、アメリカ東海岸の「おはよう、Taro!」の時間(昼の12時)なんだよ。

結局、カフェを出た後の帰り道、スマホにガンガン飛んでくるSlackの通知。

「Taro、昨日のWPFのビルド、コケてるぞ」

「設計レビュー、明日の朝イチ(=こっちの夜)でセットしたから」

家に帰っても、結局PCを開く。

「減圧室」どころか、通勤時間がプラスされただけで、ストレスは倍増した。

試作B:時間的ゲート(儀式)分離

物理がダメなら、時間だ。

「シャットダウン・リチュアル(終業の儀式)」っていう、欧米のデキるビジネスマン(笑)がやってるっていうアレを試した。

  • 夕方6時になったら、アラームを鳴らす。
  • PCの電源を完全に落とす(スリープじゃない)。
  • 仕事用のSlackをログアウトする。
  • 「今日も一日、よくやった」と(心の中で)つぶやく。

これで、脳に「仕事モード、終わり!」ってスイッチを叩き込もうとした。

結果:3日で破綻。

わかるよね?

アラームが鳴った瞬間、WPFの超ややこしいバインディングエラーと格闘してたら、どうなる?

「うるせえ! 俺は今、DataContext が null になる原因を探ってるんだ! あと5分!」

ってなるに決まってる。

エンジニアの仕事は、工場のライン作業じゃない。

「はい、6時です」で、思考をスパッと中断できるわけがない。

特に、アーキテクチャとか、メモリリークとか、「思考のカタマリ」を扱ってる時は、なおさらだ。

この「儀式」は、僕にとって「減圧」どころか、思考を無理やり中断させる、新たな「ストレス源」にしかならなかった。


【デバッグフェーズ】Ver 1.0は、なぜ失敗したのか

ダメだ。うまくいかない。

僕の「減圧室」Ver 1.0 は、バグだらけのクソコードだった。

僕は、再び公園のベンチ(そこが僕のデバッグルームになりつつあった)で、頭を抱えた。

なぜ、僕の「設計」は失敗した?

物理的な「場所」や、時間的な「儀式」は、ただの「インターフェース」だ。

大事なのは、その「中身(実装)」だ。

僕は、「仕事が終わった後」に、何をすべきか、全く定義していなかった。

「減圧室」とは、「仕事(高圧)」から「プライベート(常圧)」へ移行する、その「中間の活動」そのものであるべきなんだ。

じゃあ、その「活動」って、具体的に何だ?

僕は、また典型的なエンジニア脳で考えた。

「よし、生産的なことをしよう」

「ジムで運動する」

「料理教室に通う」

「WPFと関係ない技術、例えばPythonでも勉強するか」

全部、ブブー! 不正解。

僕は、「承」で学んだはずの教訓を、すっかり忘れていた。

ジムは、確かに汗をかく。でも「週3回、必ず1時間」って決めた途端、それは「タスク」になる。

料理は、確かに楽しい。でも「栄養バランスを考えて…」って思った途端、それは「論理的思考」になる。

Pythonの勉強? 論外だ。それは「インプット」であり、脳の別領域に負荷をかけるだけだ。

僕が実装しようとしていたのは、「第二の仕事」だ。


【ブレイクスルー】Ver 2.0:「無目的」という名のコア・ロジック

もう一度、要求仕様に立ち返ろう。

「減圧室」の目的は、リラックスすることでも、生産的になることでもない。

「圧力を、安全に、抜くこと」

それだけだ。

高圧の空気が詰まった脳みそ(パンパンになったメモリ)から、どうやって空気を抜くか。

その時、C#の「ガベージコレクション(GC)」の仕組みが、ふと頭をよぎった。

C#(.NET)は、使われなくなったメモリ(オブジェクト)を、GCが自動的に見つけて、解放(お掃除)してくれる。

プログラマ(僕ら)は、通常、メモリ解放のタイミングを意識しなくていい。

でも、僕の「脳」は、どうだ?

「仕事」で使った大量の「一時オブジェクト」(英語での議論、WPFのバグ、設計の悩み)が、解放されないまま、ヒープ領域(頭の中)に残り続けてる。

GCが、うまく動いてない。

なぜ?

僕が、GCに「お掃除するヒマ」を与えてないからだ。

僕は、脳のCPUを、常に「仕事」か「インプット」か「タスク(ジムや料理)」で、100%使い切ろうとしていた。

ガベージコレクションが動くためには、「スキマ時間(アイドルタイム)」が必要なんだ。

これだ。

僕が実装すべき「減圧室」のコア・ロジック。

それは、**「脳のCPUを意図的にアイドル状態にする活動」**だった。

生産性? 効率? スキルアップ?

そんなもの、クソくらえだ。

僕の「減圧室」Ver 2.0 に必要なのは、

「無目的」であること。

「評価」から切り離されていること。

「上達」しなくていいこと。

具体的に、僕が始めたこと?

笑うなよ。

仕事が終わったら、まずPCを閉じる。ここまではVer 1.0 と同じだ。

その後、僕は、**「30分間、あてもなく近所を散歩する」**ことにした。

ただ、歩く。

音楽も聴かない。ポッドキャストも聴かない。

(インプットになるから)

「今日はこっちの道に行ってみよう」

「あ、あの家のネコ、また寝てるな」

「このコンクリートのひび割れ、なんかWPFのツリービューみたいだな」

どうでもいい、本当に、どうでもいいことを考える。

これが、僕の「減圧室」Ver 2.0 だった。

「戦略的非効率」と名付けた、この「散歩」という名のガベージコレクション・タイム。

最初は、怖かったよ。

「おいおい、俺、こんな無駄なことしてていいのか?」

「この30分で、C#の技術記事、1本読めるぞ」

「アメリカチーム、もう起きてるぞ」

そういう「効率主義の悪魔」が、頭の中でささやく。

でも、僕は続けた。

そして、1週間も続けた頃だ。

僕の「脳」に、明らかな変化が起き始めた。

散歩から帰ってきて、晩飯を食う。

その時、飯が、ちゃんと「美味い」と感じられるようになっていた。

Netflixのドラマのストーリーが、ちゃんと頭に入ってくるようになっていた。

そして、何より。

あれだけ悪夢にまで見た、WPFのレガシーコード。

それが、散歩中に、ふっと、

「あ。もしかして、あのバグ、あそこの静的リソースの参照が原因じゃね?」

って、何の脈絡もなく、答えが「降ってくる」ようになったんだ。

君の「人生のアーキテクチャ」は、破綻していないか?

あの「無目的で、あてもない30分の散歩」。

僕が「戦略的非効率」と名付けた、C#エンジニアとしてのプライドを(ある意味)捨てた「減圧室 Ver 2.0」。

これが、僕の海外エンジニア人生を、文字通り「救った」んだ。

馬鹿馬鹿しいと思う?

「いやいや、結局必要なのはC#のスキルでしょ」って思う?

わかるよ。

数ヶ月前の僕が聞いたら、間違いなく「そんなオカルトより、WPFのパフォーマンスチューニングの記事でも読んだ方がマシだ」って一蹴してた。

でも、断言する。

海外という高圧環境で、設計(アーキテクト)という「思考」そのものを商品にしている僕らにとって、この「減圧室」は、最新のフレームワークを学ぶことと、同じか、それ以上に重要な「生存戦略」だ。


「余白」が生んだ、本当の副産物

「減圧室(散歩)」を習慣にして、数週間。

僕の日常は、劇的に変わった。

まず、夜、ぐっすり眠れるようになった。

ベッドに入っても、頭の中でVisual Studioが起動しなくなったんだ。

次に、メシが美味くなった。

晩飯のパスタの味を、ちゃんと「美味しい」と感じられるようになった。脳が「今、ここ」に集中できるようになった証拠だ。

そして、何より驚いたのが、「仕事のパフォーマンス」そのものが、劇的に改善したこと。

不思議なもんだよ。

僕は、スキルアップのためのインプット(技術書の読書やオンライン英会話)を、あの「暗黒期」よりも減らしてるんだ。

なのに、成果は、圧倒的に「今」の方が出てる。

なぜか?

答えは、僕らの本業である「設計」に隠されてた。

君もWPFでXAMLを書いてて、経験ない?

UI要素(ButtonとかTextBox)を、Gridの中にギチギチに詰め込むと、どうなる?

最悪にダサくて、使いにくいUIが出来上がる。

イケてるUIデザインって、何が大事?

そう、**「余白(Margin / Padding)」**だ。

要素と要素の間に、適切な「余白」があるからこそ、ユーザーはどこに注目すべきか、次に何をすべきかが、直感的にわかる。余白は、情報を整理し、本当に伝えたいことを「際立たせる」ための、積極的な「設計」だ。

僕の脳みそは、あの時、情報とタスクでギチギチに詰まった、最悪のXAMLデザインだったんだ。

「効率」や「インプット」という名のコントロール(UI要素)で埋め尽くされ、「余白」が1ピクセルもなかった。

あの「30分の散歩」は、僕の脳みそに、意図的に「余白」を作る行為だった。

その「余白」に、何が起きたか。

散歩中、ぼーっと空を見てる時。

ふっと、昨日から悩んでたレガシーコード(C#)のバグの原因が、点と点として繋がる瞬間が来た。

「あ。待てよ。あのモジュール、WPFのDispatcher(UIスレッド)をWait()で無理やり同期で待ってるから、デッドロック起こしてんじゃね?」

これ。

この「あ。」という閃き。

これは、机に向かって、Visual Studioのデバッガを睨みつけてる時には、絶対に出てこない「答え」だった。

僕の脳のガベージコレクション(GC)が正常に動き出し、断片化してたメモリ(知識)がキレイに整理(デフラグ)された結果、本当に必要な情報(=バグの解決策)が「降ってきた」んだ。

僕は、インプット(勉強)こそが正義だと思ってた。

でも、僕らエンジニアに本当に必要なのは、インプットした知識を「結合」させ、「熟成」させるための「余白(=減圧室)」だったんだ。


君だけの「減圧室」を設計(デザイン)しよう

ここまで、僕の「徹夜明けの絶望」から「散歩での復活」まで、赤裸々に話してきた。

君に、僕の真似をして「毎日30分散歩しろ」と言いたいわけじゃない。

僕にとっての「散歩」が、君にとっての「正解」とは限らないからだ。

僕がやったのは、「僕の人生のアーキテクチャ」を分析し、「要求仕様」を定義し、プロトタイプ(Ver 1.0)を作り、デバッグし、そして「Ver 2.0」にたどり着いた…という「設計プロセス」そのものだ。

君も、君だけの「減圧室」を、自分で設計(デザイン)しなきゃいけない。

それは、WPFで「カスタムコントロール」を自作するのと同じだ。

既存のボタン(Button)じゃ、要求仕様を満たせない。だから、ControlTemplateをいじって、自分だけのコンポーネントを作る。

その「要求仕様」、もう一度おさらいしよう。

  1. 無目的であること(Not Task-Oriented):「上達」や「成果」を求めた瞬間に、それは「第二の仕事」になる。僕が試した「ジム(週3回)」や「料理(栄養バランス)」が失敗したのは、これだ。
  2. 非評価であること(Non-Evaluative):他人からも、自分からも、「うまい」「へた」「正しい」「間違い」の物差しで測られないこと。評価軸(KPI)が存在した瞬間に、脳は「仕事モード」に戻る。
  3. 低CPU負荷であること(Low Cognitive Load):脳の「論理思考」や「言語野」を、できるだけ使わないこと。ポッドキャストや技術ブログは、一見リラックスに見えて、脳に「インプット」という負荷をかけてる。

この3つの条件を満たすものなら、何でもいい。

  • ただ、楽器を(うまく弾こうとせず)鳴らす。
  • ただ、粘土を(何を作るとも決めずに)こねる。
  • ただ、近所のスーパーの「スパイスの棚」を、端から端まで眺める。
  • ただ、意味のない落書きを、ノートに書きなぐる。

ポイントは、**「戦略的に、非効率になる勇気」**を持つことだ。


これから海外を目指す「君」へ

これから海外で働こうと、今まさにC#の勉強や、英語の学習を(それこそ燃え尽きるほど)頑張っている君に、伝えたい。

君のその努力は、絶対に正しい。

スキル(矛)がなきゃ、この「海外」という戦場では、そもそもスタートラインにすら立てないから。

でも、忘れないでほしい。

海外の現場は、君が想像してるより、ずっと「高圧」だ。

言語の壁、時差のプレッシャー、文化の壁、そして「アーキテクト」としての設計責任。

その「高圧」は、君の「脳」を、君が思うよりずっと早く、すり減らしていく。

スキル(矛)だけを必死に磨いて、自分を守る「鎧(よろい)」の設計をサボってると、どうなるか。

僕みたいに、半年で潰れる。

「減圧室」は、その「鎧」だ。

それは、逃げでも、サボりでもない。

高圧環境下で、君の最高のパフォーマンスを「持続」させるための、最もクレバーで、最もプロフェッショナルな「戦略的ツール」なんだ。

C#のコーディング規約を設計するように、

WPFのアーキテクチャ(MVVM)を設計するように、

君の「人生のアーキテクチャ」を、真剣に、設計してほしい。

君の「人生」、コードビハインド(※WPFのアンチパターン)みたいに、仕事とプライベートがグチャグチャに癒着してないか?

「関心の分離」、ちゃんと出来てるか?

僕も、まだまだこっちでC#エンジニアとして、悪戦苦闘の毎日だ。

でも、「減圧室」という名の最強の「鎧」を手に入れた今、あの頃みたいに「潰れる」気は、もうしない。

さあ、この記事を読み終えたら、まずはPCを閉じてみよう。

そして、15分でいい。

何の目的も持たずに、外の空気を吸ってみたらどうだ?

君の「減圧室」の、設計(デザイン)の始まりだ。

コメント

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