- バグはコードではなく「脳の疲労」に宿る? 〜3PMのゾンビ化現象と私の敗北〜
- 5分間の魔法「マイクロ・リチャージ」の実践 〜エディタから離れる勇気と具体的なメソッド〜
- 「あと1行だけ」の誘惑を断ち切る勇気
- マイクロ・リチャージの「具体的メニュー」
- 絶対にやってはいけない「偽の休憩」
- テクノロジーは敵か味方か?
- テクノロジーでアナログな休息を管理する 〜ポモドーロの先へ。通知を味方につけるWPFエンジニア的アプローチ〜
- 意志力(Willpower)という名のメモリリーク
- Level 1: 既存ツールによる「強制中断」の導入
- Level 2: WPFエンジニアの執念 〜自作ツール「Project Overlord」〜
- Level 3: IoTと環境制御 〜「光」と「振動」による無意識への介入〜
- 転換点:テクノロジーは「拘束」ではなく「解放」のためにある
- 持続可能なエンジニアライフへ 〜生産性の正体は「どれだけ休めるか」だった〜
- コードのバグは減った。でも、もっと大事な変化があった
- 「人体」というレガシーシステムのメンテナンス
- 「生産性」の定義を再コンパイルせよ
- 読者のエンジニアの皆さんへ
- Next Action: 明日の朝、最初にやること
バグはコードではなく「脳の疲労」に宿る? 〜3PMのゾンビ化現象と私の敗北〜
やあ、みんな。今日もVisual Studioと睨めっこしてる?
俺は今、海外のとあるオフィスで、いつものようにC#とXAMLの森を彷徨っているところだ。
海外でエンジニアとして働くって聞くと、なんかこう、優雅にコーヒー片手に英語で議論して、定時になったらサクッと帰る…みたいなスマートなイメージを持たれることが多いんだけど、現実はそんなに甘くないんだよね。特に俺たちが扱っているWPF(Windows Presentation Foundation)なんて、強力だけど癖も強いフレームワークを使っていると、画面の描画更新がうまくいかなくて「INotifyPropertyChangedの実装漏れか?」「いや、Bindingのパスが間違ってるのか?」なんて、気づけば数時間ハマってることもしょっちゅうだ。
で、今日話したいのは、技術そのものの話じゃない。その技術を扱う「俺たちの脳みそ」の話だ。
海外エンジニア特有の「二重の負荷」
日本で働いていた頃ももちろんハードだったけど、海外に来てから気づいたことがある。それは「脳のバッテリー消費が半端なく早い」ってことだ。
言語の壁っていうのは、やっぱりデカい。仕様書を読むのも、同僚のプルリク(Pull Request)にコメントするのも、日本にいた時の何倍もの脳内メモリを消費する。
例えば、単純なロジックの実装をしている時でも、バックグラウンドプロセスでは常に「今の英語のニュアンス、合ってたかな?」「次のミーティングで進捗報告する時、どう表現すれば誤解されないかな?」っていうタスクが走っている状態なんだ。PCで言えば、常にCPU使用率が80%張り付いているような感じ。ファンが唸りっぱなしの状態だよね。
そんな状態で、複雑なMVVMパターンの設計を考えたり、非同期処理のデッドロックを回避するロジックを組んだりしてごらんよ。午後3時くらいには、もう頭の中は真っ白。キーボードを叩く指は動いているけど、思考は停止していて、さっき書いたはずのコードの意味が自分でもわからない…なんていう「ゾンビ・エンジニア」状態に陥るんだ。
「集中力神話」という呪い
俺たちはエンジニアだから、「フロー状態」とか「ゾーンに入る」のが大好きだよね。ノイズキャンセリングヘッドホンをして、誰にも邪魔されずに3時間、4時間ぶっ通しでコードを書く。その瞬間は最高に気持ちいいし、自分は生産性の神になったような気がする。
でも、ここに大きな落とし穴があったんだ。
俺の実体験を話そう。このプロジェクトに参加して半年くらい経った頃のことだ。納期が迫っていて、かなり複雑なUIコントロールのカスタムを作成していた。
「休憩してる暇なんてない。一気に片付けるぞ」
そう意気込んで、朝の9時からランチも適当にサンドイッチを片手に流し込んで、午後4時まで一度も席を立たずに集中し続けた。すごい集中力だったと思う。コードの行数はどんどん増えていくし、自分でも「俺、最強じゃん」って思ってた。
でも、夕方のコードレビューの時間。
同僚のシニアエンジニア(ドイツ人のめちゃくちゃ鋭い人)が、俺のコードを見て眉をひそめたんだ。
「この部分、なんでこんな複雑なことしてるの? ここ、標準のコンバーター使えば1行で終わるよね?」
言われてハッとした。確かにそうだ。
さらに、「ここの例外処理、完全に抜けてるよ。nullが入ってきたらクラッシュする」
顔から火が出るほど恥ずかしかった。
俺が「集中して生産性が高い」と思っていた時間は、実は「脳が疲労して視野狭窄(しやきょうさく)に陥り、簡単な解決策も見えなくなっていた時間」だったんだ。
マラソンで言えば、全力疾走しすぎて酸欠になり、コースアウトしているのに気づかずに走り続けているようなもの。
日本にいた時は、「長時間座って、長時間画面に向かっているのが『頑張っている』証拠」みたいな空気がどこかにあった。でも、ここ海外のプロフェッショナルな現場では、プロセスよりも「結果のクオリティ」が全てだ。
どんなに長時間頑張っても、クソコード(失礼、低品質なコード)を生み出していたら、それはプロの仕事じゃない。
その日、俺はボロボロになって家に帰った。
「なんであんな簡単なことに気づかなかったんだろう…」
自己嫌悪に陥りながら、ふと思ったんだ。
「もしかして、俺の脳みそ、使い方が間違ってるんじゃないか?」
人間の脳はCPUとは違う
俺たちは普段、コンピュータ相手に仕事をしているから、ついつい人間も同じように考えがちだ。
電源さえ入っていれば、ずっと一定のパフォーマンスを出してくれると思っている。
でも、人間は違う。生身の生き物だ。
調べてみると、人間の集中力の限界は90分だとか、もっと短いとか言われている。
それなのに、俺たちは何時間も同じ姿勢で、ブルーライトを浴び続けて、論理的思考という極めて高負荷なタスクを回し続けている。
これって、F1カーでピットインせずに何百周も走ろうとしてるようなもんだよ。タイヤはボロボロ、ガソリンは空っぽ。そりゃあ事故(バグ)も起きるって話だ。
特に海外生活では、仕事以外の生活面でもストレスがかかる。ビザの手続き、家のトラブル、文化の違いによる摩擦。これら全てが、俺たちの「ウィルパワー(意志力)」という限られたリソースを食い潰していく。
朝満タンだったバッテリーは、お昼過ぎにはもうレッドゾーン。その状態で無理やり夕方まで働こうとするから、効率は落ちるし、ミスは増えるし、家に帰る頃には抜け殻になって、自己研鑽や趣味に使うエネルギーなんて残っちゃいない。
これじゃあ、なんのために海外まで来て挑戦してるのかわからないよね。
ただコードを書く機械になりたいわけじゃない。人生を豊かにするために、俺たちはここにいるはずだ。
出会い:Micro-Recharges(マイクロ・リチャージ)という概念
そんな絶望的な気分で、週末に現地のテックミートアップに参加したときのことだ。
そこで出会ったあるベテランエンジニア(彼はフリーランスで世界中を旅しながら働いている超人だ)に、この悩みを打ち明けてみた。
「集中力が続かないんです。午後になると生産性がガタ落ちで…」
彼はニヤリと笑って、こう言った。
「君は、休むのが下手くそなんだよ。休むっていうのは、仕事が終わってからすることじゃない。仕事の『一部』として組み込むんだ」
そこで彼が教えてくれたのが、**「Micro-Recharges(マイクロ・リチャージ)」**という概念だった。
「リチャージ」っていうと、週末にガッツリ寝るとか、長期休暇で旅行に行くとかを想像するかもしれない。でも、彼が言っていたのはもっと微細で、日常的なことだ。
文字通り、「微小な充電」を頻繁に繰り返すこと。
彼はこう続けた。
「スマホのバッテリーを想像してごらん。0%になってから充電するより、こまめに充電した方がバッテリーの持ちがいいって言うだろ?(※諸説あるけど、あくまで例えとしてね)。人間も同じさ。完全に枯渇してから慌ててレッドブルを飲んでも遅いんだよ。枯渇する前に、5分でいいから『脳を完全にOFFにする』時間を作る。それを1日に何度も繰り返すんだ」
最初は半信半疑だった。
「いやいや、忙しいのにそんなちょこちょこ休んでたら、タスクが終わらないですよ。フロー状態も切れちゃうし」
と反論した俺に、彼はこう言った。
「逆だ。休まないからタスクが終わらないんだ。騙されたと思って、明日の月曜日から試してみてくれ。1時間に1回、強制的にエディタから離れるんだ。トイレに行くんじゃなくて、脳を休めるために席を立つんだ」
視点を変える:休息は「サボり」ではなく「戦略的給油」
この言葉は、俺の中でパラダイムシフトを起こした。
今まで「休憩=サボり、逃げ、ロスタイム」だと思っていた。
でも、彼の定義では「休憩=パフォーマンスを維持するためのメンテナンス、戦略的給油」なんだ。
F1のピットストップは、タイムロスに見えるけど、あれがないと完走できないし、優勝もできない。
俺たちエンジニアにとっての「マイクロ・リチャージ」は、まさにあの数秒のピットストップなんだ。
翌日、俺は早速これを試してみることにした。
まだ半信半疑だったけど、あの午後3時の絶望的な倦怠感をなんとかしたかったからね。
そして、この「たった数分の習慣」が、俺の海外エンジニア生活、いや、エンジニアとしてのキャリアそのものを劇的に変えることになるとは、その時はまだ知る由もなかったんだ。
具体的に何を変えたのか? ただ席を立つだけじゃない。
そこには、脳科学的にも理にかなった、エンジニアのための「正しい休み方」のメソッドがあった。
PC画面という「デジタルな世界」から、一瞬だけ意図的にログアウトし、現実世界(フィジカル)にログインし直す。
それによって、脳の使っていない回路を刺激し、酷使した回路を冷却する。
この「マイクロ・リチャージ」を取り入れてから、俺の午後の生産性はどうなったと思う?
驚くべきことに、作業時間は減ったのに、こなせるチケットの数は増えたんだ。
しかも、コードのクオリティチェックで引っかかる回数が激減した。
「君のコード、最近冴えてるね」なんて言われるようにもなった。
一体、俺は何をしたのか。
ただボーッとするだけじゃダメだ。スマホでSNSを見るのも逆効果(これについては次回詳しく話す)。
エンジニアにはエンジニアに効く、特効薬的なリチャージ方法があるんだ。
次回、その具体的な「5分間の魔法」の中身について、包み隠さずシェアしようと思う。
デスクに縛り付けられている君のその背中の痛みも、凝り固まった脳みそも、きっとこれで軽くなるはずだ。
準備はいいか?
それじゃあ、Visual Studioを一旦最小化して、深呼吸の準備をしてくれ。
5分間の魔法「マイクロ・リチャージ」の実践 〜エディタから離れる勇気と具体的なメソッド〜
「あと1行だけ」の誘惑を断ち切る勇気
さあ、いざ実践だ。
前回、「1時間に1回、5分〜10分休め」と言ったけど、これを読んでいるあなたは今、こう思っているかもしれない。
「いや、実装がノッている時に中断するなんて無理でしょ。コンテキストスイッチのコスト、なめてんの?」と。
わかる。痛いほどわかる。
C#で複雑なLINQクエリを書いている途中や、WPFのXAMLでGridのDefinitionを調整している最中に手を止めるなんて、まるでトイレの途中で出てこいと言われるようなもんだ。
エンジニアにとって、脳内のワーキングメモリ(短期記憶)に展開された変数の状態を保持し続けることは、快感であり、義務でもあるからね。
でも、ここで断言する。
「キリが良いところまで」は、永遠に来ない。
これが俺の海外での最大の学びだ。
「このメソッド書き終わったら休もう」と思うと、そのメソッドから派生する別のバグが見つかる。
「このBindingのエラーが消えたら休もう」と思うと、今度はコンバーターの不具合に気づく。
そうやってズルズルと時間を引き延ばし、気づけば2時間が経過。その頃には脳内のメモリはリークを起こし、パフォーマンスはガタ落ちだ。
だから、マイクロ・リチャージの鉄則その1。
「時間駆動(Time-Driven)で強制的に割り込み(Interrupt)を入れること」。
イベント駆動(タスクが終わったら)じゃダメだ。タイマーが鳴ったら、行の途中だろうが、コンパイルエラーが出ていようが、Ctrl + S を押して、即座に椅子から立ち上がる。
この「強制ガベージコレクション(GC)」こそが、脳のヒープ領域をクリーンに保つ唯一の方法なんだ。
マイクロ・リチャージの「具体的メニュー」
じゃあ、その5分〜10分で何をするのか?
「ただ椅子に座ってスマホをいじる」?
ブッブー(不正解音)。 それは最悪の手だ(後述する)。
俺が実践している、効果絶大の「エンジニア向けリチャージ・メニュー」を紹介しよう。
ポイントは**「視覚」「姿勢」「感覚」の3つをリセット**することだ。
1. 視覚のリセット:20-20-20ルールの強化版
俺たちは一日中、数十センチ先の光る板(モニター)を見つめ続けている。眼球の筋肉(毛様体筋)は凝り固まって、悲鳴を上げている状態だ。
- 基本: 20分ごとに、20フィート(約6メートル)先を、20秒間見つめる。これが有名な「20-20-20ルール」。
- 俺流アレンジ: これにプラスして、「窓の外の『緑』か『空』を探す」。海外のオフィスは窓が大きいことが多いんだけど、遠くの雲の動きや、街路樹の葉っぱが風に揺れるのをボーッと見るんだ。モニターの中のピクセルは「静的」で「論理的」だけど、自然界の動きは「有機的」で「カオス」だ。この対比が、左脳偏重になった頭を右脳モードに少し揺り戻してくれる。もし窓がない環境なら、観葉植物でもいい。とにかく「デジタル信号」以外のものを網膜に映すんだ。
2. 姿勢のリセット:エンジニア特有の「巻き肩」を開放する
C#を書いている時の姿勢を思い出してほしい。
首は前に出て、肩は内側に入り、背中は丸まっている。いわゆる「猫背・巻き肩」の典型だ。この姿勢は呼吸を浅くし、脳への酸素供給を阻害する。つまり、酸欠状態でコードを書いていることになる。
- ドアフレーム・ストレッチ:トイレに行くついでに、ドアの枠(フレーム)に両手をかけ、胸を突き出すようにしてグーッと前に体重をかける。大胸筋が伸びて、縮こまった肩が開く感覚。これが最高に効く。「うあぁぁ〜」と変な声が出るかもしれないけど、海外の同僚は気にしない(むしろ「Good stretch?」と聞いてくる)。
- ゾンビ・シェイク:立ち上がって、全身の力を抜いて、ゾンビのようにブラブラと手足を揺らす。手首、足首、首。末端の血流を強制的にポンプするイメージだ。キーボードを叩き続けた指先の腱鞘炎予防にもなる。
3. 感覚のリセット:アナログな刺激を入れる
これが意外と重要だ。
コードという「実体のない論理」と格闘し続けていると、現実感覚が希薄になる。
- 冷水ショック:顔を洗うのが一番だけど、オフィスでは難しい。俺は、あえて冷たい水をコップに入れて、その冷たさを手のひらで感じる時間を数秒作る。あるいは、温かいコーヒーの「香り」だけに1分間集中する。
- 階段ダッシュ(または散歩):エレベーターを使わず、階段を2フロア分だけ降りて登る。心拍数を少しだけ上げるんだ。心拍数が上がると、脳への血流が増え、BDNF(脳由来神経栄養因子)という物質が出るらしい。実際、これをやった直後に「あ、さっきのバグ、非同期処理のawait忘れじゃね?」と閃くことが山ほどある。「解決策はデスクの上ではなく、階段の踊り場にある」。これ、名言テストに出ます。
絶対にやってはいけない「偽の休憩」
ここで、多くのエンジニアが犯す致命的なミスについて話そう。
休憩時間に**「スマホでSNSやニュースサイトを見る」**ことだ。
「えっ、息抜きじゃん」と思うかもしれない。
でも、脳の仕組みからすると、これは休憩になっていない。
PCの画面から、スマホの画面にインプットソースが切り替わっただけ。脳の視覚野と言語野はフル稼働し続けている。
しかも、SNSのタイムラインは「ドーパミン」を過剰に刺激するよう設計されている。
「いいね」がついたか気になったり、炎上ニュースを見てイラッとしたり。
これじゃあ、脳のCPU使用率は下がらないどころか、感情処理のプロセスまで立ち上がってオーバーヒートしてしまう。
これを俺は**「ジャンク・レスト(質の悪い休憩)」**と呼んでいる。ジャンクフードと同じで、その場は満たされた気になるけど、後で体が重くなるんだ。
マイクロ・リチャージ中は、デジタルデバイスを一切見ない。
これだけは守ってほしい。
情報はもうお腹いっぱいだ。必要なのは「情報の遮断」と「空白」なんだ。
テクノロジーは敵か味方か?
ここまでアナログな方法を中心に話してきた。
「えー、いちいちタイマーセットするの面倒くさいよ」
「集中してるとタイマーなんて聞こえなくなるし」
そう、そこが問題だ。
俺たちエンジニアは、ツールを作る側の人間だ。
この「マイクロ・リチャージ」という運用フローを、気合と根性で回そうとするのはエンジニアらしくない。
自動化できる部分は自動化し、ツールに管理させるべきだ。
次回、「転」のパートでは、このアナログな休息を**「テクノロジーの力」を使って強制的に、かつスマートに管理する方法**について話そう。
ただのポモドーロ・タイマーじゃない。WPFエンジニアらしい、ちょっとギークで、でも実用的なアプローチを紹介するよ。
Visual Studioの拡張機能? それとも自作アプリ?
答えは次回のお楽しみ。
とりあえず今、この記事を読み終わったら、一度立ち上がって深呼吸だ。
君の脳は、君が思っている以上に、新鮮な酸素を欲しがっているぞ。
テクノロジーでアナログな休息を管理する 〜ポモドーロの先へ。通知を味方につけるWPFエンジニア的アプローチ〜
意志力(Willpower)という名のメモリリーク
正直に告白しよう。「承」で書いたアナログなメソッド、最初の3日は続いたんだ。
でも、納期が近づき、バグチケットが積み上がってくると、途端に崩壊した。
「あと5分でこのメソッド書き終わるから、休憩はその後でいいや」
「今はフロー状態だから、中断するのはもったいない」
こうやって自分に言い訳をして、タイマーを無視し始める。
これは我々エンジニアの「さが」だ。問題を解決するまで止まりたくない。
でも、結果はどうだ? 結局、疲労困憊で生産性は落ち、夜中にくだらないミスでデバッグに時間を費やす羽目になる。
ここで気づいたんだ。
**「自分の意志力に頼っている時点で、システム設計として間違っている」**と。
ユーザー(自分)が誤った操作(休憩スキップ)をしないように、システム側で制御(強制介入)する必要がある。
そう、リチャージを「努力目標」から「強制イベント」に昇格させるんだ。
Level 1: 既存ツールによる「強制中断」の導入
まずは手軽なところから。世の中には「ポモドーロ・タイマー」アプリが溢れているが、エンジニアにおすすめなのは**「画面をロックする」機能がついた強権的なアプリ**だ。
私が海外の同僚に教えてもらって導入したのは、オープンソースの**『Stretchly』や、古参の『Workrave』**といったツールだ。
これらは単に通知音を鳴らすだけじゃない。設定した時間になると、画面全体をオーバーレイで覆い尽くし、マウス操作やキー入力をブロックする「Strict Mode(厳格モード)」がある。
最初は「ふざけんな!今いいところなんだよ!」とイラついた。
画面の真ん中に「Time to stretch!(ストレッチの時間だよ!)」なんてポップアップが出て、IDEが見えなくなるんだからね。
でも、この**「強制力」**こそが必要だった。
物理的にコードが書けない状態になれば、諦めて席を立つしかない。
「チッ、しょうがねぇな」と言いながらトイレに行き、帰ってくると、不思議と「あれ? さっきのロジック、もっとシンプルに書けるじゃん」と頭がクリアになっていることに気づく。
まるでPCの強制再起動だ。手動再起動を渋るユーザー(私)に対し、システム管理者がリモートで再起動をかけるようなもの。最初は不快だが、システムの健全性を保つためには不可欠な処理なんだ。
Level 2: WPFエンジニアの執念 〜自作ツール「Project Overlord」〜
しかし、既存のツールでは満足できなくなるのがエンジニアの悲しい性(さが)だ。
「この通知ウィンドウのデザインが気に入らない」
「会議中は自動でサイレントモードになってほしい」
「休憩中にランダムで技術書の引用を表示したい」
そんな欲求が爆発し、私はついに自分専用のリチャージ支援ツールをC# WPFで作り始めてしまった。
名付けて**「Project Overlord(絶対支配者)」**。
技術的なアプローチ(ギークな話)
WPFをやっている人ならわかると思うけど、実装はこんな感じだ。
- Topmostウィンドウの活用:Windowプロパティの Topmost=”True”、WindowStyle=”None”、WindowState=”Maximized” を設定し、最前面にフルスクリーンで黒半透明のウィンドウを表示する。これでVisual Studioは完全に見えなくなる。
- DispatcherTimerによる監視:マウスやキーボードの入力イベントをフック(Global Hook)して、「最後の操作から何分経過したか」を監視する。操作がない時間(会議中や電話中)はカウントせず、純粋に「コーディングしている時間」が50分を超えたら発動するロジックだ。
- 解除不可能なUI:画面には「Take a break」の文字と、5分間のカウントダウンのみ。「Skip」ボタン? そんな甘い機能は実装していない(デバッグモード以外では)。Alt + F4 も無効化するイベントハンドラを書いた時の、あの「俺は俺自身を支配するぞ」という奇妙な全能感は忘れられない。
これを社内のGitリポジトリに上げたら、意外にもチーム内でウケた。
「俺にも使わせろ」「機能追加のプルリク送っていいか?」なんて盛り上がり、結果的にチーム全体で「強制休憩」を楽しむ文化ができた。
自分が作ったバグ(ツール)に邪魔されて仕事が止まる。なんとも皮肉で、愛すべき状況だ。
Level 3: IoTと環境制御 〜「光」と「振動」による無意識への介入〜
ソフトウェアだけじゃない。ハードウェア、つまりIoTデバイスも活用した。
視覚と触覚へのアプローチだ。
1. スマートウォッチの「ハプティック(触覚)通知」
音での通知は、ノイズキャンセリングヘッドホンをしていると聞こえないし、周りの迷惑にもなる。
そこでスマートウォッチ(Apple WatchやGarminなど)の出番だ。
手首への「ブルッ」という物理的な振動は、どんなに集中していても無視できない。
私はポモドーロアプリと連動させ、25分おきに手首が振動するようにしている。
画面を見る必要すらない。手首が震えたら、条件反射でマウスから手を離し、深呼吸をする。パブロフの犬状態だが、これが脳への負担を劇的に減らす。
「思考の割り込み処理」を、脳内ではなく外部デバイスにオフロードするイメージだ。
2. スマートライト(Philips Hue)による「空間のモードチェンジ」
これが一番効果的だったかもしれない。
自宅のワークスペースの照明を、API経由でPCと連動させた。
- 集中モード(作業中):色温度6500Kの「昼光色」。青白い光で、脳を覚醒させ、論理的思考をブーストする。
- リチャージモード(休憩中):タイマーが作動すると、部屋の照明が自動的に色温度2700Kの「電球色(オレンジ)」に切り替わり、照度が落ちる。
これが起きると、視界に入る世界の色が変わる。
青白い光の中で張り詰めていた交感神経が、オレンジの光を浴びた瞬間に「あ、今は休む時間なんだ」と認識し、副交感神経が優位になる。
強制的にリラックスせざるを得ない雰囲気を、部屋全体で作ってしまうのだ。
同僚とのビデオ会議中にこれが発動して、急に私の部屋がムーディーなオレンジ色になった時は爆笑されたけどね。「お前、バーにいるのか?」って。
でも、これもまた海外のフランクな環境ならではの笑い話だ。
転換点:テクノロジーは「拘束」ではなく「解放」のためにある
こうしてガチガチに自動化された環境を作ってみて、最初は「機械に使われている」ような感覚になるかと心配した。
でも、実際は逆だった。
「いつ休もうか」と悩む必要がなくなったのだ。
これがどれほど脳のメモリを節約するか、計り知れない。
「もう少しやるべきか?」「いや、疲れたか?」という判断(Decision Making)は、それ自体が脳のリソースを消費するタスクだ。
その判断プロセスを全てプログラムに委譲(Delegate)したことで、私は「コードを書くこと」と「完全に休むこと」の2つだけに集中できるようになった。
皮肉な話だよね。
デジタル疲れを癒やすために、デジタル漬けの解決策をとるなんて。
でも、毒を以て毒を制す。
テクノロジーの暴力的なまでの便利さを、自分を追い込むためじゃなく、自分を守るために使う。
これが、現代の海外エンジニアが生きていくための「生存戦略(サバイバル・ストラテジー)」なんだ。
さて、私の手元のスマートウォッチがブルッと震えた。
どうやら休憩の時間らしい。
部屋の照明もオレンジ色に変わった。
「Project Overlord」が画面をブラックアウトさせるまで、あと10秒。
この強制的な静寂の向こう側に、本当の意味での「持続可能なエンジニアライフ」が待っている。
次回、最終章「結」では、これら全てを統合した先に見えた景色、そして「生産性」という言葉の本当の意味について、結論を出そうと思う。
(モニターが暗転する音)
持続可能なエンジニアライフへ 〜生産性の正体は「どれだけ休めるか」だった〜
コードのバグは減った。でも、もっと大事な変化があった
「Project Overlord(自作の強制休憩ツール)」を導入してから数ヶ月。私の仕事環境は劇的に変わった。
以前のように、午後3時にゾンビ化することはなくなった。夕方のコードレビューで、恥ずかしい初歩的なミスを指摘されることも激減した。
WPFの複雑なデータバインディングや、非同期処理の競合問題も、クリアな頭で冷静に対処できるようになった。
でも、一番の変化はオフィスの中じゃなくて、**「オフィスの外」**で起きたんだ。
以前の私は、定時に退社しても、脳はずっと仕事モードのままだった。
帰りの電車の中でも頭の中でバグの原因を探し続け、家に帰っても抜け殻のようにソファに沈み込み、YouTubeをダラダラ見て1日が終わる。
「海外生活を楽しみたい」と思って来たはずなのに、現実は「海外でただ労働しているだけ」の日々。
それが、マイクロ・リチャージを徹底してからはどうだ。
17時、定時のチャイム(こっちの会社にはないけど)が鳴った瞬間、私は**「余力」を残して**PCを閉じることができるようになった。
バッテリー残量5%で瀕死の状態じゃなくて、40%くらいのエネルギーを残して帰宅できるんだ。
その40%のエネルギーで、現地の言葉を勉強したり、同僚とパブに行ったり、週末のハイキングの計画を立てたりできる。
「仕事が終わった後に、まだ自分の人生を楽しむ体力が残っている」。
これこそが、私が求めていた本当のワークライフバランスだったんだと気づかされたよ。
「人体」というレガシーシステムのメンテナンス
私たちエンジニアは、「技術的負債(Technical Debt)」という言葉を嫌うよね。
急いで汚いコードを書けば、その場は凌げるけど、後で利子をつけて返済(修正)しなきゃいけない。放置すればシステムは破綻する。
実は、私たちの体と脳もまったく同じなんだ。
休憩をスキップして働き続けることは、自分の体に「技術的負債」を積み上げているのと同じこと。
「今は若いから大丈夫」「このプロジェクトが終わるまでは」
そうやって先送りにした負債は、必ず後で「燃え尽き症候群(バーンアウト)」や「腰痛」「メンタル不調」という、取り返しのつかない巨大なバグとなって襲ってくる。
海外のシニアエンジニアたちを見ていると、彼らはこの「負債管理」のプロフェッショナルだと感じる。
彼らは決して無理をしない。バカンスはきっちり取るし、ランチタイムは仕事の話をしない。
一見「働いていない」ように見える瞬間もある。
でも、いざという時の瞬発力と、判断の的確さは凄まじい。
ある日、尊敬するリードエンジニアに聞いてみたんだ。
「なんでそんなに余裕があるんですか?」って。
彼はコーヒーを啜りながらこう言った。
「僕はね、自分というハードウェアを、最低でもあと20年は現役で稼働させたいんだ。そのためには、適切な冷却(Cooling)とメンテナンスが不可欠だろう? 壊れてから修理するより、壊さない運用をする方が、トータルコストは圧倒的に安いんだよ」
この言葉は、私のエンジニアとしての姿勢を根本から変えた。
自分を酷使することは、プロフェッショナルな献身じゃない。
運用保守(Ops)の失敗だ。
「生産性」の定義を再コンパイルせよ
日本にいた頃、私は「生産性」=「作業量 ÷ 時間」だと思っていた。
だから、分母の時間内にどれだけキーボードを叩けるかを競っていた。
でも、今は違う。
「生産性」=「価値ある判断(Value) ÷ 生涯(Lifetime)」 だと思うようになった。
エンジニアの仕事の本質は、タイピングの速さじゃない。
「どの設計を採用するか」「どこにバグの原因があるか」「何を実装しないか」という**「意思決定」**にある。
疲れた脳で10時間かけて書いた、バグだらけのスパゲッティコード。
クリアな脳で1時間で設計し、シンプルに実装された堅牢なコード。
どちらが会社にとって、そしてユーザーにとって価値があるかは明白だ。
マイクロ・リチャージを行うことで、一時的に作業時間は減るかもしれない。
でも、それによって得られる「クリアな思考」は、10時間の間違った努力を、たった1秒の正しい判断で凌駕する。
「休むこと」は、作業を止めることじゃない。
より高い次元のパフォーマンスを発揮するための「助走」なんだ。
読者のエンジニアの皆さんへ
今、このブログを読んでいるあなたは、きっと真面目で、責任感が強くて、技術が大好きなエンジニアだと思う。
WPFのXAMLが吐き出す意味不明なエラーメッセージにイライラしたり、終わらない仕様変更に頭を抱えたりしているかもしれない。
「休んでいる暇なんてない」と思っているかもしれない。
でも、どうか思い出してほしい。
最高のコードを書くための、一番重要な開発環境は、ハイスペックなPCでも、高価なエルゴノミクスチェアでもない。
あなた自身の「健康な脳と体」だ。
Visual Studioが応答なしになったら再起動するよね?
それと同じだ。
あなたの脳がフリーズしそうになったら、勇気を持って席を立ってほしい。
窓の外を見て、空の青さを感じてほしい。
冷たい水を飲んで、深呼吸をしてほしい。
そのたった5分の「空白」が、あなたのコードを、仕事を、そして人生を、鮮やかに彩り直してくれるはずだ。
Next Action: 明日の朝、最初にやること
さて、長いシリーズになったけど、ここまで付き合ってくれてありがとう。
最後に、私からあなたへ、小さなプルリクエスト(提案)を送りたい。
明日の朝、出社したら(あるいはリモートワークを始めたら)、まず最初にスマホのタイマーを「50分」にセットしてください。
そして、それが鳴ったら、何をしていても手を止めて、5分間だけモニターの前から離れてみてください。
最初は罪悪感があるかもしれない。
でも、信じてほしい。
その5分後、席に戻ったあなたの目には、さっきまで見えなかった「正解」が見えているはずだから。
海外の空の下より、あなたの健闘と、バグのないコード、そして健康な毎日を祈っています。
Happy Coding, and Don’t Forget to Recharge.

コメント