炎上プロジェクトは過去の遺物? AIが予見する「予測可能な未来」
さて、いきなりですが、皆さんは「炎上プロジェクト」って好きですか?
……好きって人はいないか(笑)。
でも、残念ながら、俺たちのITエンジニアリング、特に大規模なソフトウェア開発っていうのは、驚くほど「炎上」と隣り合わせです。
俺も海外に来て早々に、そりゃあもう見事な大炎上を経験しました。
あれは、ある金融系のクライアント向けに、結構複雑な取引データを表示・操作するためのWPFアプリケーションを開発していた時のこと。チームは、俺(日本)、インドのバックエンドチーム、アメリカのプロダクトオーナー(PO)、そしてヨーロッパのQA(品質保証)チームという、まさに「時差ぼけ多国籍軍」。
俺は主にクライアントサイドの設計と開発、つまりC#とWPFを使った画面周りを担当していました。MVVMパターンに則って、それはもうキレイに作ろうと意気込んでたわけです。
でも、燃えた。
リリース予定日の3週間前、QAチームから上がってきたレポートを見て、俺は血の気が引きました。
「特定の操作(数十万件のデータをグリッドに読み込んで、複雑なフィルタリングをかけた後)をすると、アプリケーションが5分間フリーズする」。
……5分?
冗談だろ? 俺のローカル環境じゃ、せいぜい数千件のデータでしかテストしてない。
慌てて本番に近いデータで試すと、確かに止まる。UIスレッドがガッチガチに固まって、Windowsから「応答なし」の宣告。
そこからが地獄の始まりでした。
いわゆる「リアクティブ(反応的)な問題解決」のスタートです。
- 深夜のデバッグ: まず、時差が最悪。俺が問題を調査し始めると、アメリカのPOは寝る時間。インドチームは起きてるけど、彼らの担当はバックエンドAPI。「フロントの問題だろ?」と。
- コミュニケーションの壁: 「なぜこの仕様で、こんな大量のデータを一度に読み込む必要があるんだ?」とPOにチャットしても、返事が来るのは日本の深夜。しかも返ってきた答えは「ユーザーは全データを一度に見たい『かもしれない』」。かもしれない、だと!?
- リアクティブの連鎖: パフォーマンス問題の原因を探ると、俺が書いたコード(C#のLINQ)が非効率だった部分もある。でも、根本は「そんな量のデータをクライアントサイドで処理する」という設計そのものにあった。「なんで設計レビューで誰も気づかなかったんだ?」「いや、POがそう言ったんだ」「インドチームのAPIのレスポンスが、想定よりデカすぎるのが悪い」
もう、犯人探しの始まりです。
結局、俺は3日間ほぼ寝ずにコードを修正し、UIの仮想化(Virtualization)を無理やり実装し、データ読み込みを非同期&ページング処理に変更することで、なんとか「フリーズはしない」レベルにまで持っていきました。
プロジェクトはギリギリ(3日遅れで)リリースされましたが、チームの雰囲気は最悪。俺は「火消し」はしたけれど、ヒーローじゃない。ただの「問題を起こした(ように見えた)デベロッパー」でした。
これ、海外で働くエンジニアを目指す皆さんを脅したいわけじゃないんです。
これが「普通」だったから。
俺たちはこれまで、**「いかに速く問題を見つけ、いかに速くバグを修正するか」**という「リアクティブ(反応的)な能力」で評価されてきました。火事が起きたら、誰よりも早く現場に駆けつけて消火する、スーパー消防士。それが「デキるエンジニア」の姿だったんです。
でも、ふと思ったんです。
**「そもそも、火事が起きる前に『そこ、火事になりますよ』ってわかったら、最強じゃないか?」**と。
ここで、冒頭のAIの話に戻ります。
俺たちが今、目の当たりにしているAIの進化は、単なる「コーディング補助」に留まりません。
最近のエンジニアリングの世界では、こんな言葉がトレンドになっています。
“The Future of Engineering: Proactive Projects, Predictable Outcomes”
(エンジニアリングの未来:プロアクティブ(先回り)なプロジェクトと、予測可能な成果)
これが何を意味するか。
1. 「リアクティブ(反応的)」から「プロアクティブ(先回り)」へのシフト
今までの俺たちは、バグ(火事)が起きてから動いていました。
これからのAIは、俺たちが書いたコード、プロジェクトの進捗、チームのコミュニケーション(チャットのログとか)を学習し、リリースする前にこう警告してくれます。
「ねえ、君が今コミットしたC#のコード、3週間前にインドチームが作ったあのAPIと組み合わせると、特定の条件下でメモリリーク起こすよ」
「アメリカのPOが出したあの仕様変更、今のアーキテクチャだとパフォーマンスにボトルネックが出る確率が85%だよ。設計見直さない?」
これが「プロアクティブな介入」です。
問題が発生してから対応するんじゃなく、問題が発生する前に、AIがそのリスクを予見し、俺たちに教えてくれる。
2. 「予測可能な成果 (Predictable Outcomes)」
これが実現すると、どうなるか。
俺があの時経験した「リリース3週間前の地獄」が、原理的に起こらなくなります。
エンジニアリングプロジェクトが、**「常に時間通りに、常に予算通りに」**終わる未来。
信じられますか? 今までは「納期に間に合えば奇跡」みたいな世界だったのに。
「炎上」や「デスマーチ」という言葉が、俺たちの子供世代には「昔のIT業界って、そんな非効率なことしてたの?」と笑われる、歴史上の産物になるかもしれないんです。
この「プロアクティブな未来」が訪れた時、俺たちエンジニアに求められるスキルは、根本から変わります。
スーパー消防士(バグ修正の達人)であることの価値は、相対的に下がる。だって、そもそも火事が起きないんだから。
WPFのXAMLを誰より速く書けるとか、C#の複雑な非同期処理を暗記してるとか、そういう「技術力」も、AI(Copilot)がやってくれるようになる。
じゃあ、俺たちは何をすべきか?
価値を持つのは、「AIの予言」を正しく解釈し、火事が起きないように**「設計」し直せるエンジニア。
AIが「リスク85%だよ」と教えてくれた時に、「OK、じゃあアーキテクチャを変えよう。この部分はクライアント処理じゃなく、サーバーサイドでやるべきだ」と「判断」**できるエンジニアです。
もっと言えば、AIという最強の「予言者」を使いこなして、より複雑で、より創造的な「未来」をデザインする側に回ること。
これは、単なる技術トレンドの話じゃありません。
特に、言語や文化の壁がある「海外」で働くエンジニアにとって、これは死活問題であり、同時にとてつもないチャンスです。
なぜなら、この「プロアクティブ(先回り)な思考」と「予測可能な成果(必ず納期を守る)」こそが、国籍や言語を超えて「信頼」を勝ち取るための、最強の武器になるからです。
…と、壮大な話になってきましたが、これが今回のブログで俺が一番伝えたいことの「入口」です。
「わかった、未来はスゴそうだ。でも、具体的に俺たちは『今』、何をすればいいんだ?」
「WPFエンジニアとして、その『プロアクティブ』なスキルってどうやって学ぶんだよ?」
そうですよね。
次の「承」では、その「じゃあ、どうするの?」という部分を、俺の実体験(と、さらなる失敗談)を交えながら、もっと具体的に掘り下げていこうと思います。
言葉の壁より深刻な「信頼の壁」と、それをぶち壊す「予測可能性」という名の武器
「起」で話した、あの多国籍軍での炎上プロジェクト。
UIが5分固まるっていう、今思い出しても冷や汗が出るバグ。あの時、俺は「リアクティブ(反応的)消防士」として、3日間ほぼ寝ずにコードを修正し、なんとか火を消しました。
日本だったら、「お疲れ様!」「よくやった!」って、ヒーローになれたかもしれない。
でも、現実は違った。
火消しが終わった後の、プロジェクトの「振り返りミーティング(Retrospective)」。これが、俺にとって第二の地獄でした。
アメリカのPO(プロダクトオーナー)は、時差のせいで寝不足なのか、めちゃくちゃイライラしてる。
「なんでリリース直前まで、こんな重大なパフォーマンス問題が放置されてたんだ?」
「設計レビューの段階で、なぜ誰もリスクを指摘しなかった?」
俺は、つたない英語(サバイバル・イングリッシュ)で必死に説明しようとしました。
「いや、ローカルのテストデータは数千件だったんだ」
「まさか数十万件のデータを、クライアントサイドで一度に処理する仕様だったとは」
「APIのレスポンスが想定より巨大だった」
でも、伝わらない。
いや、正確には「伝わってはいるけど、響かない」。
俺の英語がネイティブじゃないから? それもある。
でも、もっと根本的な問題がありました。
彼らにとって、俺は「問題(バグ)を作り込み、チーム全員を危険に晒したデベロッパー」であり、その「言い訳」をしているようにしか聞こえなかったんです。
ここで、海外で働くエンジニアを目指す皆さんに、俺が骨身にしみて学んだ「人生術」を一つ。
海外のエンジニアリング文化、特に欧米系では、「夜通し頑張って解決した」という「根性」や「自己犠牲」は、基本的に評価されません。
むしろ、「なぜ、そんな事態になるまで放置したんだ?」「君のプランニング(計画)が甘かったんじゃないか?」と、**「計画性のなさ」「リスク管理の失敗」**として、マイナス評価されることすらあるんです。
これは衝撃でした。
日本では(少なくとも俺がいた環境では)、火消しに成功したエンジニアは、ちょっとしたヒーローでした。でも、こっちでは「放火犯が、自分で火を消した」くらいの目で見られかねない。
彼らが評価するのは「頑張り」じゃない。
**「予測可能(Predictable)な成果」**です。
POは、俺にC#の美しいコードを書いてほしいわけじゃない(もちろん、汚いのはダメだけど)。
彼が欲しいのはただ一つ、「約束した機能が、約束した日(納期)に、約束した品質(バGS)で動くこと」。
この「約束を守る」という行為、つまり「予測可能性」こそが、国籍や文化、言語の壁を超えて「信頼」を勝ち取るための、唯一にして最強の通貨なんです。
考えてみてください。
俺たち「外国人エンジニア」は、ミーティングという戦場で、すでにハンデを背負っています。
ネイティブスピーカーたちが、早口の英語で仕様について議論している時、俺たちは必死でリスニングし、頭の中で日本語に翻訳し、反論を考え、それをまた(文法的に怪しい)英語に組み立てて発言する。
このプロセスに、彼らの3倍のエネルギーを使ってる。
俺が「あの、その仕様だとパフォーマンスが…」と、おずおずと手を挙げる前に、議論は次のトピックに移ってるんです。
言葉じゃ、勝てない。
じゃあ、どこで勝負するか?
「コード」と「成果」です。
そして、その「成果」の質が、AIによって変わろうとしている、というのが「起」で話したこと。
これまでの「バグを速く直せる」という消防士のスキルは、AIが「そもそも火事を起こさせない」ように進化するにつれて、価値が下がっていく。
じゃあ、俺たちC# / WPFエンジニアは、どうすればいいか?
俺は、あの地獄の振り返りミーティングの後、自分の働き方を根本から変えました。
「リアクティブ(反応的)消防士」から、「プロアクティブ(先回り)な建築家」へ。
具体的にやったこと?
例えば、WPFエンジニアとして、新しい画面の設計を任された時。
【以前の俺(リアクティブ)】
- POの仕様書(要求)を読む。
- 「OK、データグリッドに大量のデータを表示するんだな」
- MVVMパターンに則って、ViewModelとViewをC#とXAMLで書き始める。
- 「データバインディング、よし。コマンド、よし。コードはクリーンだ」
- QAチームに渡す。→(そして、あの炎上が起きる)
【今の俺(プロアクティブ)】
- POの仕様書(要求)を読む。
- 「待てよ、『大量のデータ』って、具体的に何件だ? 1万件? 100万件?」
- (プロアクティブ行動1:質問)POにチャットする。「この画面、最大で何件のデータを扱う想定? 1万件を超えるなら、クライアントサイドでの全件読み込みはパフォーマンスリスクがある。ページングか、サーバーサイド・フィルタリングの実装を推奨するけど、どうする?」
- (プロアクティブ行動2:事前検証)POが「いや、全件必要だ」と言い張った場合。コードを書き始める前に、まずVisual Studioのプロファイラ(診断ツール)を使って、意図的に100万件のダミーデータを読み込ませる「実験コード(スパイク)」を書く。
- (プロアクティブ行動3:証拠の提示)案の定フリーズする。その時のCPUとメモリ使用率のグラフ(プロファイラのスクショ)を撮って、POとチーム全員に送る。「この仕様のまま実装した場合、これが現実だ。ユーザーは5分待つことになる。俺の提案通り、サーバーサイド・フィルタリングの設計に変更させてくれ」
これが、「プロアクティブな介入」です。
火事が起きてから消火するんじゃなく、設計図の段階で「ここ、燃えますよ」と指摘し、燃えない設計(アーキテクチャ)を提案する。
そのために、自分の専門知識(WPFのUI仮想化、非同期処理、C#のLINQの特性)を総動員し、プロファイラという「AIの先祖」みたいなツールを使いこなす。
これ、地味ですよね?
3日間徹夜でバグを直す方が、よっぽどドラマチックで「仕事した感」がある。
でも、海外のチームで「信頼」を勝ち取ったのは、間違いなく後者の「今の俺」でした。
俺がプロファイラの「証拠(エビデンス)」を突きつけて設計変更を提案した時、あのイライラしていたアメリカのPOが、チャットで一言こう返してきました。
“This is solid. Good catch. Let’s go with your proposal.”
(「これは堅実だ。よく見つけた。君の提案でいこう」)
この瞬間、俺は「言葉」の壁を超えて、「信頼」を勝ち取った、と感じました。
バグのない、パフォーマンスの出たコードは、それ自体が世界共通語です。そこに、英語の流暢さは関係ない。
AIが進化すれば、この「プロアクティブ行動」はさらに加速します。
俺が今、手動でプロファイラを回してやってるような「リスク予見」を、AIがコーディング中にリアルタイムでやってくれるようになる。
「ねえ、君が書いてるそのViewModel、インドチームのAPIと組み合わせると、3週間後にQAチームを泣かせるよ」って。
そうなった時、俺たちエンジニアの仕事は、AIの警告を元に、「じゃあ、どういう設計(アーキテクチャ)なら、この問題を回避しつつ、ビジネス要件(POのわがまま)も満たせるか」を考えること、それだけになります。
これは、脅威でしょうか?
俺は、**「これ以上ないチャンス」**だと思っています。
特に、俺たちのような「言葉のハンデ」を背負って海外で戦うエンジニアにとって、AIは最強の「通訳」であり「相棒」になってくれます。
AIという相棒を使いこなし、「予測可能(Predictable)」な成果を出し続けるエンジニア。
それこそが、国籍や言語に関係なく、グローバルなプロジェクトで本当に必要とされる人材なんです。
…じゃあ、その「最強の相棒」を使いこなすために、俺たちは具体的に「今すぐ」何を学び、何を準備すべきなのか?
WPFとC#で学んだスキルは、このAI時代にどう役立つ(あるいは、役立たなくなる)のか?
その核心的な話を、次の「転」でぶちまけたいと思います。
AIは「シンタックス」を、人間は「アーキテクチャ」を。—WPFエンジニアがAI時代に最強である理由—
「承」の最後で、俺はこう問いかけました。
「AIという最強の相棒を使いこなすために、俺たちは何を学ぶべきか?」
「WPFとC#で学んだスキルは、このAI時代にどう役立つ(あるいは、役立たなくなる)のか?」
この答えを、先に言っちゃいます。
俺たちC#とWPF(特にMVVM)で設計の辛酸を舐めてきたエンジニアは、AI時代に、マジで、最強になれます。
「は? 何言ってんの?」
「WPFなんて、レガシー技術じゃん」
「AIって言ったらPythonだろ」
そう思った人も多いでしょう。
でも、よく考えてみてください。
「起」で紹介した未来のAI(「プロアクティブAI」と呼びましょう)が、俺たちのコーディング中にこう警告してくるとします。
「警告:そのViewModelの実装、APIからのデータ構造と密結合しすぎ。将来、API仕様が変わった時に、15箇所のコード修正が必要になるリスク(90%)」
さあ、この警告を見て、あなたはどうしますか?
Aさん(シンタックスエンジニア):
「うわ、ヤバ。……えーと、Copilot先生、なんとかして! もっと疎結合にして!」
AIは、言われた通り「もっともらしい」コードを生成します。例えば、間に一つクラス(DTO: Data Transfer Object)を挟むコードを。
Aさんは「お、動いた。AIすげー」と、そのままコミットします。
Bさん(俺たちアーキテクトエンジニア):
「だろうな。やっぱりそうだ。このViewModelは今、データ取得ロジックと、画面表示ロジック(IValueConverterとか)と、ビジネスロジック(バリデーション)が全部ごちゃ混ぜになってる。**単一責任の原則(SRP)**に違反してるんだ」
「AIの警告は『密結合』だが、本質的な問題は『責務の分離』ができていないことだ」
「OK、Copilot。このViewModelをリファクタリングする。まず、データ取得ロジックを、DI(依存性注入)可能な『HogeHogeService』クラスとして切り出してくれ。バリデーションロジックは『FluentValidation』を使って、別のValidatorクラスに分離。ViewModelに残すのは、画面の状態(IsBusyとか)と、Serviceを呼び出すCommandだけだ」
どっちのエンジニアが、将来にわたって「予測可能(Predictable)」な成果を出し続けられるか。
火を見るより明らかですよね。
Aさんは、AIの「奴隷」です。AIの言うがままに、その場しのぎの修正(リアクティブな対応)をしているだけ。
Bさんは、AIの「主人」であり「指揮者」です。AIの警告(予言)を解釈し、根本的な問題(設計)を特定し、AIを「道具」として使って、正しいアーキテクチャに導いている。
そう。
AIは「シンタックス(構文)」を書いてくれる。でも、「アーキテクチャ(設計)」は、俺たち人間が決めるしかないんです。
GitHub Copilotを使ったことがある人なら、もう気づいているはず。
AIは、俺たちが書いているコードの「文脈」を読んで、続きを書いてくれます。
つまり、俺たちが最初に書くコード(設計)がクリーンで、責務が分離されていれば、AIはクリーンなコードを提案してくれます。
逆に、俺たちが「クソコード」(全部のロジックが1つのクラスに詰まった巨大ViewModelとか)を書いていたら、AIは喜んでその「クソコード」の続きを量産してくれるんです。AIは、設計の「良し悪し」なんて気にしない。
ここで、WPF/C#エンジニアの話に戻ります。
俺たちが(半ば強制的に)叩き込まれてきた**MVVM(Model-View-ViewModel)**パターン。
これ、マジで「アーキテクト(Bさん)」になるための、最高の訓練だと思いませんか?
- View(XAML): なぜコードビハインド(Viewのcsファイル)にロジックを書いちゃダメなのか?
- ViewModel(C#): なぜ
INotifyPropertyChangedで変更通知するのか? なぜICommandを使うのか? - Model: なぜViewModelとModelを分離するのか?
これらを「WPFのお作法だから」と暗記(シンタックス)しているだけなら、Aさんです。
そうじゃなく、
「ViewとViewModelを分離するのは、テスト容易性(Testability)のためだ」
「ViewModelがView(XAML)のことを何も知らなければ、ViewModel単体でNUnitやxUnitを使ってユニットテストが書ける。これが『予測可能性』につながるんだ」
「ICommandを使うのは、Viewからのイベント(Click)と、ViewModelのロジック(Execute)を疎結合にするためだ」
…こんな風に、すべての「お作法」の裏にある**「なぜ?(Why?)」、つまり「設計思想(アーキテクチャ)」**を理解している人。
それこそが、AIを使いこなす「Bさん」です。
俺が海外に来て驚いたことの一つが、こっちのシニアエンジニアたちは、コーディングの速さよりも、「設計原則」(SOLID原則、DRY、KISSなど)について、めちゃくちゃうるさく議論することでした。
「君のこのコード、DRY(Don’t Repeat Yourself)じゃないよね?」
「このクラスの責務、多すぎない? SRP(単一責任の原則)に違反してるよ」
彼らは、バグやパフォーマンス問題の「根本原因」が、こういう設計原則の違反にあることを知っているんです。
AIの進化は、この傾向をさらに加速させます。
「どう書くか(How)」(=シンタックス)は、AIが全部やってくれる。
俺たち人間の価値は、**「何を(What)」「なぜ(Why)」作るか、そして「どう設計するか(Architecture)」**に集約されます。
C#とWPFで学んだこと…
- MVVM: 責務の分離、テスト容易性
- DI(Dependency Injection): 疎結合、依存関係の管理
- async / await: UIスレッドをブロックしない非同期処理(まさに「起」の炎上原因!)
- LINQ: 宣言的なデータ処理
これら全部、AI時代にAIを「指揮」するために必要な、超一級の「アーキテクチャ」の知識なんです。
俺たちは、WPFを開発しているつもりで、実は「未来のAI指揮者」になるための基礎訓練を受けていた、というわけ。
これが、俺が「WPFエンジニアはAI時代に最強」だと言った理由です。
「シンタックス」しか知らないエンジニアは、海外では(というか、日本でも)AIに仕事を奪われる。
「アーキテクチャ」を語れるエンジニアは、AIを最強の相棒にして、国籍や言語の壁を超えて「信頼」を勝ち取り続ける。
さあ、皆さんはどっちになりたいですか?
…とはいえ、じゃあ具体的に、明日から何をすればいいのか。
WPFのXAMLを眺めているだけで、アーキテクトになれるわけじゃありません。
最後の「結」では、この「AI時代のアーキテクトエンジニア」になるために、俺が今すぐ皆さんに始めてほしい、具体的なアクションプランを提言します。
AI時代の「サバイバル術」—未来のアーキテクトになるための3つの習慣—
「転」で、俺たちはAIの「指揮者」になるべきだと話しました。
でも、指揮者って、いきなりなれるもんじゃない。毎日の地道な練習が必要です。
その「練習」とは何か。明日からこの3つを、意識してやってみてください。
1. 「なぜ?」の言語化 —”お作法”を”設計思想”に変える—
皆さんは今、MVVMパターンを使ってWPFアプリを開発しているかもしれません。
明日、コードレビューで、同僚(あるいはAI)にこう質問されたと想像してください。
「なぜ、ここはICommandを使ってるんですか? 普通にClickイベントのハンドラ(コードビハインド)じゃダメなんですか?」
この質問に、どう答えますか?
ダメな答え(シンタックスエンジニア):
「え? いや、それがMVVMの『お作法』なんで…」
「WPFはそうやって書くもんだって、習いました」
最高の答え(アーキテクトエンジニア):
「いい質問だね。コードビハインドに書くと、そのロジックを**自動テスト(ユニットテスト)するのが難しくなるんだ」
「ICommandを使ってViewModelにロジックを分離(疎結合に)しておけば、View(XAML)がなくてもViewModel単体でテストできる。これによって、リグレッションバグ(修正したら別のところが壊れるバグ)を防ぎやすくなるし、プロジェクト全体の『予測可能性』**が上がるんだよ」
ほら、出た。「予測可能性」。
これこそが、俺たちが目指す場所です。
明日から、自分が書いているコードの「お作法」一つひとつに、「なぜ?」と自問自答してください。
- なぜ、DI(依存性注入)を使うのか?
- なぜ、このクラスを分けたのか?(単一責任の原則:SRP)
- なぜ、
async/awaitを使うのか?(UIスレッドをブロックしないため)
そして、その答えを、最初は日本語でもいい、最終的には簡単な英語で説明できるまで、自分の言葉で噛み砕いてください。
この「設計思想の言語化」こそが、AIに「指揮」を出すための、最強の基礎トレーニングになります。
2. AIを「壁打ち相手」にする —Copilotを飼いならせ—
もうGitHub Copilotや、それに類するAIコーディング支援ツールを使っていますか?
もしまだなら、今すぐインストールしてください。そして、徹底的に「使い倒す」こと。
ただし、「奴隷」として使ってはいけません。
AIが提案してきたコードを、思考停止で「Tabキー」を押して受け入れていませんか?
それは「シンタックスエンジニア」への第一歩です。
明日から、AIの使い方を変えましょう。
AIを「便利なタイピスト」ではなく、**「(ちょっと生意気な)新人プログラマー」あるいは「壁打ち相手」**として扱うんです。
- AIがコードを生成したら、まず「レビュー」する。「お前、このコード書いたけど、パフォーマンスは大丈夫か?」「この設計、テストしにくいだろ」と、心の中でツッコミを入れる。
- AIに、あえて「悪い設計」(例えば、責務がごちゃ混ぜのクラス)を書いてもらう。そして、それを自分が「アーキテクト」としてリファクタリングする。「OK、Copilot。このクラス、SRPに違反してるから分割するぞ。手伝え」と、AIに指示を出す。
- 「承」で俺が手動でやったような「事前検証(スパイク)」のコードをAIに書かせる。「100万件のダミーデータ作って、このLINQの実行時間計って」と。
AIに「シンタックス」を書かせて、自分は「アーキテクチャ」と「パフォーマンス」のレビューに集中する。
これが、AIを「指揮」する訓練です。AIは、あなたが書くコード(設計)のレベルが上がれば、提案してくるコードのレベルも上がります。AIはあなたの「鏡」なんです。
3. 「証拠」で語る癖をつける —プロファイラは最強の武器—
これは「承」で俺が地獄から学んだ、一番大事なことです。
海外のエンジニア(特にシニア以上)は、議論が白熱すると「俺はこう思う」「いや、俺はこうだ」と、意見がぶつかり合います。
ここで、言葉のハンデがある俺たちが、どうやって彼らを納得させるか。
「勘」や「経験則」では勝負しないこと。
「いや、このコードは遅い『気がします』」
こんなフワッとした意見は、1秒で却下されます。
**「証拠(エビデンス)」**を突きつけるんです。
「このコードは遅い。なぜなら、俺がVisual Studioのプロファイラで計測したら、この関数のCPU使用率が80%で、実行に3秒かかっているからだ。これがそのスクショだ」
ここまで言われたら、アメリカのPOも、インドのバックエンドチームも、ぐうの音も出ません。
これは「意見」ではなく、「事実」だからです。
WPF(C#)開発者なら、Visual Studioに内蔵されている「診断ツール(プロファイラ)」は必須科目です。CPU使用率、メモリ割り当て、非同期処理のタイムライン…これらを使いこなすこと。
これもまた、「プロアクティブ(先回り)」な行動です。
バグが報告されてから(火事が起きてから)プロファイラを回すのは「リアクティブ」。
そうじゃなく、コードを書いている設計段階で、「ここ、ボトルネックになりそうだな」と当たりをつけて計測し、設計を変更する。
AIが「火事になりますよ」と警告してくる未来の「予行演習」を、今すぐ手動で始めるんです。
🔥 炎上プロジェクトから、予測可能な未来へ
長々と語ってきましたが、俺が伝えたかったことはシンプルです。
俺たちが今、直面している「AIの進化」は、かつて俺が経験したような「リアクティブ(反応的)な火消し業務」から、エンジニアを解放してくれる、とてつもないチャンスです。
炎上プロジェクトに怯え、納期とバグに追われる日々は、終わらせることができる。
エンジニアリングプロジェクトが、**「常に時間通りに、常に予算通りに」**終わる、「予測可能な未来」が、もうそこまで来ています。
その未来で主役になるのは、AIの警告(予言)を「解釈」し、AIを「指揮」し、燃えない「アーキテクチャ」を描けるエンジニアです。
WPFとC#で学んだ「設計思想」は、そのための最強の基礎体力になります。
だから、自信を持ってください。
海外で働くエンジニアとして、皆さんがこれから戦う相手は、英語のネイティブスピーカーじゃない。
「リアクティブな過去」にしがみついている、自分自身の古い働き方です。
この変革的なAIの能力(transformative AI capabilities)を恐れるんじゃなく、積極的に探求し(explore)、自分の武器として採用して(adopt)ください。
AIという最強の「通訳」であり「相棒」を手に入れて、言葉の壁なんて軽々と飛び越え、「予測可能な成果」を出し続ける、クールなアーキテクトエンジニアになってやりましょう。
俺も、こっち(海外)の空の下で、皆さんに負けないように「設計」を磨き続けます。
いつか現場で、最高の「アーキテクチャ」について語り合える日を楽しみにしています。
読んでくれて、ありがとう!

コメント