海外で「使える」日本の最強スキル? カイゼンマインドセットのリアル
どうも!海外の片隅で、今日もC#とXAML(WPF)とにらめっこしながら、なんとかサバイブしてるITエンジニアです。
このブログは、「いつか海外で働いてみたい!」って夢見てる、そこのあなた。特に、技術には自信あるけど、英語とかコミュニケーション、大丈夫かな…って不安に思ってる昔の僕みたいなエンジニアに向けて書いてます。
突然ですが、みなさん「海外で働くエンジニア」って、どんなイメージ持ってます?
なんか、超絶スマートな多国籍チームで、スタンディングデスクでマックブック叩きながら、流暢な英語で「Hey, Gvido! そのPythonのアーキテクチャ、イケてないね。こっちのほうがクールだぜ!」みたいな議論をバチバチ交わしてる…そんな感じすかね?
まあ、半分合ってるし、半分違います(笑)
確かに、環境は刺激的。僕のチームも、インド、東ヨーロッパ、南米、もちろん地元(今いる国)のエンジニアと、まさに人種のるつぼ。コミュニケーションは基本、英語です。
で、僕の専門はC#とWPF。どちらかというと、エンタープライズ向け(お堅い大企業とか、特殊なBtoB)のデスクトップアプリ開発がメイン。設計からガッツリ入るんで、Web系のイケイケなスタートアップとはちょっと毛色が違うかもですが、それでも開発のスピード感は日本にいた頃とは比べ物になりません。
さて、そんな環境に飛び込んでみて、最初にぶち当たった壁。
それは「技術力」でも「英語力」でもなかったりするんです。もちろん、どっちも死ぬほど大事ですよ?
でも、それ以上に僕が「うわ、これヤバい」って感じたのは、「仕事の進め方」に対するカオスさでした。
日本で、特に僕がいたようなC#で設計開発をきっちりやる現場だと、ウォーターフォールじゃなくても、ある程度「型」がありますよね。仕様がしっかり固まって、設計レビューがあって、実装して、単体テストして…。
こっち(海外)は、良くも悪くもアジャイル。いや、アジャイルっていうか…正直、「とりあえず作ってみようぜ!イェーイ!」みたいなノリが強くて(笑)。
もちろん、それがスピード感を生むんですけど、設計担当としては「いや、そこのインターフェース、後で絶対問題になるって!」とか「その実装、パフォーマンス大丈夫?」って思うことが山積み。
でも、新参者の僕が、慣れない英語で「ちょっと待った!その設計は…」なんて言っても、「Ah, Don’t worry, man!(心配すんなって!)」で流されちゃう。
悔しいですよね。
自分の技術(僕はC#とWPFの設計には、それなりにプライド持ってます)が、プロセス(仕事の進め方)のカオスさのせいで、100%活かせない。むしろ、後から発生する大量のバグや手戻りのせいで、チーム全体のパフォーマンスが落ちてる。
「やべえな、このままじゃ、ただの『コード書ける人』で終わっちまう…」
そんな焦りを感じていた時、ふと、日本にいた頃に先輩から叩き込まれた、あの言葉を思い出したんです。
「カイゼン(改善)」
そう、あのトヨタ生産方式とかで有名な「Kaizen」です。
正直、日本にいた頃は「またカイゼンかよ…」「日報に書くことねーよ」とか、ちょっと面倒くさいスローガンくらいにしか思ってませんでした。
でも、海外のこのカオスな現場に来て、改めて「カイゼン」っていう哲学を見直してみたら、気づいたんです。
「これ、海外でサバイブするための最強の『人生術』じゃね?」と。
多くの人が勘違いしてるんですけど、「カイゼン」って、別に「QCサークル活動」とか「製造業のライン工の話」だけじゃないんすよ。
カイゼンの本質は、「Continuous Improvement(継続的改善)」。
もっと噛み砕いて言うと、**「デカい革命を狙うんじゃなくて、毎日0.1%でもいいから、昨日よりマシな状態にしようぜ」**っていう、超絶地味だけど、超絶パワフルなマインドセットなんです。
これって、エンジニアリングとめちゃくちゃ相性良くないですか?
バグを一個潰す。リファクタリングでコードを少し読みやすくする。ビルド時間を1秒短縮する。
これ、全部「カイゼン」ですよね。
で、僕が気づいた「得する情報」っていうのは、この「カイゼン」を、自分のコードだけじゃなくて、「チームの働き方」そのものに適用するってこと。
「なんかウチのチーム、効率悪くね?」
「このミーティング、マジで無駄じゃね?」
「なんでいつもリリース直前でバグ祭りになるんだ?」
こういう「モヤッ」とした課題。
日本だと「まあ、そういうもんだし…」って諦めちゃうか、偉い人が鶴の一声で「全部変えるぞ!」ってデカい改革(そしてだいたい失敗する)を始めるかのどっちかだったりしません?
でも、海外のエンジニア、特に優秀なシニア層は、この「小さな改善」を回すのがめちゃくちゃうまい。
彼らは、「ルールだから」じゃなくて、「こっちのほうが合理的だから」で動く人たち。
だから、僕が「今のやり方、ちょっと非効率じゃない? **こういうデータ(根拠)**があるんだけど、小さくこう変えてみない?」って提案すると、ちゃんと聞いてくれるんです。
そう。ここで大事なのが、ただ「カイゼンだ!」って叫ぶことじゃなくて、ちゃんと**「武器」**を持つこと。
その武器っていうのが、今回のブログでガッツリ解説したい2つの相棒、**「カンバン(Kanban)」と「メトリクス(Metrics)」**なんです。
カンバンっていうのは、タスクを「見える化」する、あの付箋ペタペタやる(今はTrelloとかJiraだけど)やつですね。
そしてメトリクスっていうのは、数字。特に「サイクルタイム(一個の作業を始めてから終わるまでの時間)」とか「リードタイム(タスクがバックログに入ってからリリースされるまでの時間)」みたいな、「チームの健康診断」ができる数値のこと。
僕らC# / WPFエンジニアって、結構ロジカルなの得意じゃないですか(笑)。
そのロジカルさを、「感覚」や「政治」で進みがちなチームの「プロセス改善」にぶち込むんです。
「なんか最近遅いよね」じゃなくて、「先月のサイクルタイム、平均5日だったのが、今週は8日になってます。原因はXXのタスクが滞留してるからです」って、データでぶん殴る(言い方悪いけど)。
そして、「じゃあ、どうする?」っていうアクションを、チームで話し合って、小さく試してみる。
そのための「振り返り(Retrospective)」や「フィードバックループ」を、カンバンシステムに組み込む。
これこそが、僕が海外の現場で学んだ、最強の「カイゼン」の実践方法なんです。
このブログ記事(「承」以降)では、僕がこの「カイゼン」マインドと「カンバン&メトリクス」っていう武器を使って、どうやってカオスだった多国籍チームの信頼を勝ち取って、設計開発のプロセスを(ちょっとだけ)マシにしていったか、っていうリアルな話をしていきます。
ぶっちゃけ、これ、テクニック論であると同時に、海外で「ただの作業者」じゃなくて「価値を生み出せるエンジニア」として認められるための、めちゃくちゃ大事な「人生術」だと思ってます。
技術力に加えて、この「プロセスを改善する力」を身につければ、鬼に金棒。
あなたが海外のどこに行っても「お、こいつ、わかってるな」って一目置かれる存在になれるはず。
まずは「起」として、問題提起とカイゼンのマインドセットについて熱く語ってみました。
「承」では、じゃあ具体的にどうやってカンバンとメトリクス(サイクルタイムとか)を使って「見える化」すんのよ?って話をガッツリ解説していきますね。
ただのタスク管理じゃない。カンバンとメトリクスで「病巣」を可視化するサバイバル術
「起」の記事、読んでくれました?
「カイゼン、大事っすよねー」って、まあ、そりゃそうだ、と。
でも、海外の多国籍チームで「Hey guys! Let’s KAIZEN!(みんな、カイゼンしようぜ!)」なんて叫んだところで、「は?(What?)」って顔されるのがオチです。
そう、精神論(マインドセット)だけじゃ、人は動かない。
特に、ロジックと合理性で生きてるエンジニアはね。
僕らが(特に設計開発を担うC#エンジニアが)やるべきなのは、精神論を「見える化」すること。
そのための最強の武器が、前回チラッと話した**「カンバン」と「メトリクス」**なんです。
この「承」のパートでは、僕がどうやってこの2つを使って、カオスだったチームの「どこがヤバいのか」を丸裸にしていったか、その「技術」をシェアします。
誤解だらけの「カンバン」。それ、ただのTODOリストですよ?
まず「カンバン」。
TrelloとかJiraとか、Github Projectsとか、今どき使ってない現場のほうが珍しいですよね。
でも、ほとんどの現場が、カンバンの「本当の力」の10%も使えてない。マジで。
よくあるダメなカンバンって、こういうやつです。
[ Backlog ] | [ To Do ] | [ In Progress (開発中) ] | [ Done ]
これ、何がダメかわかります?
これじゃ、ただの「TODOリスト」なんです。
僕らC# / WPFエンジニアの仕事って、こんな単純じゃないですよね?
「In Progress(開発中)」って、中身がカオスすぎません?
僕らの仕事、分解してみましょうよ。
- 仕様・設計の詰め(←これ、WPFだとUI/UXと密結合するから超大事)
- 実装(C#でロジック書く)
- コードレビュー待ち(←ここ!曲者!)
- コードレビュー中
- レビュー修正
- QA(テスト)チームへの引き渡し待ち(←ここも曲者!)
- QAテスト中
- バグ修正
- リリース準備完了
ほら、「In Progress」の一言で片付けちゃいけない「状態」が、こんなにある。
僕がやった「カイゼン」の第一歩は、この**「現実(リアル)を直視する」**ことでした。
チームに言ったんです。
「なあ、俺たちの『In Progress』って、実はいろんな“待ち時間”だらけじゃないか? それ、全部“見える化”しようぜ」と。
で、カンバンボードをこう変えたんです。(あくまで一例ね)
[ To Do ] | [ Designing ] | [ Ready for Review ] | [ Reviewing ] | [ Implementing ] | [ Ready for QA ] | [ QA Testing ] | [ Done ]
ポイントは、**「作業中(Doing)」の列と、「待ち(Ready for…)」**の列を、ハッキリ分けたこと。
これ、マジでヤバい効果があります。
一瞬で、チームの「病巣」が可視化されるんです。
例えば、[ Ready for Review ] の列に、チケット(タスク)が5枚も6枚も溜まってたら?
それは、「実装は終わってるのに、シニアエンジニア(レビューする人)が忙しすぎて、レビューが追いついてない」っていう、明確なボトルネックのサインです。
日本にいた頃、「佐藤さん、あのレビューまだっすか…(汗)」って言いにくかったアレが、ボードを見るだけで一目瞭然になる。
そして、カンバンの「真の力」はもう一つ。
**「WIP(Work In Progress)制限」**です。
これは「同時にやっていい作業は、X個までね」っていうルール。
例えば、[ Implementing ] のWIPを「3」に設定する。
これは、「開発チーム全体で、同時に実装していいタスクは3つまで」っていうルール。4つ目をやりたかったら、どれか1つを [ Ready for QA ] に動かしてからにしろ、と。
これ、最初は「なんで制限すんだよ!遊んでるヤツが出るだろ!」って反対されます。
でも、僕らエンジニアならわかるはず。
コンテキストスイッチ(頭の切り替え)は、地獄のコストがかかる。
5個のタスクを全部80%進めるより、1個のタスクを100%終わらせて、次のタスクに行くほうが、圧倒的に早い。
WIP制限は、「あれこれ手を出すな。まず、目の前の一個を終わらせろ(Stop Starting, Start Finishing.)」っていう、チーム全体への強制ギプスなんです。
感覚を「数字」でぶん殴る。最強のメトリクス「サイクルタイム」
さて、カンバンで「現実」が見えるようになりました。
ボトルネック( [ Ready for Review ] に溜まってるな…)も、なんとなくわかりました。
でも、「なんとなく」じゃ、人は動かない。
特に、プライド高くてロジカルな海外のエンジニアは、「お前の感覚だろ?」で一蹴してきます。
そこで登場するのが、第二の武器**「メトリクス(Metrics)」**です。
色々ありますが、僕が一番重要視してるのは、たった2つ。
- サイクルタイム (Cycle Time)
- リードタイム (Lead Time)
この2つ、マジで人生変わるんで覚えてください。
【サイクルタイム】
超シンプルに言うと、**「エンジニアが、あるタスクの作業を『本気で』始めてから、『本気で』終わるまでの時間」**です。
さっきのカンバンで言うと、チケットが [ Designing ] もしくは [ Implementing ] に入った瞬間から、 [ Ready for QA ] に入るまでの時間。
【リードタイム】
こっちは、**「お客さん(あるいはPO)が『これ作って』とお願いしてから、お客さんの手元に『できました』と届くまでの時間」**です。
カンバンで言うと、[ To Do ] に入ってから、[ Done ] に入るまでの全時間。
何が言いたいか?
**僕らエンジニアがコントロールできるのは、「サイクルタイム」**なんです。
でも、**お客さん(ビジネスサイド)がキレてるのは、「リードタイム」**なんです。
で、この2つの「差」こそが、さっき可視化した「待ち時間( Ready for Review とか Ready for QA )」の合計なんです。
リードタイム = サイクルタイム + 待ち時間
これ、最強の「交渉材料」になります。
僕がやったこと?
Jiraとかのツールは、この「サイクルタイム」と「リードタイム」を自動で計算してくれる機能(Control Chartとか)がついてます。
(ついてなきゃ、Excelで手動集計したっていい。最初はね)
そのデータを、チームの定例会にドン!と突きつけるんです。
「Hey, チーム。俺たちの『サイクルタイム』(実装時間)は、平均3日間だ。これは素晴らしい。みんな優秀だ」
「でも、お客さんに届くまでの『リードタイム』は、平均15日間かかってる」
「…なんでだ? 12日間、どこに消えてる?」
「データを見よう。ほら、チケットは [ Ready for Review ] の列に、平均で7日間も滞在してる。これが犯人だ」
こう言われたら、もう誰も「感覚論」で反論できません。
「レビューが遅い」んじゃなくて、「レビュー待ちで7日間ロスしてる」っていう**「事実(Fact)」**を突きつけてるから。
これが、フックにあった**「informed decision-making(情報に基づいた意思決定)」**の第一歩です。
「お前が頑張れ」じゃなくて、「チームのプロセス(レビューの仕方)が、7日間のムダを生んでる。この『7日間』をどうやって減らすか、話し合おうぜ」
これが、僕の言う「カイゼン」です。
C#の設計(Architecture)を考えるのが得意な僕らにとって、チームの「プロセスを設計(Process Architecture)」するのも、同じくらいクリエイティブで、大事な仕事だと思いませんか?
「承」はここまで。
カンバンで「見える化」して、メトリクスで「数値化」した。
これで「病巣」は特定できました。
じゃあ、その「病巣」を、どうやって「治療」するのか?
冷笑的だった多国籍チームを巻き込んで、「じゃあ、こうしてみよう」っていう小さな一歩を踏み出すか。
次の「転」では、このデータを元に、僕が実際にチームに提案した「シンプルな振り返り(Retrospective)」と、そこから生まれた「小さなフィードバックループ」について、生々しい実録をお届けします。
(「まあ、データはわかったけど、俺のやり方は変えないよ」っていう、あのシニアエンジニアをどうやって説得したのか…とかね(笑))
【実録】「それ、意味ある?」冷笑的だった多国籍チームが、僕の「KAIZEN」に本気になった日
「承」で、僕らが「カンバン」と「メトリクス(サイクルタイム、リードタイム)」を使って、チームの「病巣」を特定したって話をしましたよね。
僕のチームのケースでは、データがハッキリとこう示していました。
- サイクルタイム(実装時間): 平均3日(優秀!)
- リードタイム(顧客に届く時間): 平均15日(遅すぎ!)
- 犯人(=待ち時間):
[ Ready for Review ]の列で、チケットが平均7日間も塩漬けにされている。
さて、データは揃った。
僕は、チームのウィークリーミーティングで、このグラフ(Jiraが吐き出したコントロールチャート)をドン!とスクリーンに映し出しました。
シーン…。
チームメンバー(インド人、ドイツ人、ブラジル人、アメリカ人)は、スクリーンと僕の顔を交互に見ています。
僕は、ちょっと震える声で(いや、最初はマジで緊張するんすよ、これ)切り出しました。
「Hey チーム。データを見ると、俺たち、実装はめちゃくちゃ早い。でも、レビュー待ちで7日間、つまり1週間半も失ってる。これって、お客さんにとっても、俺たちにとっても、めちゃくちゃ不幸じゃないか?」
その時、口火を切ったのは、チームで一番のシニアエンジニア。
仮に「アレックス」(ドイツ出身)としましょう。彼は、僕が専門にしてるC# / WPFのアーキテクチャにもめちゃくちゃ詳しい、いわゆる「10xエンジニア」。
そして、チームのコードレビューのほぼ8割を彼が担っていました。
アレックスは、コーヒーカップを片手に、眉をひそめてこう言いました。
「So what?(だから何だ?)」
僕:「いや、だから何だ?って… 7日間も…」
アレックス:「Kenta(僕の名前)、言いたいことはわかる。だが、俺は忙しいんだ。俺自身のタスクもある。その上で、君たち全員のコードをレビューしてる。品質を担保したいんだろ? だったら待つか、クソコードをマージするか、どっちかだ。それとも何だ? 俺に『もっと速くレビューしろ』って言うのか? 俺のコーディング時間を削れと?」
うわぁ…。
出た。一番言われたくないやつ。
これ、日本でもよくある「属人化」の典型ですよね。
「あの人がキーマンだから、あの人が詰まったら全部止まる」。
ここで僕が「そうだ!アレックス、君がボトルネックだ!」なんて言ったら、もう終わり。彼は二度と僕のコードをまともにレビューしてくれなくなるでしょう。海外は、こういう対立が「ガチ」なんです。
チームの空気も最悪。「あーあ、新入りが、一番触っちゃいけないところに触れやがった」みたいな顔をしてる。
でも、僕は(内心バクバクしながら)こう返しました。
「待って、アレックス。俺は、君を責めてるんじゃない。絶対に違う」
「むしろ、君が優秀すぎるから、今の『プロセス』が君をボトルネックにしてるんだ。これはアレックスの『責任』じゃなくて、チームの『仕組み(System)』の問題だ」
「だから、お願いがある。この『7日間』っていう数字を、チーム全員で『敵』だと見なさないか? アレックス個人の問題じゃなく、俺たち『チームの問題』として、この『7日間』をどうやったら減らせるか、たった15分、ブレストしないか?」
これが、今回のフックにあった**「シンプルな振り返り(Simple Retrospective)」**への入り口です。
僕は、権限も何もないただのイチ設計エンジニア。
僕にできるのは、「命令」じゃなく、「ファシリテート(場を作ること)」だけ。
僕はホワイトボード(今はMiroとかのデジタルボードだけど)に、超絶シンプルな3つの枠を書きました。
- Keep(今のやり方で、うまくいってること、続けたいこと)
- Problem(今、困ってること、課題)
- Try(↑のProblemを解決するために、小さく試してみたいこと)
いわゆる「KPT(ケプト)」ってやつです。
僕はファシリテーターに徹して、チームに付箋を配りました。
「いいか、アレックスのことは一旦忘れよう。今、俺たちの開発プロセスでイケてるとこ、イケてないとこ、洗い出そうぜ」
最初は、みんな黙ってました。
でも、一人が「まあ、コードレビュー自体は、質が高いよね(Keep)」と書いたら、ポツポツと出始めました。
【Keep】
- アレックスのレビューは、マジで勉強になる。(←これ大事)
- 実装スピードは速い。
- C#のコーディング規約は、だいたい守れてる。
【Problem】
- レビュー待ち時間が長すぎる。(←出た!)
- アレックスが忙しすぎて、声をかけにくい。
- レビューを待ってる間に、別のタスクを始める。で、レビューコメントが来た頃には、もう前のタスクのこと忘れてる。(←これ!僕らWPFエンジニアにとって、複雑なViewModelのロジックとか、XAMLのBindingとか、思い出すのに地獄のコンテキストスイッチコストがかかる!)
- たまに、金曜の夕方に「2000行の変更」みたいな巨大なプルリクエスト(PR)が飛んでくる。アレックス「こんなもん、週末前に見れるか!」(←アレックスからのProblem)
- ジュニアエンジニア「アレックスにレビュー出すの怖いから、完璧にするまで溜め込んじゃう」
……出るわ出るわ。
15分後、ホワイトボードは付箋だらけ。
そして、全員が「あ、これ、アレックス一人の問題じゃねえわ」って顔をし始めました。
問題は、
「レビューの『仕組み』が、アレックスを地獄に突き落とし」
「レビューの『単位(サイズ)』が、デカすぎる」
「レビューの『タイミング』が、最悪」
だったんです。
これが「カイゼン」の第一歩。「個人の問題」を「システムの問題」として再定義すること。
じゃあ、どうする?
一番大事な「Try(試してみること)」です。
「わかった、じゃあプロセスを全部変えよう!」
…これは、絶対にやっちゃダメ。失敗します。
「カイゼン」は、「Iterative Refinement(反復的な改善)」。
つまり、**「小さく試して、ダメならすぐ戻す」**が鉄則。
僕はチームにこう提案しました。
「OK、問題はわかった。じゃあ、次の2週間だけ、試しにこのルールでやってみないか?」
【Try(実験)】
- ルール1:プルリクエスト(PR)は、200行(目安)まで!「2000行のPR」が諸悪の根源だった。設計担当(僕ら)が、もっとタスクを小さく分割する。C#のクラス一個追加、ViewModelのロジック一個修正、くらいでPRを出す。「小さく作って、すぐレビュー」を徹底する。
- ルール2:『レビュー待ち』のWIP制限を『3』にする!カンバンの [ Ready for Review ] の列に、チケット(付箋)を3枚までしか置いちゃダメ、というルール。4枚目を置きたかったら?
- ルール3:『レビュー待ち』が詰まったら、全員でレビューする![ Ready for Review ] がWIP制限(3枚)で詰まったら、「実装」はストップ。開発者全員(ジュニアもシニアも)、その3枚のどれかを**「ピアレビュー(同僚レビュー)」**する。アレックスは、その「ピアレビュー済み」のコードを、最終チェック(アーキテクチャ的にOKか)だけする。
これが、フックにあった**「フィードバックループ(Feedback Loops)の最適化」**です。
アレックス(シニア)が全部見る「シングルフィードバックループ」から、
チーム全員でまず見る「ピア・フィードバックループ」を挟むことで、アレックスの負荷を激減させる作戦です。
ジュニアエンジニアは、アレックスに直接出すより、同僚にレビューしてもらうほうが心理的ハードルが低い。
アレックスは、タイポとか簡単なロジックミスが全部潰された「キレイなコード」だけを見ればいい。
「どうだ、アレックス?」
アレックスは、腕を組んで、しばらく考えていましたが、こう言いました。
「…まあ、悪くない。PRが小さくなるなら、俺の負担は減る。ピアレビューの質は信じないが、試すだけなら。ただし、2週間だぞ」
勝った。
(いや、別に勝負じゃないけど)
これが、「転」。
データで殴るだけじゃなく、データを「共通の敵」として提示し、「シンプルな振り返り(KPT)」という安全な場で、「チームの実験(Try)」として「小さなフィードバックループ改善」を合意した瞬間です。
僕がやったのは、C#のコードを1行書くことでも、WPFの設計をすることでもありません。
チームの「コミュニケーション」と「プロセス」を設計(デザイン)したんです。
この「2週間の実験」が、どういう結果になったか?
そして、この「カイゼン」のマインドが、海外で働くエンジニアにとって、どれだけ最強の「人生術」になるのか。
それは、最後の「結」で、たっぷり語らせてください。
たった2週間の「実験」がチームを別物に変えた。明日からできる「最強のカイゼン」スターターキット
「転」のパート、読んでくれました?
僕ら(というより僕)が仕掛けた、あのヒリヒリするような「2週間の実験」。
- PR(プルリクエスト)は200行まで!
- 「レビュー待ち」のWIP(仕掛中)は3つまで!
- 詰まったら全員でピアレビュー!
あの日、シニアエンジニアの「アレックス」が、しぶしぶ「…2週間だけだぞ」と頷いてから、チームの空気が変わりました。いや、正確には「変えざるを得なかった」が正しいかも。
そして、運命の2週間後。
再び、ウィークリーミーティングの時間がやってきました。
僕は、あの時と同じように、Jiraのダッシュボード(グラフ)をスクリーンに映し出しました。
そして、2週間前のデータと、今のデータを並べました。
チーム全員が、息を呑んだのが分かりました。
- サイクルタイム(実装時間): 平均3日 → 平均2.8日(まあ、微増減は誤差。相変わらず優秀)
- リードタイム(顧客に届く時間): 平均15日 → 平均8日
- 犯人(レビュー待ち時間): 平均7日間 → 平均2.5日
勝った。
(いや、だから勝負じゃないって)
リードタイムが、ほぼ半分になったんです。
今までタスクが「終わった」と思ってから、さらに1週間半も宙ぶらりんだったのが、2〜3日でリリースQAに回るようになった。
これ、数字以上にデカい効果がありました。
まず、アレックスが、明らかに機嫌が良くなった(笑)。
そりゃそうです。彼が地獄の形相でレビューしてた「2000行のクソデカPR」が消滅したんですから。
200行くらいの小さなPRが、ピアレビュー(同僚レビュー)で簡単なミスが潰された状態で、彼の元に届く。
彼がやることは、アーキテクチャ的な観点(僕らC# / WPFエンジニアでいうところの、ViewModelの責務が適切か、とか、DI(依存性注入)の使い方がヤバくないか、とか)をチェックするだけ。
彼の負担は、激減しました。
次に、ジュニアエンジニアが、明らかに楽しそうになった。
今までは「アレックス(神)にレビューしてもらう」っていう、超絶高いハードルでした。
それが「同僚(僕とか他のメンバー)とピアレビューし合う」になった。
「Kenta、ここのXAMLのBindingの書き方、もっとクールな方法ない?」
「お、そのViewModelのロジック、俺が前に作ったサービスクラス使えば一発だよ」
レビューが「ダメ出し」から**「設計のディスカッション」に変わったんです。
これが、フックにあった「Iterative Refinement(反復的な改善)」と「Feedback Loops(フィードバックループ)の最適化」**の、本当の姿でした。
フィードバック(レビュー)が、**「遅く、重く、一方的」だったのが、「速く、軽く、双方向」**になった。
チーム全体のスキルが、底上げされていく感覚。
そして何より、僕らチームが**「数字(メトリクス)を見て、自分たちでプロセスを改善できた」**という、とんでもない成功体験を手に入れたこと。
「なんか知らんけど、Kentaがルール決めたら速くなった」
じゃなくて、
「俺たちが『Problem』で出し合った課題を、『Try』で実験したら、メトリクス(数字)がマジで改善した!」
という「自分たちの手柄」になったんです。
もう、お分かりですよね。
僕がやったことって、C#の高度なテクニックでも、WPFの神がかったUIデザインでもありません。
日本(トヨタ)が生んだ、**「カイゼン」という名の「システム思考(Systems Thinking)」**を、チームに持ち込んだだけ。
- 【見える化】:カオスな現実を「カンバン」で直視する。
- 【数値化】:感覚的な「遅い」を「メトリクス(リードタイム)」で定量化する。
- 【問題の特定】:「犯人(個人)」を探すんじゃなく、「病巣(システムの問題)」を特定する。(例:レビュー待ち7日間)
- 【安全な場の設定】:「振り返り(KPT)」で、文句じゃなく「課題」として共有する。
- 【小さな実験】:デカい改革じゃなく、「2週間だけ」の「小さなTry」を合意する。
- 【結果の測定】:そして1に戻る。
この「カイゼン・ループ」を回し始めたチームは、マジで別物になります。
「誰かの指示で動く」チームから、**「データを見て自走する」**チームに変わるんですから。
【結論】海外で最強の武器は「カイゼン」という人生術
このブログを読んでる、かつての僕のような「海外で働きたいエンジニア」のあなたへ。
ぶっちゃけ、C#のスキル、WPFの知識、英語力。これらは「入場券」です。
それがないと、土俵にも立てない。死ぬ気で勉強してください。
でも、海外の現場で、多国籍の優秀な(そしてクセの強い)エンジニアたちの中で、「こいつ、ただのコード書きじゃないな」と一目置かれ、「設計(Design)」や「アーキテクチャ(Architecture)」という、本当に面白い仕事を任されるために必要なもの。
それは、**「プロセスを設計し、チームを改善する能力」**です。
僕らエンジニアは、ロジックの塊です。
そのロジカルな思考を、コードだけじゃなく、「チームの働き方」というカオスなシステムに向けてみてください。
「なんで、このミーティングあるんだっけ?」
「なんで、このドキュメント書くんだっけ?」
「なんで、俺たちのリードタイムは、サイクルタイムの5倍なんだっけ?」
**「Why?(なぜ?)」**と問い、
**「How about this?(小さくこう試してみない?)」**と提案する力。
これこそが、僕がこの海外の現場で学んだ、最強の「人生術」であり、日本人が持つ最強の武器**「KAIZEN」**の正体です。
【明日からできる「カイゼン」スターターキット】
「いやいや、Kentaさん。あんたみたいに、いきなりチーム動かせねえよ」
わかります。
だから、まずは「あなた一人」から始められるカイゼンを。
- 自分の「PR(プルリクエスト)」を、必ず200行以下にする。これは、誰の許可もいりません。あなたがC#のクラスを一個作ったら、そこでPR。ViewModelのロジックを一個直したら、そこでPR。小さく、小さく。これだけで、あなたのコードレビューは爆速で終わるようになり、あなたの評価は上がります。
- 自分の「サイクルタイム」をこっそり測る。あなたがタスクに着手した時間と、レビューに出した時間を、メモるだけ。「あ、このタスクは設計で悩んで3日かかったな」「こっちは実装は1日だけど、テストコードで1日かかったな」自分の「得意・不得意」が「見える化」されます。
- チームの「振り返り(レトロスペクティブ)」で、「Problem(課題)」を1個だけ、勇気を出して言ってみる。「レビュー待ちが長い“気がする”」じゃダメ。「僕のタスクAとタスクB、どっちもレビュー待ちで3日止まっちゃったんですけど、これって何かレビューしやすくする方法とかありますかね?」「私(I)」を主語にして、「困ってる」と「提案(助けを求める)」をセットで言う。
この「小さな一歩」こそが、カイゼンです。
この一歩を踏み出せたら、あなたの海外エンジニアとしてのキャリアは、マジで別物になりますよ。保証します。
長くなりましたが、僕のリアルな体験談はここまで。
読んでくれて、ありがとうございました!

コメント