海外でC# / WPFエンジニアとして設計・開発に携わっている僕が、現場でのリアルな気づきを綴るブログへようこそ。
今回は、海外のハイパフォーマンスなチームが共通して持っている「勢い(Momentum)」の正体と、それを自分たちの手で作り出す方法についてお話しします。特に、言語や文化の壁にぶつかりながら「エンジニアとしてどう突き抜けるか」を模索している皆さんに届いてほしい内容です。
1. 「頑張っているのに進まない」――停滞という重い岩の前で
やあ、みんな。元気かな。僕は今、海外でC#とWPFをメインに、デスクトップアプリの設計から実装まで担当している。こっちに来て数年が経つけど、今でも毎朝スタンドアップ(朝会)で自分の進捗を英語で伝える時は、少しだけ背筋が伸びる思いがするよ。
僕が海外に移住して、最初に配属されたプロジェクトでのことだ。そこは世界中からシニア級のエンジニアが集まる精鋭部隊のはずだった。でも、実際に入ってみて驚いたんだ。空気が、あまりにも「重い」。
守りのオーラに支配された現場
プロジェクトは巨大なWPFアプリケーション。MVVMパターンは崩れかけ、Viewにビジネスロジックが染み出し、async/awaitの使い方が怪しくてデッドロックが頻発するような、いわゆる技術的負債が山積みの状態だった。
- 負の連鎖: 新機能を一つ追加するたびに、既存のバグが10個ほど顔を出す。
- レビューの停滞: PR(プルリクエスト)を出せば、レビューで100件近いコメントがつく。
- 精神的疲弊: 全員が「火消し」に追われ、今日のリリースを乗り切るためだけに力尽きている。
僕は焦りから、毎日遅くまで残ってリファクタリングを提案した。でも、やればやるほど泥沼にハマっていく感覚があったんだ。
「勢い(Momentum)」はどこにある?
ある金曜日の夜、デプロイ直前のバグ対応で疲弊していた僕に、隣のチームのリードエンジニアがこう言ったんだ。
“Hey, you guys are working hard. But where is your Momentum?”
(君たちは頑張ってるね。でも、”勢い”はどこにあるんだい?)
彼は続けた。「一度止まった巨大な岩を動かすには、とてつもないエネルギーがいる。でも、一度ゆっくりとでも転がり始めれば、あとは小さな力で加速していく。君たちは岩を動かそうと体当たりしているけど、まずはその下にある小さな石を取り除くことから始めるべきだ」
これが、僕が**「Unstoppable Momentum(止まらない勢い)」**という概念に出会った瞬間だった。
2. 慣性の法則を味方につける技術:Start Small, Measure Everything
「勢いが必要だ」と言われても、当時の僕は途方に暮れていた。でも、彼のアドバイスをヒントに、僕は自分のやり方を180度変えることにした。それが、海外のハイパフォーマンスな現場で生き残るための「実践の極意」だ。
① 宇宙を救おうとするな(Start Small)
エンジニアは完璧なアーキテクチャを夢見て、大規模なリファクタリングを一度にやろうとしがちだ。しかし、海外のシニア層を説得するには、巨大なリスクは避けるべきだ。
僕が始めたのは、**「誰も文句を言わないくらい小さな、でも確実な改善」**だった。WPFのUIのカクつきを直すために、コード全体ではなく、一つの ItemsControl の仮想化設定を見直す。たった一つのイベントハンドラのリークを直す。この「Small Win(小さな勝利)」が、信頼の種をまく最初のエンジニアリングになる。
② 感情ではなく、数字で殴れ(Measure Everything)
「なんとなく軽くなった」という報告は、海外の現場では無価値だ。彼らが信じるのはデータだけだ。僕は BenchmarkDotNet を使い倒し、リファクタリング前後の実行速度やメモリ割り当て(Allocation)を可視化してPRに貼り付けた。
数字は共通言語だ。僕のたどたどしい英語の100倍の説得力を持って、「この改善には価値がある」と証明してくれた。
③ 完璧より、スピード(Iterate Quickly)
巨大なPRは勢いを殺す。僕はPRのサイズを徹底的に小さくした。「1つのPRで変更するのは200行以内」という自分ルールだ。
- レビューの高速化: 1分でチェックできるPRは即座にマージされる。
- ポジティブなリズム: 1日に何度も「マージの音」が鳴り響く。
- 慣性の発生: 「自分たちは進んでいる」というリズムが、チームの慣性を生む。
3. 複利がもたらす未来:1%の改善が士気を変える
この「1%の改善」が牙を剥き始めたのは、数週間後だった。
1.01の365乗は「37.78」になる
毎日1%の改善を続けると、1年後には開始時の約38倍になる。逆に1%ずつサボれば、1年後にはほぼゼロ(0.03)になる。
$$1.01^{365} \approx 37.78$$
僕が ViewModel ベースを少しずつ整理したことで、数ヶ月後、別のエンジニアが「君のクリーンアップのおかげで新機能の実装が半分の時間で済んだよ」と言ってくれた。僕が作った小さな「余裕」が、他の誰かの「時間」を生み出した瞬間だ。
Getty Images
詳しく見る
バーンアウトを防ぐ「進歩の感覚」
エンジニアを疲れさせるのは忙しさではなく、「進歩していないという感覚」だ。勢いが生まれたチームでは、メンバーの顔つきが変わる。「自分たちはこの巨大なシステムをコントロールできている」という万能感が、バーンアウトを防ぐ最強の特効薬になる。
未来を予測するな、未来に耐えうる設計を
勢いのあるチームの設計思想は、「Future-predicting(未来予測)」ではなく**「Changeability(変更の容易さ)」**に重きを置く。大きな設計図を描くことに時間を使う代わりに、「今日、小さな変更を加えても壊れないという自信」をシステムに組み込むのだ。
4. Unstoppable Momentumをその手に:君の人生を加速させる方法
最後に伝えたい。Momentum(勢い)は、待っていればやってくる幸運ではない。君自身が、意図的に設計し、作り出すものだ。
市場価値を複利で増やす
C#やWPFの深い知識、クラウド、あるいは英語。これらを一気に完璧にしようとする必要はない。「昨日の自分より、ほんの1%だけマシなコードを書く」「昨日より一つだけ、新しい英語の表現を朝会で使ってみる」。
この積み重ねが指数関数的な成長(Exponential Growth)に変わったとき、君はチームにとって「替えのきかない、勢いを生み出す中心人物」になる。
今日からできる「最初の1%」
この記事を読み終わった直後、君にやってほしいことがある。明日の仕事で、**「誰も気づかないような、でも確実な1%の改善」**を一つだけ実行してみてほしい。
- 使いにくい変数名を一つリファクタリングする。
- 不安定なテストを一つだけ安定させる。
- 進捗を「数字」でマネージャーに報告してみる。
一度転がり始めた岩は、君を想像もしなかった高い場所へと連れて行ってくれるはずだ。世界中のエンジニアが、君の背中を押してくれるのを待っている。
じゃあ、また現場で会おう。Happy Coding!

コメント