「海外で働く」の理想と現実。C#だけ握りしめても、ドアは開かない?
どうも、皆さんこんにちは!海外(私の場合は日本ですが、皆さんにとっては「海外」ですよね!)でITエンジニアとして働いています、[あなたのブログ名、または名前]です。
普段はC#とWPFを使って、デスクトップアプリケーションの設計から開発までゴリゴリやっています。MVVMパターン最高!とか言いながら、XAMLと格闘する毎日です(笑)
さて、このブログを読んでくれているあなた。「海外でエンジニアとして働きたい!」とめちゃくちゃ高いモチベーションを持っているんじゃないでしょうか。
わかります。すっごくわかります。
僕もそうでした。「自分の技術(C#)が世界でどこまで通用するのか試したい」「もっとグローバルな環境で、最先端の技術に触れたい」「ぶっちゃけ、海外で働くってカッコいい!」…そんな夢と希望をスーツケースに詰め込んで、海を渡った一人ですから。
当時の僕が持っていた武器は、C#とWPFに関するそこそこの知識と経験。それさえあれば、どこでもやっていける。技術力こそがエンジニアの共通言語だ!と本気で信じていました。
確かに、その考えは半分は合っています。
C#のコードは世界共通です。if文やTask.Runの書き方が国によって変わることはありません。優れた設計(例えば、SOLID原則に基づいたクリーンなアーキテクチャ)は、どこの国のエンジニアからもリスペクトされます。
事実、僕も入社して最初の数ヶ月は、技術力でガンガンアピールしました。WPFのパフォーマンスチューニングでボトネックを解消したり、複雑な非同期処理をasync/awaitで華麗に書き直したり。技術的な「正しさ」で議論をリードし、「おお、やるじゃん」と一目置かれる存在にはなれた…つもりでした。
でも、ある時から妙な違和感を感じ始めたんです。
何て言うんでしょうか。「仕事は回っている。プロジェクトも進んでいる。でも、なぜか自分だけが『蚊帳の外』にいるような感覚」とでも言えばいいでしょうか。
例えば、ある機能の設計レビューでのこと。
僕は、パフォーマンスと保守性の観点から、A案よりもB案(僕の提案)が技術的に優れていることをロジカルに説明しました。データも揃えました。反論の余地はないはず。
すると、ミーティングの参加者たち(日本人の同僚やマネージャー)は、一様に「うーん」「なるほど」「検討します」と言葉を濁すんです。誰も「No」とは言わない。でも、明らかに「Yes」でもない。
結局、その場では結論が出ず、「持ち帰り」になりました。
当時の僕は「なんでだ?技術的にB案がベストなのに、なぜ即決できないんだ?非合理的だ!」とイライラしていました。
そして、数日後。僕が知らないところで話が進み、結局、A案に「ちょっとB案の要素を取り入れた」ような、僕から見ると中途半端なC案で進むことが決まっていました。
…ショックでしたね。「俺の技術的な正しさは、何の意味もなかったのか?」と。
この経験は、僕にとって大きなターニングポイントになりました。
この時、僕に圧倒的に足りなかったもの。それは、C#の知識でも、WPFの経験でも、MVVMパターンの理解でもありませんでした。
それこそが、今回このブログで皆さんにお伝えしたい**「技術+α」のスキルセット**なんです。
このブログのテーマは「Building Your Path」、つまり「あなた自身の道を切り開く」ことです。海外でエンジニアとして成功するためには、テクニカルスキルという「縦の軸」だけじゃなく、文化やコミュニケーションという「横の軸」を意識的に伸ばしていく必要があります。
僕たちはエンジニアです。ロジカルに考えるのが得意ですよね?
でも、僕たちがこれから飛び込もうとしている(あるいは、すでに飛び込んでいる)日本の職場は、必ずしも僕たちが思う「ロジカル」だけでは動いていません。
「言葉(日本語)が話せる」だけでは、まったく不十分。
その先にある、「敬語(Keigo)」という複雑なシステム。そして、言葉には絶対に出てこない「暗黙のコミュニケーション(Implicit communication)」の存在。
これらを理解しないまま、「俺は技術力で勝負する!」と息巻いているのは、例えるなら「ルールを半分しか知らないまま、チェスの世界大会に出場する」ようなものです。そりゃ勝てませんよね(笑)
さらに言えば、この異文化の海を泳ぎ切るためには、自分自身を常にアップデートし続ける強靭な「心のOS」が必要です。つまり、「適応力(Adaptability)」と「成長マインドセット(Growth mindset)」ですね。
昨日まで「常識」だと思っていたことが、今日から「非常識」になる。そんなカルチャーショックの連続です。そこで「この国のやり方はおかしい!」と心を閉ざしてしまえば、あなたの成長はそこでストップしてしまいます。
そして、これらすべてを繋ぎ合わせるのが、「ソフトスキル」と「異文化(クロスカルチャー)コンピテンス」です。
「ソフトスキル」なんて言うと、「ああ、あの意識高い系のやつね」と思うエンジニアもいるかもしれません。僕も昔はそうでした。コードこそが正義だと。
でも、違いました。
特に僕のような、設計も担当するWPFエンジニアにとって、クライアントやデザイナー、PMと円滑にコミュニケーションを取り、時には「ノー」と言い、時には相手の「言葉にされていないニーズ」を汲み取る能力は、C#の知識と同じくらい…いや、時と場合によってはそれ以上にクリティカル(致命的に重要)なんです。
「この機能、デザイン的にカッコいいけど、WPFで実装するとパフォーマンス死にますよ」と、どう伝えれば角が立たないか?
「納期的に無理です」と、どう伝えれば「じゃあ、ここまでならOK」という妥協点を見つけられるか?
これらはすべて、技術力ではなく「ソフトスキル」の領域です。
…おっと、すみません。
「起」の部分だけで、僕の「リアルな体験」から来る「伝えたいこと」が溢れすぎてしまいました(笑)
でも、それだけ「これを知っててよかった!」と心から思える、超・重要な「人生術」だと確信しているからです。
このブログ記事(シリーズになるかも?)では、僕がC#エンジニアとして日本で働きながら、数々の「壁」にぶち当たり、失敗し、そして学んできた「技術以外の」リアルなスキルセットについて、余すところなくお伝えしていこうと思います。
「C#のスキルはあるけど、海外(日本)で働くのは不安…」
「技術力には自信がある。でも、それだけで本当に通用する?」
そんな風に思っている、かつての僕のようなエンジニアの皆さんに、最強の「お守り」となるようなヒントや気付きを提供できたら、最高に嬉しいです。
言葉の壁、の「その先」へ。なぜ僕らが「敬語」と「暗黙のルール」を学ぶべきか
「起」の章では、「海外(日本)で働くには、C#の技術力だけじゃ足りないよ!」という、僕自身の(ちょっと苦い)経験から得た「気付き」についてお話ししました。
技術的な正しさを振りかざしても、なぜかプロジェクトが自分の思うように進まない…。むしろ、自分だけが「蚊帳の外」に置かれていく感覚。
その原因こそが、今回深掘りするテーマ、**「言葉の壁、の『その先』」**にあるんです。
そう。「その先」です。
海外で働くぞ!と意気込む皆さんは、当然、現地の言葉(この場合は日本語)を勉強しているか、これから猛勉強するぞ!と思っていますよね。
それは素晴らしいし、必須スキルです。僕も最初はそうでした。
「こんにちわ」「ありがとう」「このタスク、進捗どうですか?」
日常会話や、ITエンジニアとしての基本的な業務コミュニケーション。そこまでは、ぶっちゃけ「根性」と「Google翻訳」でなんとかなるんです(笑)。
でも、本当の「壁」は、その先にそびえ立っていました。
それが、**「敬語(Keigo)」と「暗黙のコミュニケーション(Implicit communication)」**という、二つの巨大なボスです。
僕たちエンジニアは、ロジックと効率性を愛する生き物です。
C#で言えば、「このコードは冗長だ。もっとシンプルに書ける」とか、「この設計は拡張性がない。将来的に破綻する」とか、そういう「合理的かどうか」を基準に物事を考えがちですよね。僕もバリバリそっち側の人間です。
だからこそ、この「敬語」と「暗黙のルール」という、一見(あくまで一見、ですよ)非合理的で、複雑怪奇な日本独自のコミュニケーション文化に、めちゃくちゃ苦しめられたんです。
最初のつまずき:「できます」が「できません」?
僕が日本に来て間もない頃、とある機能の追加開発をマネージャーから打診された時の話です。
マネージャー:「[僕の名前]さん、この機能なんだけど、WPFでこういう(複雑な)UI、今週末までに実装って…可能そうですかね?」
当時の僕は、日本語のリスニングはできても、「敬語」のニュアンスはゼロ。そして、C#エンジニアとしての自信は満タンでした。
僕は即答しました。「はい、できますよ。問題ないです。」
内心では(WPFのXAMLでこのレイアウト組むの、結構ギリギリだな…残業必須かもな…)と思っていましたが、「エンジニアたるもの、できないとは言いたくない!」というプライドもありました。
そして、金曜日の夕方。
僕はボロボロでした。実装は終わっていない。複雑なUIバインディングがどうしても上手くいかず、デバッグの沼にハマっていました。
マネージャーが僕の席に来て、一言。
「[僕の名前]さん、例の件、どう…ですかね…?」
僕は正直に言いました。「すみません、終わりませんでした。まだバグが取れません。」
その時のマネージャーの、なんとも言えない「困惑」と「失望」が入り混じった顔は、今でも忘れられません。
なぜこんなことが起きたのか?
後で同僚の日本人エンジニアにこっそり教えてもらって、僕は衝撃を受けました。
あの時のマネージャーの「…可能そうですかね?」という聞き方。
あれは、日本語の、特にビジネスシーンにおける「敬語」のニュアンスを含んだ「問いかけ」だったんです。
あれは、「YesかNoか、100%の答えを今すぐ述べよ」という質問じゃなかった。
あれは、「(普通に考えたら今週末までは無理そうなタスクだと私も分かっているんだけど、)もし万が一、何かすごいウルトラCがあって、特に無理なくできるなら教えてほしい。もし無理そうなら、『いやー、ちょっと今週末までは厳しいですねー』とか、『ここまでならできます』とか、そういう『交渉』や『相談』をしてほしい」という「暗黙のサイン」だったんです。
分かりますか?この超ハイコンテキストなやり取り!
僕の国の文化なら、「できるか?」と聞かれたら、「できる(I can do it)」か「できない(I cannot)」かをまず明確に答えるのが「誠実」です。そして、「できる」と言ったからには、何が何でもやり遂げるのが「プロ」です。
でも、日本では違った。
あの場面での「正解」は、技術的な「Yes/No」を即答することじゃなかった。
「うーん、今週末までですか…。ちょっと見させてもらいますね。(数分後)なるほど、この部分のWPF実装が結構重そうですね…。もし今週末必達なら、こちらの機能Aを諦めてBに全振りすれば何とかなるかもしれませんが、どうしましょうか? もしくは、週明け月曜の朝イチまで時間をいただければ、全部きれいに実装できますが…」
…これです。これだったんです。
相手の「(無理だよね?)」という暗黙の問いかけをまず受け止め、その上で、技術的な見地から「選択肢」と「トレードオフ」を提示し、相手に「判断」を委ねる。
これが、日本のビジネスシーン(特に伝統的な企業)における「敬語」を使ったコミュニケーションの「型」の一つだったんです。
僕は、「できます」と即答した時点で、「ああ、[僕の名前]さんはこのタスクの『本当のヤバさ』を理解していないか、あるいは、何も相談してくれない人なんだな」という(マイナスの)評価を、無意識のうちに下されていたわけです。
恐ろしいですよね?
僕はただ「C#エンジニアとして誠実に答えようとした」だけなのに。
「言わないこと」を理解する技術
この「敬語」問題と密接に絡み合っているのが、「暗黙のコミュニケーション」です。
よく言われる「空気を読む(Read the air)」ってやつですね。
僕たちエンジニアの言葉で言えば、「仕様書に書かれていない、クライアントの真の要求をエスパーする」みたいなもんです(笑)。
先ほどのマネージャーとの会話も、まさに「暗黙のルール」だらけでした。
僕が体験したもう一つの強烈な「暗黙」は、レビュー会議です。
日本(特に僕がいた職場)では、大勢の前で誰かを名指しで批判したり、相手の設計を「それは間違っている(You are wrong)」と真っ向から否定したりすることは、技術的な正しさに関わらず、非常に「悪」とされる傾向がありました。
僕はC#とWPFに関しては、誰よりも詳しい自負がありました。
だから、同僚のコードレビューや設計レビューで、「このMVVMのViewModelの分離、甘すぎないか?」とか、「そのXAMLの書き方、リソース食うからパフォーマンス落ちるよ」とか、割とストレートに(もちろん、悪意はなく、技術的な議論として)指摘していました。
…結果、どうなったか。
僕は「技術的には正しいけど、一緒に働きたくない人」のレッテルを貼られかけました。
レビュー会議が終わった後、シーンと静まり返るオフィス。
誰も僕と目を合わせようとしない。
あの「蚊帳の外」感、再びです。
じゃあ、どうすればよかったのか?
これも後で学んだことです。
まず、大前提として、「人前で恥をかかせない」という文化的な配慮が最優先されること。
技術的な指摘は、それ自体が「相手への攻撃」と受け取られかねない危険をはらんでいること。
「正解」のコミュニケーションは、こうでした。
- まず、褒める(受け入れる)。「〇〇さん、この機能の設計、ありがとうございます。この複雑なロジックをまとめるの大変だったと思います。特にこの部分(良い点)の考慮、素晴らしいですね。」
- 「自分」を主語にして、疑問形で「提案」する。(NG例:「この設計はダメだ」)(OK例:「すごく勉強になったんですが、もし仮に、このViewModelをもう少し細かく分割したら、将来的な拡張性が上がるのかな…?と私は思ったのですが、〇〇さんはどう思われますか?」)
- 相手のメンツを立てつつ、議論の「余地」を残す。「もちろん、私がWPFのこの部分の仕様を勘違いしてるだけかもしれないので、もし違ったら教えてください!」
…め、面倒くさい!!
って、今、画面の前で叫びました?(笑)
僕は叫びましたよ、心の中で、何百回も。
「そんな回りくどい言い方しないと伝わらないのか!」「技術的な正しさがなぜ優先されないんだ!」って。
でも、これが「文化」なんです。
そして、僕たちはその「文化」の中で、C#エンジニアとしてパフォーマンスを発揮し、成功しなきゃいけない。
重要なのは、「どちらの文化が優れているか」をジャッジすることじゃありません。
「郷に入っては郷に従え」という言葉がありますが、僕はそれもちょっと違うと思っています。
僕がたどり着いた結論は、**「彼らの『型(敬語や暗黙のルール)』を理解し、リスペクトした上で、こちらの『技術的な正しさ(ロジック)』を、彼らが受け取りやすい『形』にパッケージングして渡す」**というスキルを身につけること。
これは、C#の新しいフレームワークを学ぶことと同じ…いや、それ以上に「学習」が必要な、高度な「技術」なんです。
WPFのXAMLで美しいUIをデザインするように、
「敬語」という名のCSSを使いこなし、
「暗黙のルール」という名のUXを考慮し、
僕たちの「技術的な提案(C#のロジカルな設計)」という「中身」を、相手に最も心地よく届ける。
これができるC#エンジニアは、日本では、めちゃくちゃ強いです。
ただコードが書けるだけのエンジニアとは、一線を画す存在になれます。
なぜなら、ほとんどの日本人エンジニアでさえ、この「異文化(つまり、僕たち外国人のロジカルな思考回路)」と「自国の暗黙ルール」の「橋渡し(ブリッジ)」をすることに苦労しているからです。
僕たちがこの「翻訳スキル」を身につけたら、どうなると思いますか?
そう、「技術力もあって、コミュニケーションも円滑(=こっちの意図を汲んでくれるし、角を立てずに提案してくれる)、最高じゃん!」という、唯一無二の「ハイブリッドエンジニア」になれるんです。
「起」で話した、僕がイライラしたあの「A案B案ごちゃ混ぜのC案」事件。
今なら分かります。
あれは、僕が「B案が絶対正しい!」とロジックだけで押し切ろうとしたから、マネージャーや同僚たちは「困ってしまった」んです。彼らは僕の「技術的な正しさ」と、僕が知らない「他の誰か(例えば偉い人)のメンツ」や「過去の経緯」との間で、板挟みになっていたのかもしれない。
もしあの時、僕にこの「敬語」と「暗黙」のスキルがあったなら…。
「承」の章、長くなりましたね。
でも、この「一見、非合理に見える文化」の「裏にあるロジック」を理解することが、海外で働くエンジニアにとって、どれだけ強力な「得する情報」であり「人生術」になるか、少しでも伝わったら嬉しいです。
次の「転」の章では、このカルチャーショックの嵐を、具体的にどうやって乗り越えていくのか。僕の心を支えた「成長マインドセット」と、最強の武器としての「ソフトスキル」について、さらに深く語っていきます。
「ソフトスキル」こそ最強の武器。カルチャーショックを「成長マインドセット」で乗り越えた話
「承」の章では、僕が日本でC#エンジニアとして働き始めてぶち当たった、巨大すぎる壁…「敬語」と「暗黙のルール」について、顔から火が出るような失敗談を交えてお話ししました。
「できます」と答えたら、それが「(相談もできないヤツ)」という評価に繋がったり。
技術的に「正しい」指摘をしたら、会議室が氷点下になったり。
正直、最初の頃は、毎日がストレスでした。
「なんでだよ!」「非合理的すぎるだろ!」「俺はC#のコードを書きに来たんだ!面倒くさい『社内政治』や『おままごと』をしに来たんじゃない!」
って、心の中で(時には、家のシャワー浴びながら声に出して)叫んでましたね(笑)。
僕たちエンジニアは、バグが起きたら原因を突き止めたい生き物です。
C#のコードなら、Visual Studioのデバッガを起動して、ステップ実行して、例外(Exception)のスタックトレースを読めば、原因が特定できる。ロジカルに解決できる。
でも、「人間関係」や「文化」のバグって、エラーメッセージが出ないんですよ。例外も吐いてくれない。
ただ、サイレントに、あなたの評価が下がり、プロジェクトが(技術的に)悪い方向に進んでいき、自分が「蚊帳の外」に置かれていく。
…これ、最強のサイレントキラーですよね。マジで怖い。
じゃあ、僕はそこでどうしたか。
腐って、諦めて、「技術(C#)のことだけやって、あとは知ーらない」という「お地蔵さんエンジニア」になったのか?
あるいは、「もうこんな国、無理!」と、荷物をまとめて帰国したのか?
いいえ、僕はそうしませんでした。
なぜなら、ある「視点の転換」が起きたからです。
それこそが、今回のテーマである**「成長マインドセット(Growth Mindset)」であり、その結果として体得した「ソフトスキル(Soft Skills)」**という最強の武器だったんです。
「バグ」か、それとも「仕様」か?
僕が「承」で失敗した時、僕の思考は完全に**「固定マインドセット(Fixed Mindset)」**に陥っていました。
「固定マインドセット」っていうのは、ざっくり言うと「自分の能力や、物事の『正しさ』は、あらかじめ決まっていて変わらない」と考えるスタンスのこと。
当時の僕は、
「俺のC#の知識は『正しい』」
「ロジカルで効率的なコミュニケーションは『正しい』」
「だから、日本の『敬語』や『暗黙のルール』は、非合理的で『間違っている(バグ)』」
…と、本気で思い込んでいました。
でも、この考え方だと、どうなるか?
「間違っている」相手(つまり、日本の文化や同僚たち)が変わるのを待つか、あるいは、自分が「正しい」と信じるロジックで相手を「論破」し続けるしかない。
結果は…もうお分かりですよね。「承」で書いた通り、完全な「孤立」です。
誰も「バグ」だらけの環境で、「論破」してくるヤツと一緒に仕事したくないですから(笑)。
ここで、僕は「転」じました。
ある日、ふと思ったんです。
「…待てよ? もしかして、俺が『バグ』だと思っているこの文化は、バグじゃなくて**『仕様(Specification)』**なんじゃないか?」と。
僕たちエンジニアなら、この感覚、分かりますよね?
例えば、WPFで「なんでこんな面倒くさいDependencyProperty(依存関係プロパティ)なんて仕組みがあるんだ!普通のプロパティでいいじゃん!」って最初は思うけど、WPFのデータバインディングやスタイル、アニメーションの「仕様」を深く理解していくと、「ああ、なるほど、この『仕様』があるから、あの強力な機能が実現できてるのか!」と納得する瞬間。
それと全く同じでした。
僕が「非合理的だ」と切り捨てていた「敬語」や「遠回しな表現(暗黙のルール)」は、彼ら(日本人)が、数百年、数千年かけて最適化してきた、「和(Harmony)」を保ち、組織のスムーズな(と彼らが信じる)運用を維持するための、超・複雑な**「社会的な仕様」**だったんです。
この「仕様」を理解せずに、「俺のロジック(C#の正しさ)」という「別世界のコード」をいきなり持ち込んでも、そりゃコンパイルエラー(=コミュニケーションの断絶)が起きるに決まってる。
この事実に気づいた瞬間、僕の「固定マインドセット」がガラガラと崩れ落ちました。
そして、**「成長マインドセット」**に切り替わったんです。
「OK、わかった。ここは日本で、俺はC#エンジニアだ。」
「そして、ここには『日本文化』という名の、俺がまだ知らない『巨大なフレームワーク』が存在するらしい。」
「じゃあ、やることは一つ。エンジニアとして、この『日本文化フレームワーク』の仕様をハックして、理解して、使いこなしてやる!」
そう決めたんです。
「敬語」を学ぶのは、.NETの新しいバージョン(例えば .NET Coreから .NET 8への移行)の新しいAPI仕様を学ぶのと同じ。
「暗黙のルール」を理解するのは、WPFのXAMLが裏でどういう描画ロジック(Visual Tree)で動いているかを理解するのと同じ。
そう考えたら、あの「面倒くさい」だけの文化が、急に「攻略対象」として、めちゃくちゃ面白く見えてきたんです。
これが、僕の「適応力(Adaptability)」のスイッチが入った瞬間でした。
「ソフトスキル」こそ、WPFエンジニアの最強の「実装」
この「成長マインドセット」を手に入れて、日本の「仕様」をハックしようと決めた僕が、次に必要としたもの。
それが「ソフトスキル」でした。
多くのエンジニア、特に昔の僕みたいな「技術至上主義」のエンジニアは、「ソフトスキル」って言葉、ちょっと舐めてません?(笑)
「あー、なんか、コミュニケーション能力とか、プレゼン力とか、そういう『フワっとした』やつでしょ?」
「俺らはC#のコードで語るから。実装がすべて」
…って。
大間違いでした。断言します。
特に、僕たちのようなWPFエンジニア(=クライアントの目に触れるUIを設計・開発するエンジニア)にとって、ソフトスキルは「フワっとした」おまけなんかじゃなく、「技術的な負債」をゼロにするための、最もクリティカルな「実装技術」そのものです。
どういうことか?
僕が「成長マインドセット」で日本の「仕様」を理解しようとした結果、身につけた(あるいは、必死で磨いた)「ソフトスキル」は、主に以下の3つです。
1. 超・傾聴&質問スキル(=真の「要求定義」スキル)
「承」で話した、あの「今週末までに可能そうですかね?」というマネージャーの問い。
あれに「できます!」と答えたのは、僕が「相手の言葉の裏にある『暗黙の仕様(=本当は無理だよね?相談してほしい)』」を読み取れなかったからです。
僕は「傾聴」スキルを磨きました。
相手が「何を言ったか」だけじゃなく、「なぜそれを言ったのか」「(もっと大事な)何を『言わなかった』のか」を探るようになりました。
クライアントやPMが、僕たちWPFエンジニアに「ここのボタン、なんかこう、シュッとして、リッチな感じで」とかいう、地獄のような「フワっとした」要望を出してくること、ありますよね?
昔の僕:「『シュッと』とか『リッチ』とか、仕様定義言語で話せ!具体的にピクセル数と色(RGB)で指定しろ!」(→ 炎上)
今の僕:「なるほど、『リッチな感じ』ですね!すごく良いと思います! ちなみに、〇〇さんがイメージする『リッチ』って、例えば、以前のAプロジェクトで使ったような『滑らかなアニメーション』のことですか? それとも、B社製品みたいな『立体感のあるデザイン』のことですか?(=相手の頭の中にある『暗黙の仕様』を引きずり出す質問)」
この「フワっとした要望」を、僕たちエンジニアが理解できるC#のクラス設計やWPFのXAMLコンポーネント仕様に「翻訳」する作業。これこそが、ソフトスキルの最たるもの、「要求定義」スキルです。
これを怠るとどうなるか?
「シュッとした」ボタンを自分なりに解釈して、C#で完璧なMVVMパターンで実装する。
→「(レビューで)うーん、なんか違うんだよねぇ…」
→ はい、技術的負債の完成です。
いくらC#のコードがクリーンでも、「仕様」をハズしてたら、それは「仕様通りのゴミ」なんです。
ソフトスキル(傾聴・質問)は、この「ゴミ」の製造を未然に防ぐ、最強の「デバッギング・ツール」なんですよ。
2. 「技術的」翻訳スキル(=「交渉」スキル)
逆もまた然りです。
僕たちエンジニアは、「技術的な制約」を、非エンジニアに理解してもらう必要があります。
例:「WPFで、この複雑なデータグリッドを、半透明で、リアルタイム更新で、3D回転させたい」
こんな無茶振りが来たとします。
昔の僕:「無理です。WPFの描画アーキテクチャ的に、パフォーマンスが死ぬ。技術的に不可能です。」(→ 相手は「なんで?」と不満顔。関係悪化)
今の僕:「めちゃくちゃカッコいいアイデアですね!ただ、一つだけ技術的な懸念をお伝えしてもいいですか?(=まず相手を受け入れる) その『3D回転』と『リアルタイム更新』をWPFで両立させようとすると、PCのCPUとGPUにものすごい負荷がかかるんです。例えるなら、『軽自動車でF1レースに出る』ようなもので…。結果として、アプリが『5秒フリーズする』とか『カクカクして使い物にならない』という**『ビジネス上のリスク(=相手が理解できる言葉)』が発生する可能性が非常に高いです。
そこで代替案(=交渉カード)**なんですが、『リアルタイム更新』の時は3D回転をオフにする、というのはどうでしょう? それならパフォーマンスを保証できますし、カッコよさも両立できますが、いかがですか?」
これが、「ソフトスキル」を使った「交渉」であり、「技術的な翻訳」です。
ただ「無理」と言うのは、エンジニアの「怠慢」ですらある。
こちらの技術的なロジックを、相手の「文化(非エンジニアの思考)」に合わせて「パッケージング」し直して提供する。
「承」で学んだ「敬語」も、この「パッケージング」のための「ラッピングペーパー」の一つに過ぎません。
3. 「異文化」ファシリテーションスキル
そして、これができると、あなたはただのC#エンジニアじゃなくなります。
「技術(C#のロジック)」と「日本の文化(暗黙のルール)」の、両方を理解できる「ハイブリッド」な存在。
つまり、両者の「橋渡し(ブリッジ)」ができる、超・貴重な**「ファシリテーター」**になれるんです。
レビュー会議で、みんなが(あの設計ヤバいな…)と「暗黙」に思っているのに、誰も口火を切れない時。
あなたが、例の「敬語パッケージ(=相手のメンツを潰さず、提案するスキル)」を使って、
「〇〇さんの設計、素晴らしいんですが、もし『私』が勘違いしてたら恐縮なんですが、この部分、将来的に拡張性を考えると、こういうパターン(例えばStrategyパターンとか)もアリなのかな…?とか『思ったり』したんですが、どう思われます…?」
と、議論の「火付け役」になれる。
こうなると、もう最強です。
周りからの評価は、「コードが書ける外国人エンジニア」から、「(技術力もあって)俺たちの『言いたいけど言えないこと』をうまくまとめてくれる、超・助かる人」に爆上がりします。
「蚊帳の外」どころか、「会議のど真ん中」に、あなたが必要とされるようになります。
「ソフトスキル」は「技術力」だ
長くなりました。
僕が「転」で一番言いたかったこと。
それは、カルチャーショックで「固定マインドセット」に陥るな、ということ。
それを「成長マインドセット」に切り替え、「日本文化という巨大なフレームワーク」をハックする対象として楽しめ、ということ。
そして、そのハッキングに必須な「ソフトスキル」は、「フワっとした」おまけなんかじゃない。
ソフトスキルは、僕たちエンジニアの「技術力」そのものであり、C#やWPFの知識と同じくらい、いや、それ以上にあなたの市場価値を爆上げする「最強の武器」である、ということです。
この武器を手に入れた僕は、技術的な議論も、非エンジニアとの交渉も、以前とは比べ物にならないくらいスムーズに進められるようになりました。
仕事が、めちゃくちゃ「楽しく」なったんです。
さて、この最強の武器(マインドセットとソフトスキル)を、じゃあ「明日から」「具体的に」どうやって身につけていけばいいのか?
最後の「結」の章では、僕が実際にC#のコードを書く傍らで実践してきた、超・具体的な「サバイバル術」であり「学習法」を、皆さんへの「お土産」として、全部お渡ししようと思います。
お楽しみに!
あなたの「パス」を築くために。明日からできる、最強の「ハイブリッド・エンジニア」学習法
いやー、長い旅路にお付き合いいただき、本当にありがとうございます!
【起】では、「C#の技術力さえあれば無双できる!」と信じて海を渡った僕が、「あれ?なんか『蚊帳の外』?」と、最初の違和感に気づくまでをお話ししました。
【承】では、その違和感の正体…「敬語」と「暗黙のルール」という巨大な壁に、僕がいかに真正面からぶつかって玉砕したか(笑)、その痛い失敗談を告白しました。
【転】では、そんな失敗のどん底から僕を救い出してくれた、「固定マインドセット」から「成長マインドセット」への「視点の転換」について語りました。「日本文化は『バグ』じゃなく『仕様』だ」と捉え直し、「ソフトスキル」こそが僕たちWPFエンジニア(いや、全てのエンジニア)にとっての最強の「実装技術」である、という結論に至ったわけです。
さて、この最終章【結】では、これまでの話を「うんうん、理屈はわかった。でも、結局どうすりゃいいのよ?」と思っているあなたに、僕が実践してきた「明日からできる、超・具体的なアクションプラン」を、惜しみなく全部お渡ししようと思います。
これが、あなたの「Building Your Path」、自分だけの道を切り開くための、僕からの「お守り」であり「人生術」です。
ハック1:「人間関係デバッガ」を起動せよ
僕たちC#エンジニアは、Visual Studioのデバッガが大好きですよね?(笑)
F10(ステップオーバー)で処理を一つずつ追い、F11(ステップイン)でメソッドの中身を覗き、ローカル変数の値が変わるのを監視して、「バグの根本原因」を突き止めます。
これを、そのまま「人間関係」でやるんです。
「承」で話したような、「会議室が氷点下になった」「マネージャーが困った顔をした」…これらはすべて、あなたのコードで言えば「キャッチされなかった例外(Unhandled Exception)」が発生しているサインです。
ここで「相手が悪い(=非合理的だ)」とアプリ(思考)を強制終了させては、永遠に成長しません。
やるべきは「デバッグ」です。
「なぜ、あの人はあの場面で『困った顔』をしたんだろう?」
「なぜ、僕の『技術的に正しい』指摘が、受け入れられなかったんだろう?」
「なぜ、あの人は『Yes/No』を言わずに、『検討します』と言ったんだろう?」
この「なぜ?」を、最低5回、自分の中で繰り返してください。
(トヨタの「なぜなぜ5回」の人間関係版ですね)
「なぜ?」→ マネージャーが困った顔をした。
「なぜ?」→ 僕が「できます」と即答したから。
「なぜ?」→「できます」と即答することが、彼(マネージャー)の期待と違ったから。
「なぜ?」→ 彼の期待は「Yes/No」ではなく、「(無理なタスクだよね?という前提の)『相談』」だったから。
「なぜ?」→ 日本のビジネス文化(仕様)では、無茶振りに見えるタスクを即答で受けることは、「リスクを理解していない(=無能)」か「相談する気がない(=協調性ゼロ)」と判断される『仕様』になっているからだ!
…ほら、ここまで掘り下げると、根本原因(Root Cause)が見えてきましたよね?
最初は「非合理的だ!」と感情的になっていた(=例外で落ちていた)問題が、ロジカルに分析できる「攻略対象」に変わりました。
明日から、コミュニケーションで「あれ?」っと思ったら、すぐに「人間関係デバッガ」を起動する癖をつけてください。
あなたの「異文化適応力」は、間違いなく爆上がりします。
ハック2:C#の「リファクタリング」と同じように「会話」をリファクタリングせよ
僕たちWPFエンジニアは、動けばいい「汚いコード(スパゲッティコード)」が大嫌いです。
XAMLのViewとC#のViewModelがベッタリ癒着していたり、ViewModelが肥大化しすぎていると、リファクタリングしたくなりますよね? MVVMパターンに沿って、ViewとViewModelを疎結合にし、Modelを分離し…と、クリーンな設計を目指します。
「会話」も、まったく同じです。
あなたの「技術的なロジック(=伝えたい中身)」は、いわばModelです。
それを、いきなり「View(相手の耳)」にぶつけても、上手くいきません。「承」の僕のように。
そこで、「転」で話した「ソフトスキル」の出番です。
あなたの「技術的ロジック(Model)」を、相手が受け取りやすい「敬語」や「提案」の形(ViewModel)に変換(パッケージング)し、それを「View(相手の耳)」に届ける。
この「会話のリファクタリング」は、練習しないと絶対に上手くなりません。
C#の設計パターンを本で読んで「わかったつもり」になるのと、実際にコードを書いて「使いこなせる」のが全く別物なのと同じです。
僕がやった具体的な練習法は**「ロールプレイング」と「シャドーイング」**です。
- ロールプレイング(一人二役):明日のレビュー会議で、「この設計はパフォーマンス的にヤバい」と伝えなきゃいけないとします。NGなコード(会話): 「〇〇さん、この設計、WPFではパフォーマンス死にますよ。ダメです。」リファクタリング後のコード(会話): 「〇〇さん、設計ありがとうございます!すごく勉強になります。(まず受け入れる) 一点だけ、僕の勘違いかもしれないんですが、この部分、将来的にデータが1万件とか超えてきた場合、WPFのUI仮想化が効きにくくてパフォーマンスに影響出たり…しないですかね?(『私』を主語に、疑問形で提案) もしそうなら、こういうパターン(具体的な代替案)で回避する手もあるかなー、とか『思った』んですが、どう思われます?」これを、声に出して練習します。アホみたいですか? でも、C#のコードを頭の中だけで書いても動かないのと同じで、「会話」も口に出さないと「実装」できません。
- シャドーイング:職場で、「この人、コミュニケーション上手いな」という日本人エンジニアやマネージャーを見つけてください。彼/彼女が、どうやって「面倒な交渉」や「人への反対意見」を伝えているか、よーーーーく「観察(シャドーイング)」してください。「なるほど、ああやって『クッション言葉(恐れ入りますが…)』を挟むのか」「ほう、先に『相手の功績』を認めてから、指摘に入ってるな」盗める技術は、全部盗んでください。彼ら/彼女らは、あなたの「生きた教科書」です。
ハック3:「文化的メンター」を見つけ、安全な「サンドボックス」を確保せよ
最後にして、これが一番重要かもしれません。
「一人で」戦わないでください。
デバッグもリファクタリングも、一人でやるより「ペアプロ」や「コードレビュー」があった方が、圧倒的に効率が良いですよね?
あなたに必要なのは、**「文化的メンター」**です。
職場の同僚、あるいは友人、誰でもいい。あなたが「これって、日本の文化的にどうなの?」という「超・初歩的な質問」を、笑わずに(あるいは笑い飛ばしながら)真剣に答えてくれる人を見つけてください。
その人こそが、あなたの「安全なサンドボックス環境(=何を試しても本番環境には影響しない場所)」です。
僕は、仲良くなった同僚(C#仲間)に、めちゃくちゃ聞きましたよ。
「さっきの会議の『善処します(ぜんしょします)』って、あれ『Yes』ですか?『No』ですか?」
(→ 答え:「あれは9割『No』だね(笑)」)
「なんで、あの人、技術的に間違ってるのに誰も指摘しないんですか?」
(→ 答え:「ああ、あの人は〇〇部長のお気に入りだから、人前で恥をかかせると後が面倒なんだよ…」)
…ほら、こういう「仕様書(本)には載っていない、生きた情報(暗黙のルール)」が、めちゃくちゃ手に入るんです。
この「サンドボックス」があるかないかで、あなたの「文化ハック」のスピードは、文字通り10倍は変わります。
あなたの「パス」は、あなたが作る
ここまで、僕が「C#エンジニア」として海外(日本)で生き残るために学んできた「技術+α」のスキルについて、熱く語ってきました。
勘違いしてほしくないのは、「自分の国のアイデンティティを捨てて、日本人になれ」なんて言うつもりは、1ミリもないということです。
あなたの「技術力」。あなたの「ロジカルな思考」。それは、何物にも代えがたい「武器」です。
僕が提案しているのは、その「最強の武器(C#)」に加えて、「日本文化ハック(ソフトスキル)」という「最強の防具」と「ブースター」も装備しませんか?というお誘いです。
【C#の技術力】 × 【日本の文化仕様(敬語・暗黙)への理解】 × 【成長マインドセット】
この掛け算ができたエンジニアは、ただコードが書ける「外国人エンジニア」ではありません。
技術的な正しさと、文化的な円滑さの両方を理解し、その「間」を「翻訳」し、「橋渡し」できる、**超・貴重な「ハイブリッド・エンジニア」**です。
こうなれば、「蚊帳の外」どころか、「あなたがいなければ、このプロジェクトは回らない」という、最強の「キードライバー」になれます。
あなたの「パス(Path)」は、誰かが用意してくれるものじゃありません。
今日お話しした「ハック」を使って、失敗し、デバッグし、リファクタリングしながら、あなた自身が「Building(築き上げていく)」ものです。
道は険しいかもしれません。でも、僕たちエンジニアは、難しい問題をロジックで解決するのが大好きですよね?
こんなに面白くて、攻略しがいのある「リアル人生ゲーム」、楽しまなきゃ損です。
応援しています。あなたの「パス」が、最高にエキサイティングなものになりますように。

コメント