メソッド屋のブログ

米マイクロソフト Software Development Engineer 牛尾の日記です。ソフトウェア開発の上手なやり方を追求するのがライフワーク。本ブログは、個人の意見であり、所属会社とは関係がありません。

アメリカのエンジニアと仕事をするときに日本人エンジニアがやったら良さそうなこと

前回のブログの最後で少し触れましたが、今回はアメリカのエンジニアと仕事をしていて感じたコミュニケーションの大きな違いについて書いてみたいと思います。 私はアメリカのシアトルでソフトウェアエンジニアをやっていますが、日本人の人と仕事をするときに求められるコミュニケーションのスタイルと、アメリカのスタイルがものすごく違う点があって、 今も苦労しています。

f:id:simplearchitect:20200417140045p:plain

そんな中でも自分が気づいて改善中のポイントについてシェアしたいと思います。今回の対象は「アメリカ在住のエンジニア」ではなくて、「アメリカ人の」エンジニアの感覚の違いです。同じ英語圏でも文化が違うので、今回は英語の話ではなく、文化的な違いと思ってください。

日本ではコミュニケーションが得意だったのにまるで通用しない

私は日本にいるときは元コンサルタントですし、プレゼンをするとマイクロソフトでも常に上位でしたし、お客さんをエンゲージするのも非常に得意でした。つまり、日本人として、日本人の中で仕事をする分には多分コミュニケーションスキルは高かったと思います。ところが、アメリカに移住すると、これが死ぬほど通用しません。最初は英語力の問題と思ったのですがそうでありませんでした。わかりやすい。という感覚の違いが大きいように感じます。

日本では「情報量が多い」のが好まれる

日本人のコミュニケーションをするときには、一般的に「情報量が少ない」のは好まれません。例えば多くの人に技術プレゼンをするときに意識していたことの一つに、来てくれたお客さんにみんな満足してもらうためにどうするか?というのをいつも考えていました。だから、初心者の人が来ても、上級者の人が来ても「来てよかったなー」と思えるような構成にしていました。また、「お得感」みたいなものを持っていただくために、プレゼンの最後に、前日徹夜してきてくれた人のためのドキュメントやブログ、サンプルアプリケーションなんかを用意しておいて、その場で公開したりとかもよくしていました。

f:id:simplearchitect:20200417140631p:plain

プレゼンで評価が高いものをみても、日本のものはスライドの枚数がすくないものってあまりないのではないでしょうか?

アメリカでは「情報量の少ない」のが好まれる

一方、アメリカ人のエンジニアの人には「情報が少ない」のが好まれます。たくさん情報があっても消化できへんやん。という感覚みたいです。それは、プレゼンとかではなくて普段のコミュニケーションでも頻繁に出会います。私はエンジニアなので、技術的な質問とかをする時にどうするか?というと、日本にいるときは、もちろん情報はわかりやすく整理するのですが、相手が知っていてほしいと思う情報は全部盛り込みます。そして、そちらの方が好まれます。おそらく「失敗せず成功させたい」という思いがやるほうも強いので、失敗しないように(そして、めっちゃよろこんでもらえるように)一生懸命がんばっていました。

会話の例

例えばCIのパイプラインがよくわからないエラーで落ちて原因がわからないとします。日本だったら、こんなエラーメッセージがでて、バージョンがどれで、自分が試したのはこれと、これで、結果がこうで、これをやったら落とし穴で、ストールするしてハマるので、しないようにしてね。ちなみに、パイプラインのコードはこのプルリクエストみたいなことを整理して送ってあげるのが喜ばれました。

しかし、アメリカの人はどうやら様子が違うようです。実際に私がメッセを送っても無視されるような感覚を持っていました。そこで、友人のクリスに相談してみたところこんなことを言われました。

クリス:「みんな忙しいだけやで。ただ、そこにたくさん書いてると読むの大変じゃない?だから単純なのでいいの」

牛尾 :「えっ、まじ、、、ちなみに、これやったらはまるでみたいな情報っていらないの?だって、はまったら大変やん」

クリス:「要らんで。さっきの例やと、このエラーメッセージがでて困ってるんやけどなんか知ってる?ぐらいでいいよ。付加的な情報は後でええねん」

f:id:simplearchitect:20200417140924p:plain

つまり、日本人の自分的には、あったほうがいいと思って、相手にも日本では喜ばれた情報が、こちらの人にはいらん情報みたいです。つまりこんな感じで会話が進む想定です

自分「CIシステムでこんなエラーメッセージがでて困ってるねんけど、なんかしってる?」

相手「ああ、これ前あったことあるわ。このコンフィグは今どうしてる?」

このやり取りでおわったらこれで終了です。

もし終わらなかったら。

相手「そうやなぁ、調査が必要やな。このパラメータどうなってる?」

自分「こうしてるよ。もしよかったら、プルリクエストのURL送るけど」

相手「いいね、見てみるわ」

自分「あ、ちなみに、やるとき、これやったら、バグ踏むから、気を付けてね」

相手「ありがとう!」

といっ感じです。つまり、アメリカの人とコミュニケーションをとるときは、最初から全部説明ぜず、「情報量を減らす」というのがものすごく重要と気づきました。

f:id:simplearchitect:20200417143804p:plain 情報を与え過ぎないのにものすごく気を使います。 何かの技術を説明するときも、日本だったら事前準備したパワーポイントのスライドで技術を説明するケースでも、こっちだと、同じくパワーポイントで説明する場合でも、スライドの枚数を極限に絞って、「これだけ わかって欲しい。」と思う1点だけを説明して、質問が来たら他のを説明したり、というスタイルに変えています。これは良しあしではなく、文化なのですが、どちらが本質的で楽かを考えるとこのアメリカンスタイル は確かに楽だと思います。

その場で吸収できるものを最大化する

背景にある考え方として、日本の場合は得して帰りたい感覚があるので、情報はたくさんもらえるのがうれしいですが、アメリカの場合は、「その場で吸収できることを最大化したい」という感覚があるみたいなので、複雑なものを提供されてもその場で理解できないので、単純でシンプルで、その場で理解できる情報量のものが好まれるようです。

日本人はどうしたらいいだろう?

アメリカ万歳」みたいに聞こえますが、日本人としての仕事の仕方を続けてきた人としては、アメリカの人と働いて有利になる習慣はないでしょうか?おそらくそれは「準備」だと思います。アメリカの人はほぼほぼ「準備」しません。その代り何が来ても対応できるように、普段から反射神経を鍛えている節があります。その姿勢は見習いたいですが、第二外国語の英語である以上戦闘力の低下は否めません。ただ、いくら頭がよくても限界があります。 f:id:simplearchitect:20200417144016p:plain

人生であった最も頭のいい人も理解できるとは限らない

私があるチームに対して技術的な説明をしたのですが、そのメンバーの人は自分が人生で会ったことのある人の中で最も頭のいい人でした。しかも、圧倒的に。人間ってこんな頭よくなるんやぐらいの感覚です。ですので、最初に説明をしたときは、技術的に難易度の高いところから、すべてのパターンやプラクティス、リポジトリアーキテクチャを知っている前提で話ましたが、反応があまりよくありませんでした。自分は正直三流エンジニアで、自分ですら理解できることを説明しているに、ふと、そのときに思ったのですが、「まさか、みんなよくわかってない、、、?」、そこで学んだことは、自分の人生で断トツ圧倒的に一番頭がいいぐらいの人でもなんでも即座に理解できるわけではないということです。自分で書いたある程度複雑なものは、自分は自分でやったからわかってるのであって、他の人がそんなさっさと理解できるものではないのでは?と仮説を立てました。

情報量を最小にする

2回目に説明するときは、手を変えて、「簡単なこと」をしっかり説明するこようにしました。こんなクラスのこと知ってるよな、、、と思っても説明しました。頭が強烈に良くても、知らんものはすぐ理解できないようです。ところが、ここからが猛烈に頭のいい人は違いました。ちゃんと情報量を抑えて、ちゃんと筋道立てて基礎的なことから、説明すると、一瞬で理解して、そして、ものすごく鋭い質問がたくさん来るようになりました。「この人らはやっぱパネェ!」と思いました。たぶんこれはアメリカ人の人のように「アドリブ」で自分がやっていたら英語力的にも無理だったと思います。日本で鍛えた「準備」「改善」が効いた瞬間です。

準備・改善・情報最小化

さらに、改善して、今度は、アーキテクチャを説明するのに、コードや、ダイヤグラムだけでは難しいのがあったので、パワーポイントで動画を作って3分ぐらいにまとめたのをシェアするようにしました。作るのは、パワーポイントでレコーディングして、Youtubeに上げたらできるので、30分ぐらいです。オフィシャルのじゃないので、編集もなしですが、他のメンバも見るべきだよとか、嬉しいコメントがもらえました。 f:id:simplearchitect:20200417144340p:plain

遅延ソリューション

他の日本的な欠点でいくと、「その場での思考の瞬発力」があるように思います。私たちは、持ち帰って考える癖があるので、瞬発で考えるのがあまり得意ではないかもしれません。昔悩んでいた時に、ドリューというボスが言っていたのが、それでいいんだよ。あとでもし、いいアイデアを思い付いたら、その時シェアをしてくれたらいいよ。と言いました。確かに会議がおわったあとに、「こうすればいいんじゃね?」と思いつくこともよくあったのですが、あとでメールしたりすると「いいアイデアだ」と喜ばれることもよくありました。

おわりに

正直言って、頭の回転で彼らに勝てるとは到底思えませんが、どんくさい改善とか、準備とか、工夫とかしていると、くっそ頭のいい人のなかでも役にたてる気がしています。私たちは彼らが持っているものを持っていませんが、別のものをもっているので、うまく活用したほうがよさそうですね。

私はこのトピックに関してはまだまだ研究中です。もし、よいアドバイスなどありましたら、コメントがいただけると嬉しいです。

マイクロソフトのリモートワークが得意な人を観察して気づいた、たった一つのポイント

コロナウィルスによって、誰もがリモートワークを実施する必要があるようになりました。昔はインターナショナルチームのメンバーとして日本に住んでいましたが、今は同じチームのいるシアトルに移住してアメリカでエンジニアをやっています。正直なところ私はリモートワークより対面でコミュニケーションをとるほうが好みななのです。しかし、アメリカのマイクロソフトにいると、コロナが始まる前からそもそも通勤できる距離にないメンバーが居たり、同じチームのメンバーが別の国に住んでいたり、お客さんが別の国だったりということもしょっちゅう起こります。そんな環境のなかで、リモートワークが得意な人が共通して持っている、たった一つのポイントをご紹介したいと思いブログを書きました。

f:id:simplearchitect:20200415095413p:plain

リモートワークのつらさ

リモートワーク好きな人もいますが、私はできれば同じ場所で作業したいと思います。リモートワークをすると、視野が画面に限定されますし、チャットで誰かに相談しても、反応が返ってくるとも限りません。めっちゃ頑張って英語で説明をがっつり書いたとしても、スルーされることすらもしょっちゅうです。みんなで会議をしていても、高速な英語での応酬三昧で、誰かがしゃべり終えるのを待つ癖のある私はめっちゃ不利です。対面ならホワイトボードを使ったりして、いろいろやりやすいですが、画面の中に固定されるコミュニケーションで、ほぼほぼ音声だけを頼りに多くの人のいる会議で成果だすとか「つらすぎるんじゃーボケー」という感じです。シアトルに来てから友達になった私よりもずっとTOEICの点数が上のゆうさんがこんなことを言ってました。マジで骨身に染みるぐらい同感です。さて、こんなつらい状況のなかで、どうやって成果を出したらいいでしょう?

Can I have a quick call?

アメリカで働いている人でもリモートワークが得意な人とそうでない人がいますが、リモートワークが得意な人はほぼほぼ Quick Call をよくすることに気づきました。Quick Call というのは、1対1のビデオ(ビデオオフの場合もありますが)通話のことです。自分は、リモートのときは、定例とか、正式に招待された会議だけそういうことをして、あとはチャットとかでコミュニケーションをしていました。しかし、リモートワークが得意な人は、チャットとかも使うのですが、ものすごく頻繁(少なくとも日に1回ぐらいはあるペース)で、Teamsとかのチャットをつかって「Can I have a quick call?」とか言ってきます。自分がいまOKであるなば、「Sure!」とか送り返すと、向こうからコールがかかってきて1対1で話したり、画面を共有して一緒に作業したりします。最初は正直、「あつかましいおっちゃんやなぁー。」と思ってたけど、実際にやってみるとこっちのほうが劇的に生産性がよくて、自分の時間をも節約できることがわかってきました。だから今は私も困ったことや、つまったときは、すぐに「Can I have a quick call?」といって、すぐに1対1の通話を始めます。

f:id:simplearchitect:20200415094542p:plain

クイックコールの良いところ

正直なところ、リモートになると、対面の時より、みんなで集まるときの会議の生産性が良いように感じません。実際に成果がでるのは、個人個人の成果を出す作業にどれだけ時間を使って、それを生産的にできるか?ということが重要に感じます。ですので、みんなでする会議は簡単な進捗のシェアと、今抱えている問題のシェアだけというのが最も効率よく感じます。で、それぞれ、自由に作業をするわけですが、私のようなソフトウェアの開発者でも実際にコードを書き始めれる状態になればいいのですが、その前にいろいろコミュニケーションが必要になります。それがチャットだと、やっぱりやり取りに時間がかかって多くの待ち時間が発生したり、誰かが本来知ってたり、すごく詳しかったりすることでも、チャットで呼び出して反応してくれなかったら、待っていたりします。答えが返ってきたとしても、その答えをみて、次の質問が浮かんだりしてもどうしようもありません。またチャットで自分が抱えている課題を英語で説明しようとしても、伝わりにくいこともあるし、見てくれないこともあります。

www.youtube.com

ところが、クイックコールを頻繁に使うようになると、上記の問題が全部解決します。例えば、コードを書いていてうまく動かない時があったとしても、画面をシェアして「Look at this」というだけで、相手は状況を理解してくれます。複数人がいる会議だと、自分がだけが理解できてない場面ではやっぱり会議を止めるのがつらいこともありますが、1対1だと、「Does it make sense?」と聞かれても「No. Could you tell me one more time?」とかいって聞き返しやすいです。私は Microsoft Teams を使っていますが、他のツールでも、自分のディスクトップの画面をシェアして、一緒に作業とかも簡単に今はできますし、そういったビデオ通話の機能がないものでも、例えば、PowerPoint や Word, Excel 、そして、VSCodeVisual Studio も、単体で、他のリモートの人と状況をシェアして一緒にコーディングやデバッグが出来る機能が備わっています。一人でうんうんうなるより、知ってる人とたとえ10分だけでも一緒にやるだけで、自分一人でやることを思うと100倍速いですし、チャットと違って、新しい質問が浮かんでも瞬時に答えが返ってきます。これ最高!

クイックコールされる側もよいことがある

さて、クイックコールをする側のメリットは十分にわかりましたが、される側はどうでしょう? 実はされる側も随分楽になります。なぜなら大抵のクイックコールはそんなに長くかかりません。オフィスにいて、「ちょお、教えてくれへん?」の感覚なので、この程度でものすごく楽になるのがわかります。都合がわかるければ、「Sorry, I'm not available. Are you available at 11 am?」とか返してあげれば自分がフォーカスしたいときに邪魔されることもありません。また、自分が、気軽にクイックコールを受け付けていると、自分が困ったときも相手が簡単にクイックコールを受け付けてくれます。しかも、クイックコールが無かったら、自分も相手に答えをチャットで書いてあげないといけないですが、伝わらないかもしれませんし、やり取りが発生して面倒になることも多いです。

クイックコールが文化になるといろいろはかどる

今のプロジェクトで経験したことなのですが、最初はこのようなクイックコールをするのは、リーダーのリチャードだけだったのですが、私含めて、みんなが徐々にクイックコールが楽だと気付き始めて、みんながやるようになりました。今では一日に何回もクイックコールをしています。そして、とても生産的に感じます。バグを探すのもわからなければ、すぐにチャットして、クイックコールするとすぐわかって、3分でクイックコールを切ったりもします。こんな風に、みんながクイックコールのことに気づいて文化になると、ホンマいろいろ楽です。ガチで楽です。だから、こういうことをシェアしようとしてブログを書きました。

自分的には常時接続より好み

個人的な意見ですが、私はクイックコールのほうが、常にチームの全員と接続している環境より好みです。せっかくリモートワークなのだから、正直だらだらするときはだらだらして、フォーカスするときはフォーカスしたいです。要は成果なのですから。あたまが疲れてきたら、ランニングに行ったり、筋トレしたりマンガ読みたいです。フォーカスして、他の人に話かけられたくない時もあります。もちろんこれは好みの問題なのでそれが悪いとも非効率とも思いませんが、私的にはだらしなくて、1日で成果の帳尻を合わせるタイプなのでクイックコール好き派です。

おわりに

今回は自分的には劇的に効果のあったクイックコールをご紹介しました。次回は英語環境下でのコミュニケーションのポイントでもご紹介しようかなぁ。

米国から一時帰国して「老害」がなくなるといいなと思った話

米国に移住して一年が経過した。正直なところ日本のほうがいいところはめっちゃある。特に生活面は、日本はホンマに素晴らしいと実感している。ただ「職場環境」は米国に圧倒的に負けていると思う。たとえ英語のハンデを背負ったとしてもこちらの方が圧倒的に快適だ。日本に一時帰国して感じた違和感とその分析、対処策について考えてみた。

f:id:simplearchitect:20190327181740j:plain

日本で感じた「違和感」

日本を出た1年前と比べると、働き方改革の成果か、多くの人が日本の職場環境に疑問を抱くようになっていてそれはとても素晴らしいことだと思う。ただ、一方でインターネット上の議論を読んでいると、今まで圧倒的な「権力」を持っており、ある意味表面上は「尊敬の対象」だった「年齢の高い人」が「老害」や「昭和」などとバッシングされているのを見て非常に違和感を感じた。私も来年早々50だし、昭和だし、日本に帰ってきたら年齢で就職できないから自分で会社やるしかないかなとかぼんやり思っていたことも思い出した。

f:id:simplearchitect:20191231115804j:plain

米国の職場環境と「年齢」

私は、米マイクロソフトのHQで勤務をしているが、米国では、職場において年齢で区別されるというのが全くない。白髪のおじいちゃんから、インターンの人までほぼ同じ扱いだ。上下とか無い。実際に働いてみるとこれがホンマに心地よい。誰かが年上とか、年下とかも気にしたこともない。年上の人が偉そうに接することもないし、新人やインターンの人が過度に「できない」とみなされることなく、同じように扱われる。つまり、「それぞれの職場に必要なスキル」とのパッション含むマッチングとそのレベルが重要になる。例えば DevOps チームに所属しているなら、DevOpsの知識や技術的実践力、それに関するプロジェクトの遂行力、コラボレーション、それを通じたインパクトなどが評価の対象になり、レベル別にどういうことが出来たらいいか明確に定義されているのでわかりやすい。著名で、実力がめちゃめちゃあっても、DevOpsに関係ない技術にだったら、採用されない。

f:id:simplearchitect:20191231115626j:plain

年齢が高い人の扱いの比較

日本だと、年齢が高いと仕事で成果がでているか否かにかかわらず、給料も高くなりがちで、ポジションも高くなりがちになる。「偉い人」もこの年齢層の人が多い。一方ある程度年を取ると、高いポジションにいない限り相当転職とかは困難になる。例え能力があっても敬遠されがちであり、実際年齢が高くなると、いろんな言い訳をして、年齢を理由にまったく勉強しなくなる人も多いと思う。また、年齢を言い訳にいろんなことを「それは無理」と自分であきらめてしまっている傾向が多いように感じる。

一方、米国だと、白髪のおじいちゃんのような感じの人でも、能力があればガンガンにプログラマをやってたりする。給料を上げたければ技術力+マネジメントに進むほうが有利だけど、そうでない選択をする人も多い。(少なくとも現場レベルでは、マネジメントのみというのは無い感じ)。年齢が高かろうが、低かろうが、定義されたJOBが遂行できるか?というのが問題なので、年を取っている人でも勉強するのは当然で、自分が働きたいから、自分で自ら勉強やスキルアップの機会を求めている。ちなみに、今回ブログ用にお金を払っている画像サイトで検索したら、「シニア」で検索すると介護みたいなイメージばかりで、白髪の人がバリバリ働いている日本人の画像をさがすことができなかった。 f:id:simplearchitect:20191231120312j:plain

ただし、私の記憶が正しければ、ある統計によると、年収が一番高いレンジは40代ぐらいになって、年齢が行くと低下する傾向にある。やはり老いと経験は成果に関係すると思うが、あくまでそれは人の努力次第であり、面接で年齢が聞かれることもない。それは自然なものと自分は感じる。少なくとも私の職場では、年齢を何かの言い訳にする人を見たことがない。ちなみに、人を「叱る」ような人も見たこともない。あったら多分パワハラでクビだろう。マネジメントは、いかに人をいうことを聞かせるか?ではなく、いかにチームで目的を達成しつつ、各メンバーが個人がハッピーになるかが気にされる。

年齢が若い人の扱いの比較

日本だと、新人や、インターンというのは基本仕事ができないものとして扱われる。ものを知らないという前提で、たとえマスターを出ていたとしても、電話とりとかそういう仕事から始まって簡単な仕事ばかりから始まる。まわりも3年ぐらいは役に立たないものと考えており、期待もしない。ただ、教育制度が充実しているので、ゼロから教えてもらえる。だから大学にはある意味あまり期待していない。

米国だと、新人や、インターンでも同じ扱いになる。ただ、自然と、クリアできるJOBディスクリプションが高くならないので、一般的にそんなにもらえないが、IT企業だと、大学でコンピュータサイエンスを学んでその辺は出来ることが前提となっているし、大学で学んで実践してきたことがとても重要になる。だから、新人でもいきなり活躍の場があり、実際活躍する人も多い。先輩に丁寧に教えてもらえるという感覚もないので、同じく同僚のようにわからないことは聞いてくるし、こちらもサポートするという感覚。ただ、わからないことがベテランの人より多いという感じ。

心地よい「実力」の世界

このような感じで、年齢のバイアスのない世界ではいろんなことがうまく回っているように感じる。年をとっても実力さえあれば働けるし、大学を出たてでも活躍が期待されるので、大学でコンピュータサイエンスをしっかり学んで実践してくる。つまり、どんな年齢層の人でも「実力勝負」だ。だからみんな言われなくても努力するし、いかに上手くキャリアを積めるかを考える。指示待ちの人とかは存在しない。それは得な選択肢ではないから。実力勝負というと、シビアな感じがあるが、実際にはそうでもない。明確なJOBディスクリプションがあって、それをクリアするか否かだけなので、明確だし、それは「ストレッチ目標」ではなく「普通にやればクリアできる」程度の目標で余裕もあるので、自由度も十分ある。この背景にはキリスト教のバックグラウンドも関係あるかもしれない。キリスト教では、偉い人は存在せず、唯一存在するとすると、ジーザスとかGODなので、それ以外は「人」なので偉い人もくそもない。

f:id:simplearchitect:20191231120455j:plain

どうしたらいいだろうか?

このまま働き方改革が進んでいくと、多かれ少なかれ同じような状況になると考えられる。だから、そうなってからではなく、今からそっちの世界にターゲットを絞ってキャリアを積んでおくといいかもしれない。今の日本だとまだまだ「政治」や、「偉い人」が存在するけど、一旦それは忘れて純粋に「実力」をつけるようなキャリアアップを目指しておくのはどうだろうか?もし、それが耐えられなさそうだと、外資系だと日本でもそんな感じなので英語を勉強して、そっちに移行してしまうのもいいかもしれない。日本の外資系にいるとよくわかるのだが、「実力があり、英語も出来る人」というのは本当に限られるレアキャラになるので、ちゃんとITの場合だったら技術を学んで実践して、英語も頑張っておくと、給料もあがるし、実力を伸ばしやすい環境にもなるので一石二鳥だろう。日本の外資系でビジネス英語に慣れると、海外で就職するというステップも踏みやすくなる。

f:id:simplearchitect:20191231120748j:plain

 年齢が高いから、大学を出たばかりだから、と言い訳するのは簡単だ。無理をする必要はないけど、一歩一歩自分なりに積み重ねたら、どんな年齢の人でも継続して学習しつづけ「実力」をつけるもしくはキープすることは可能で、そういう習慣がこのような世界が来た時にとても有効だと感じる。そしてそれが最も安全なことじゃないだろうか?  米国で働いていると、年取ったから記憶力が、新しいものは難しい、、、とかはホント単なるバイアスが大きいのではないかと感じた。みんな余裕でキャッチアップしていく。多分単純にやっているから。  出世の概念のような、今の日本での「成功」をターゲットにしていたら、そうなったときにつらいかもしれない。実際自分も米国に移住して、自分の「日本での成功と実力」と思われていたものが全く役に立たない現状に直面している。その状況を早く知れてラッキーとは思っているが、少しづつどうしたらいいか研究している最中だ。

日本に一時帰国して思ったこと

日本で頑張って働いてきた人が突然「老害」といわれるのはホンマつらいやろなと思った。年とっただけやのに。それよりも、誰も年齢を気にしない世界は本当に快適だったので、そのことをシェアしてみたいと思いブログを久々に書いてみた。人を怒鳴りつけるようなパワハラがまかり通ったりしてやってられん!って思うとは思いますが、そういう価値観の中で育った人の努力や成果を否定するのはなんか違う気がしました。今は過渡期で、そこから徐々に「実力」のみで評価されて、どんな年齢の人でも楽しく働ける日本になったら本当に素晴らしいなと思いました。例えば、今そのパワハラをしている人でも、たぶん米国で、日本人が居ない環境で働いたら、考えは絶対自然と変わるとおもうのです。パワハラしたら首ですし、JOBディスクリプションが達成できないとファイアで、技術力が求められるのできっと真面目な日本人は頑張って勉強すると思います。言い訳してもファイアされるだけですから。日本だとそうはいかないので流れはゆっくりになると思いますが、いずれそうなると思います。そうなったときに全ての年齢の人も楽しく働けるようになったら最高だなぁ。自分が日本に戻る頃にはそうなっていたらいいな。

勉強したり、留学したりすればするほど、英語のレベルが落ちている現象を考察してみた

私は、現在米国でエンジニアをやっていて、もうそろそろ5ヶ月目に突入している。私の部門は、エンジニアでもお客様のところにいく部門なので、こちらのお客さんと会話をしたり、チームで開発することも多いけど、特にコミュニケーションで困ってはいない。もちろんもっとリスニングが良くなれば良いのになぁとは思うけど、業務に支障が出るほどではない。どっちかというともっとリーディングのスピードを爆上げしたいのが今の悩みだ。

f:id:simplearchitect:20190515161202j:plain

英語の実力が低下し続けているのはなぜ?

しかし、ふと思い起こしてみると、私の英語のレベルは下がり続けている。しかも勉強すればするほど。自分の体感としては、昔に比べると総合的な英語力は上がっているはずで、知っているフレーズも増えたし、リスニングの理解力も向上している。私の英語の勉強は、本格的に始めたのは、おっさんになってからで、自分で英語を独学で勉強した後、3週間、3ヶ月とそれぞれ2回ロンドンに短期留学して、その後外資系企業に就職してインターナショナルチームに配属されたので、英語ざんまいの環境になって、3年後に、USに移籍という感じのキャリアだ。語学学校に入学すると、最初にプレースメントテストというのがあって、レベルの判定があって、その人の実力にあったクラスに配属される。その結果が実に不思議な感じだ。

f:id:simplearchitect:20190515160549j:plain

私が独学で英語を勉強して、生まれて初めて海外に3週間留学した時に受けたプレースメントテストの結果は、Upper Intermediate だった。ちなみにインタビューでの会話のレベルは、Advanced と言われていた。1年間英会話学校に通って勉強したのち、次の年に留学した時のプレースメントテストの結果は、Intermediateだった。当時もなんで?と思ったのだが、3ヶ月の間に、Intermediate -> Upper Intermediate -> Advanced のクラスで終了した。 f:id:simplearchitect:20190515161921j:plain

さて、その後外資系の企業に入って英語漬けになって、USに移籍になった時に、リロケーションパッケージの一部で、オンラインの英会話学校のベネフィットがあったのだが、そのクラスのプレースメントテストの結果は、Pre-Intermediateだった。マジ、なんでやねん?って感じ。

自分の体感の英語力

自分が独学して最初に留学する前も、結構喋りはできていた。英語を日本語で理解しないとか、シャドーイングとか、発音練習とか色々やったけど、結構喋ることはできていた。ただし、表現はそんなに多くないし、英語の環境の経験がゼロなので、この時に今のレベルのところにぶち込まれたら対応できていたかはわからない。 自分の体感的に、大きく英語力が伸びたのは、3つのタイミングがあって、独学で勉強した時は、英語力の飛躍的な伸びを感じた(何しろ、全然英語ダメだったから)、その後、2回目の留学で3ヶ月英語漬けになったのも相当レベルアップした感があった。最後は、外資系企業に入って、同僚との会話が完全に英語になってから。最後のは、実力が伸びたというより、英語を使うのに慣れて、度胸がついたぐらいのものかもしれないが、ゴリゴリに実用になったので、ある意味レベルアップしたと言える。自分の体感的にはそうだ。 f:id:simplearchitect:20190515162224j:plain

アメリカにきてからは成長していないのを感じる

その一方で、アメリカに住むようになってから、もちろん日常は全て英語なのだが、正直なところ、英語力が伸びた感じはまるでない。先日も日本から来た日本人の同僚が「牛尾さんの英語力は正直あまり変わりませんね」と言われて、自分も「うん。俺もそう思うねん」と答えた。本当に正直そう思うのだ。アメリカに住んで、英語を使いまくっても、特に実力は向上しない様子だ。使っているだけでは、度胸がつく程度で、何か実力アップに繋がることをしないと成長しないらしい。もちろんアメリカ人の友達もいるし、お家にお呼ばれとかもよくあるので、家から出てないとかではない。

謎を考察する

このテストのレベルが落ち続けている現象と、自分的にはレベルが向上しているというこのギャップは一体なんだろう?一つ思い当たるのは、勉強スタイルを変えたことだ。私は、最初の留学までは、日本語翻訳にたよらず、CDや映画をリスニング、ディクテーションしたのち、シャドーイングを自分の脳に刻まれるまで繰り返しやると、勝手に口が喋るようになるというスタイルでやっていた。本も日本語訳はせずGraded readersという本を少しづつレベルをあげながら多読していた。つまり、大量のデータをぶち込んで、本能と反射で英語を使うというスタイルだ。最初の留学の時は、先生にものすごく英語を褒められたし、聞き返されることもほぼほぼなかった。その後、英会話学校に行って、日本語で学ぶのは反対だけど、英語で学ぶなら文法を勉強するのもいいなぁとか、英会話が学校の教材はよくできているので、学んだフレーズがすぐ使えるし、ネイティブもたくさん使うので、効率がいいとも感じて、シャドーイングの頻度が極端に落ちて、愚直に「勉強」をしていた。おそらく、この勉強スタイルの違いが今回のギャップを生んでいると想定される。ではなぜ? f:id:simplearchitect:20190515162412j:plain

自分的な分析

先に書いているように自分的には、英語力は向上していると思う。リスニングとかは明らかに向上しているので、例えば今Upper Intermediateの教材を聞くと初見でもシャドーイングができて理解できる程度にはできる。多分最初の留学の時はそこまではできなかったと思う。フレーズの理解力も向上している。ただ、プレースメントテストをする人がわの方を見ているとどうだろう。私の分析では、私は昔より「ミス」をすることが増えたのだと思う。昔のやり方だと、私は、過去に聞いたフレーズを精々単語を入れ替える程度で、過去に聞いたことのあるフレーズで、私の口から出るフレーズが構成されていたはずだ。だから表現が多くなくても、ミスが極端に少なかったのだろう。何しろ、自分が無意識でも口から出るぐらい繰り返したフレーズなので間違えもしないし、頭で考えてもない。一方、文法とかのテストも、感で答えた当たる感じだった。なんとなく間違ってるやつは気持ち悪いので、選ばないみたいな感じだ。だから、そっちのテストもそこそこ良かったのだろう。 f:id:simplearchitect:20190515162557j:plain  しかし、文法とかを勉強し始めたらどうなったか?というと、文法知識やフレーズに関しては、知識が大幅に増えているが、いざ口に出すと、そのフレーズを使おうとすると、シャドーイングしまくった訳ではないので、頭で考えて「作文」して喋ることになる。本能と反射ではない。だから、つい先日まで受けていた英会話のコースでも先生にいっぱい文法ミスを指摘されて、どうやって直したらいいと思うと言われたら、全て回答できる感じだった。知らない単語や表現もほぼほぼない感じだ。つまり、頭でわかってるけど、反射的に使えるほどこなれていないということなのだと思う。だから、プレースメントテストでは点数が落ちる一方ということだろう。

対策

あっているか、どうかわからないけど、自分的な分析の結果、一番最初の英語学習スタイルに戻すことにした。これからは、一切文法は勉強しない。全て、本能と反射で英語を使えるように鍛えていく。週2回程度の英会話では身につかない。毎日数時間をぶち込んで、徹底的に英語を体化していく作業が必要だろう。じゃあ、今までの努力はなんだったの?となりそうだが、多分今まで、英語を「勉強」した蓄積は、無駄ではなく、有効だと思う。問題は、「体化」のステップを怠っていたことだろう。具体的には、英語を音で理解して、反射的に理解して、喋れるよう、シャドーイングを死ぬほどやる、文法とかは考えない。(考えなくても喋れるようにする)リーディングも音読から再スタートで、文法は忘れて、体化に焦点を当てる。つまり、私が一番影響を受けている、英語は絶対勉強するな方式に戻すということだ。実際に、一番伸びを感じたのは独学した時なのだ。

今後の戦略

今後の戦略は、先に進みたいのは、グッと我慢して、まずは、Upper Intermediate の教材を使って、リスニング-> ディクテーション-> 英英辞書で意味調べ -> シャドーイングのプロセスを実施、その後-> Advanced -> Business English (Upper Intermediate)に進んでみる。 多分CDはこれぐらいやったら無敵になるだろう。昔やってた時はどのレベルでやればいいのかがわからなかったが、今は、自分が楽にできるレベルからスタートすることに決めた。インターネットで調べるとうまくいっている人は、無理なことはしていない。だから、ほぼほぼ意味がわかって、初見でもシャドーイングできるUpper Intermediate の教材だと、多分結構早くこのステップを終えられるだろう。Advanced は最初から最後まで通してないので知らない表現とかはありそうだけど、Upper Intermediateを復習したら相当にレベルアップしていると思う。その後に、チャレンジすると意外とすんなりいける気がする。最後のBusiness English は結構(勉強は)やったけど、これを飽きるほどシャドーイングして体化させると、仕事上の英語はほぼ苦労することはなくなりそう。その後、ガチの英語力に移行するために、映画で同じプロセスを繰り返して、最終的に、英語は絶対勉強するなで紹介されてるけどやったことがなかった、英字新聞のメソッドもやってみよう。 f:id:simplearchitect:20190515162820j:plain

最後に

ちなみに、この分析は、ADHDな私なので、一般の人に当てはまるかは知らない。英語を勉強して実力をあげている人はたくさんいるので、私のケースはこうかもしれないという考察に過ぎないし、実際やってどうなるかもわからない。ただ、自分の感覚的には、これでいけるという確信に近いものがある。英語を勉強している時にはなかった感覚だ。たまに、こっちにいると、ネイティブからも、「例外的に英語ができる日本人」という人がたまーにいて話を聞くことができるのだが、そういう人にコツを聞くと、要領を得ないことが多い。「んー。特に勉強もしてないけどなぁ」とか、「楽しいから、会話の中で知らない表現があったら、5分後にはそれ使ってるわ」とか、我々からすると「なんでやねん」という感じなんだけど、才能ある人はそんな感じなのだろう。つまり、ある程度仕事で使えるレベルではなく、ネイティブに混じっても遜色ないレベルになるためには、「頭を使っている」状態は好ましくないのだろう。結果はわからない、ただ、今は、英語を使いまくれる環境にはいる。こうなったら、昔夢見ていたネイティブと遜色ないレベルというやつを目指してみよう。そしたら、仕事でも超絶アドバンテージになるはずだ。なぜならネイティブは少ないし、日本人は、ネイティブの国々の人の文化とは真逆にある文化なので、いろんな価値が出せるはずだ。

f:id:simplearchitect:20160218121546j:plain

ちなみに、今は昔の方式に戻しているが、何時間でもやれるし、楽しい!この調子でガンガンやって試してみよう。ネイティブ並みになってやるぜ。そしたら、プログラミングとか、技術の勉強も超絶楽になるはずやわ。

アメリカで、ソフトウェアエンジニアの日本人がインパクトのある仕事をする方法

アメリカに移住してもうすぐ4ヶ月ぐらいになるけど、こちらに来てから面白いほど成果が出ていない。

f:id:simplearchitect:20190327181937j:plain

最初の2ヵ月ぐらいはなんやかんやで仕事にならんやろうなと思っていたから、気にもしなかったが、そろそろ4ヵ月なので、流石に焦りを感じて来た。何一つ仕事が完了しない。日本で仕事をしていた時はこんなことは発生しなかった。こっちの方が一緒に働いている人が同じタイムゾーンだし、近いし、やりやすいはずなのに何故だろう?焦っていても何も改善しないので、直接仕事をしているクリスと、日本人エンジニアの先輩の河野さんに話を聞いてみた。自分の会社限定かもしれないけど、学んだことの記録と、もしかすると誰かの役にたつかもしれないから書いておこうと思う。

仕事が完了しない焦り

何だろう、この仕事の完了しないっぷりは。いくつか、終えたらインパクトがある仕事があるのだが、これがまた完了しない。一緒に働いているエンジニアの人はみんな超絶忙しい感じで、声をかけるのも気を使う感じ。だから、何かのブロッカーの質問があったとしたら、彼らにメールなり、メッセなり、PRのコメント欄に書いたりするのだけれど、全く反応がなかったりすることもしょっちゅうある。自分のPRのコードがイマイチだからダメなんだろうか?それとも単に忙しすぎてみる暇がない?そもそも反応がないのだからどうしようもない。

f:id:simplearchitect:20190327175641j:plain

でも、その質問がクリアされないと前に進まないしどうしたらいいんだろう?いろんなことがそんな感じで止まってしまう。勝手に先に進める?しかし、大きな手戻りが発生する可能性が高い。しかも、日本と違って、仕事は勝手に降ってこない。自分でゲットするもののようだ。誰かがインストラクションしてくれたりするわけでもない。そんなものと思ってやってたけど、ここまで成果がでないと焦って来た。

インパクトが停滞する

そんな折、私が2ヵ月ぐらい使って分析して、インプリした大きめの機能追加があって、それがマージされると結構なインパクトだし、貢献と思うのだけど、それはまだだ。というか、レビューもしてもらっていない。アポとってデモした時は、結構好評だったように感じて、次はPRレビューすると言ってたのに、しばらくしてもするそぶりがないので、何度かメールを送ったり、PRにメンションしたりするけど、反応がない。どうしたらいいんだろう。しかも別のドキュメント系の仕事も、あるアーキテクチャのディスカッションのポイントが合意できないと、書いても意味ないので、自分には時間があるのに前に進めない。先ほどのPRも何か一つでも反応があり、不満な点があれば速攻で対応する準備があるのに無反応だから何もしようもない。どうしたらええのよ。こんなの日本ではありえない状態やわ。しかし、これ以上プッシュしたら流石にうざいだろう。もうどうしたらいいのかわからない。

f:id:simplearchitect:20190327174551j:plain

とあるイケてるエンジニアのスムーズな仕事ぶり

そんな折、私よりよっぽど後にムッチャ難しい機能に着手しためっちゃイケてるエンジニアがいた。彼は、私たちの前で、初めて1週間ぐらいでさっと最初のデモを作り、毎週、更新しては、みんなに見せて来た。正直めっちゃカッコいい機能。次のリリースの目玉のような機能だ。そして、1ヵ月ちょっとぐらいで、着想からからのでっかいPRはマージされた。もの凄くスムーズだった。彼が超優秀というのもあるし、この機能だったらみんな夢中で、優先順位上がっているというのもあるけど、たった一人でめっちゃスムーズにインパクトを出した。なんて優秀な人なんやろ。

f:id:simplearchitect:20190327182212j:plain

クリスにフィードバックを聞いてみる

多分自分の仕事の仕方に問題があると思ったので、仕事をしている相手のクリスに話を聞いてみることにした。自分の仕事の仕方に問題があるからフィードバックをくれないかと言って時間をもらった。意外なことに、私の仕事の仕方には問題がないというので、私は、反応がなくて困ってて、たとえ今無理でも、何時頃に時間取れるとかそんなことだけでもわかったらええのに、それすら難しい、これ以上ピングしたら日本人的には、失礼だと思ってしまうという話もした。すると彼は、それは多分みんな忙しくて、単に時間がなくて後回しになって忘れているだけやと言ってくれた。彼のアドバイスでは、メールでダメなら、メッセでピング、それでダメならこちらから会議を設定、それでダメなら直接乗り込んで、話をすると。なんやそれ、大阪のおばちゃんのような厚かましさやんけ、、、でもそれでええらしい。ただし、相手に尊敬を持って。そんなもんらしい。日本ではあんまし相手がたまにメール見落としてるとかあるけど、もう一回ピングしたら無視されるとかは普通無いからそれは凄い違いだ。クリスは、自分が相手であってもそうしてくれたら良いよって言ってくれた。

f:id:simplearchitect:20190327180320j:plain

日本人の河野さんにも聞いてみる

たまたまクリスと同じビルに河野さんがいて、さっきちょっと話したので、「そうだ河野さんに聞いてみよう」と思い立って、少し時間をいただけませんか?とメッセをしたら程なくしたらカフェテリアのコーナーに来てくれた。私が、上記のような事に困っているというと河野さんはいくつも重要なアドバイスをくれた。河野さんはとても優秀な人で、私の会社でも製品的にも、技術的にも、チーム的にも中核の最高のチームでずっとサバイバルしている、つまりめっちゃ優秀な人なんだけど、これまためっちゃいい人で、日本でも凄くいい講演をされていて記事にもなっている。河野さんに聞いたら何かいいヒントが得られるんじゃ無いか?と思って藁にもすがる感じで聞いてみた。

logmi.jp

日本人を捨てる事

全く意外な事に、河野さんも、今ぐらいの頃私と全く同じ問題で悩んでいたらしい。当時の彼の上司のトルコ人に河野さんが相談したら、以外にもトルコの文化は日本と似ていて、控えめな文化なので、「俺が、これやりました、見てみて!」みたいな事をしないらしい。そんな彼が、USに来てから、トルコ人である事を捨てて、アメリカ人のように振る舞うようにしたらしい。日本人の自分ならきっとやらないような、「俺これやった!見てみて」「俺これやらんといけ無いから、時間作って」みたいなことをガンガンにやるようになったらしい。河野さんもそれを聞いてそういう風にするようにされたらしい。ただし、それがちゃんと出来るには3ヵ月ぐらいかかったともお話されていたので、そんなに直ぐには日本人癖は抜けないのだろう。常時大阪のおばちゃんレベルの厚かましさになることから始めよう。

f:id:simplearchitect:20190327180616j:plain

コミュニケーションとビジビリティ

河野さんに褒めてもらったのは、私が毎週プロダクトチームの定例に参加していること。これは、コミュニケーションの面でもいいことだけど、ビジビリティにも良いと教えてくれた。他の人に自分が何をやっているのかを見せないと、誰もそれに気づかない。だから、相手に自分が何をやってるのか見せるのが重要で、そしたら気づいてもらえる。スクラムのイベントとかも、ビジビリティをあげる効果があるという話もされていた。自分的にはコンサル時代から「価値を出したら、それを見える化しないと行けない」と言われていたのでその概念は直ぐに理解できたけど、純粋なソフトウェアエンジニアの世界でもそれは同じという事を教えてもらった。

f:id:simplearchitect:20190327181857j:plain

周囲と比べず、周囲の人をリソースと考える

次に教えてもらったのが、周囲の人をリソースとして考えるという考え方。周りの人は物凄く優秀な人が多い。本当にスーパーマンのよう。しかも英語とか読んで理解するのも自分より何倍も早い。だから、正直自分はガチでダメやなとしょっちゅう思っていたけど、河野さんも最初は同じだったらしい。比較したら落ち込むだけだ。だから、昨日の自分と比較して、成長しているかだけを考えて、周りの人はリソースだと思って、わからないことは質問しまくる。

仕事は降ってこない。自分で作る

次の問題として、仕事が降ってこない問題がある。日本の場合は、マネージャとかいるので(こちらにもいるが)仕事は基本的に降ってくる場合が多い。自分は能動的に動くほうだが、それでも、基本的にミッションとかあって、達成することが明確であることが多い。ところが、こちらのソフトウエアエンジニアリングでは、自分のスコープぐらいは決まっているかもしれないけど、仕事は自分で作らないと無い。ゼロ。だから自分で動いて、なんか作ってみるとか、貢献してみるとかしないと行けない。だから自分が作っていいと思ったものは、どんどん周りの人に見せていく。もし、何人かが、あまり興味なかったとしても、さらに他の人にもデモしてみたりする。リンクや動画を送っただけではダメで、目の前で時間をもらって、俺これ作ったぐらいすると、誰かが興味を持ってくれるかもしれない。  そんな事をしていて、周囲にも聞きまくっているうちに得意分野が出来てきて、だんだん忙しくなっていくという感じのようだ。

f:id:simplearchitect:20190327181740j:plain

マネージャは使うもの

日本にいるときはマネージャは管理したり、何か指示を出す人だけど、こちらでは、全くそんな事はない。河野さん曰く、すごく良い作戦としては、マネージャを使う事だと言っていた。私も感じているけど、こちらのマネージャはガチで優秀。技術もよく知っているし、困ったら本当に助けてくれる。だから、先頭にあったような、反応してくれない問題も、マネージャに相談すると、一緒に解決したり、自分がアプリを作ったらまずマネージャにデモすると、それを広めるのを助けてくれたりすると言った具合に、とても助けてくれる。だから、こちらではマネージャに「使われる」のではなく、マネージャは「使うもの」だとアドバイスをくれた

ものづくりを楽しむ

これはアドバイスではないのだが、最後に河野さんが言っていたのが、電子工作興味ありますか?楽しいですよ?と言われた。そういえば、実力をあげよう、あげようとばかり考えていて、技術を楽しんだり、自分でなんか作ったりとかそういう感覚って忘れていた。自分のツール作るの最高に楽しいし、面白いアプリ作るのも面白いな。楽しい事やってる方が人間上達するよね。そんな事を思い出しながら、河野さんに去年作ったStrikes をご紹介した。復活して継続開発しようかな!ラズパイも楽しそうだから買っててやってないので、そろそろ魂を吹き込んでみるかな。

f:id:simplearchitect:20190328012313j:plain

最後に

あの河野さんでも自分と同じような事を感じていたのかとびっくりするのと同時に、物凄く適切なアドバイスをいただけた。ガチで世界中で使われまくっている、自分の会社の中核のサービスを開発をしている本物、本当に私が目指している本物のエンジニアが時間をくれてアドバイスをもらえた。今回のブログは誰のためでもなく、自分のためなんだけど、私や河野さんが感じたような事を感じている人のためにこちらでもシェアしてみる事にした。誰かのために役に立つと幸いです。

アメリカに住んで初めてわかった「最大級」の違い

昨年の年末にアメリカに移住して、今はシアトルの近くの Kirkland というところに住んでいる。大体三か月たって、いろんなことを体験した。移住した理由は単純で、コンピューターサイエンスの世界ではアメリカがどう考えても一番進んでいるので、そこで修行して通用するようになったら楽しいかなと思ったからだ。他にも他国の人を観察しているととても生産性が高い。特にアメリカの人は生産性が高い傾向が高い。なんでこんなにアメリカはコンピューターの世界が向いているのだろう?その一旦を感じた気がしたので久々にこのブログを書いてみることにした。

f:id:simplearchitect:20190311151850j:plain
Kirklandの風景

自分へのご褒美を買う

アメリカに移住すると、当然日本にいる友達とかと会えなくなる。私は一人でもさみしくない人だけど、さすがにこたえるだろうと思った。だから大好きなバンドをまたやろうと思った。ただ、こっちは正直レベル高いし、私はヴォーカリストだから、さらにハードルが高い(英語という意味で)。だから、移住した時に何か自分にご褒美を買おうと思っていた。最初はアメリカは家が広いだろうから、歌も、楽器もやりたい放題じゃないか?とおもったけど、アパートに住むと、そうでもないので、高い機材を買うより、思いっきり歌って、楽器を弾ける環境を作ることにした。ヴォーカルブースという一人用の防音室があるからこれを買おうと思い立った。これでがっつり練習しよう。ちなみにこんな感じのものだ。

f:id:simplearchitect:20190311152949j:plain
Silver Series VocalBooth

www.vocalbooth.com

ドキドキの銀行振り込み

と、ここまではいいのだが、実際に行動に移してみるとコテコテにトラブルに巻き込まれた。私の住んでいるのはアパートなので、そもそも入るかとても心配だった。だから、Vocal Booth の人にちゃんと分解されてくるか?とかの質問を投げたが、彼曰く「大丈夫、分解してくるからアパートも大丈夫。家用だし、Philips (プラスドライバーのこと) があれば簡単に組み立てられるよ。」その一言を聞いて注文した。高い買い物なのでドキドキだ。アメリカやし。

f:id:simplearchitect:20190311172955j:plain
こんな感じかな?

直接銀行口座に振り込むようになっていたけど、アメリカ人の友人がリサーチしたほうがいいと。だまされる可能性があるからとのことのようだ。しかも、振り込みをしようとした銀行のアプリも、「口座振り込みは詐欺に気を付けましょう」とか出てくる。ググったけど悪い評判ないし、ええい、やってしまえ!と振り込んだ。メールもちゃんと返してくれたが、ブースを作っているオレゴンでは、雪が降っていて交通がマヒしているようで、すぐに出荷できないといわれる。先の詐欺の件もあるので、ドキドキだ。数日間後、出荷したと連絡が入った。それと同時にメールで、注意書きを読んでおいてね。といわれた。人を二人用意してね、ドリルとかあったほうがいいかもね?クレートをトラックの上で開けておろすようにしてね。ドアは重いから、二人で運んでねと。なんやねんクレートとか、ドリルって?まー、何とかなるやろ。

日本の宅配の凄さ

こっちにいると、宅配の遅れみたいなのはしょっちゅうだし、適当だし、翌日配送とかありえない。昔は Amazonすげーって思っていたけど、あれ凄いの佐川とか、黒ネコだわ、、、とこちらでもAmazonを利用して実感した

f:id:simplearchitect:20190311173237j:plain
日本の宅配は神

。だから、今回も遅れとかはありがちかなーとおもったけど、今回のはなかなかディープだった。この荷物は受け取りの時に絶対に自宅にいとくようにとインストラクションがあったので、宅配予定(昼の1-6時のどこかで配送)の日は、自宅作業にした。その日の終わりになって電話がかかってきて、「ごめん、今日配送無理だわ」と電話がかかってきた。まーそんなこともあるだろう。次の日も自宅待機にして宅配をまっていたら、夕方にメールが入っていて、「おまえの電話番号つながらんから、配達無理やわ。連絡しとって」と。オペレーターさんに電話して、電話番号を伝えて次の日。あれ、まだこない。するとメールが入っていて「電話がつながらんから無理や。連絡して。と、いや、昨日伝えたし、、、」、と思いつつもまたオペレータさんに電話した。そこで衝撃の一言を聞くことになる。

フォークリフトを持っていますか?

オペレータさんに電話をすると、言われたことが、「Do you have a fork lift?」「えっ」、、、流石にそんなこと人生で言われたこと無い。どう考えてもわしの住所アパートやねんけど、、、彼女曰く、めっちゃ重い荷物があるから、フォークリフト無いと無理で、オプションとして、トラックの上で分解する方法もあると。そして、宅配で届く予定の荷物の詳細を見てかなり不安な気持ちになった。「920lbs」大体 480 kg 。何かが間違っている。そういえば、Vocal Booth のインストラクション意味が理解できなかったけど、今頃事態を把握した。これ、一般の家庭で買ったらあかんやつちゃうん、、、

f:id:simplearchitect:20190311173508j:plain
フォークリフト持ってません、、、

キャンセルに備える

Vocal Booth はガチで欲しいものだったけど、こんなもの買ったら引っ越しの時どうするねんとか、そもそも入るのか?ということが頭をよぎった。これ買った俺がアホやったんちゃうか、、、別の用事のついでにアパートの事務所によって聞いてみた。ここのアパートの天井の高さはどれぐらいですか?と。すると、彼女はこう答えた。「そうねー。ようしらんけど、8-9 (inch) の間ぐらい」そして、VocalBoothのスペックを調べると、「8.8 inch」こんなん絶対無理やん!ということで、Vocal Booth に電話をした。キャンセルした時の、返金の手続きとかについて教えてもらうためだ。キャンセルをしようとしている自分に若干安堵する。お金は失うけど、ひどい目にあうことはないだろう。

f:id:simplearchitect:20190311173946j:plain
微妙な高さの天井

自分だって英語で電話するのはつらいものがあるが、やるしかない。「高さが多分無理なので、キャンセルしたいんだけど、リファンドとかあるの?」と聞くと、彼は「そうか、残念だね。1000ドルぐらいは負担になるけど、そんなひどい目には合わないし、リファンドするよ。単にコンテナを送り返すように指示をしたらいいよ。だけど、このVocalBoothは、何千台も出荷しているけど、一回たりとも高さが問題になったことがない。8インチあれば組みあがるよ。」彼の口調もだましているようには感じなかったので、素直に信じてみることにした。せっかくアメリカに来たのだからこうなったらやってみよう。「ドアが重いから、それだけは二人で持ってね。あとは、Phillipsがあれば、大丈夫。ドリルもなくても大丈夫だよ、30分ぐらいでトラックの上でクレート(コンテナ)を分解して中身をとりだせるよ。」とのことだった。

友人を手配

同じ職場の友人が、手伝ってくれるというので、宅配会社に電話をして、なんとか、時間を狭めることに成功して、5-6時に来るらしい。友人が4:00頃こっちに向かってると電話をくれた。私が待っていると、トラックの運転手さんから電話かかってきて「ごめん、今日無理だわ」 orz 今まではともかく友達が向かってきてくれっるのに30分前にってなによ、、、、家に来てくれた友達に事情を話したら明日は家族旅行だから、昼までなら手伝えるとのこと。宅配会社と交渉して明日朝に持ってきてもらうことにした。

絶望

次の日は、9-12時のスポットなので、友人には、トラックの運転手さんから連絡は要ったら連絡するわと言ってある。ところが、今回はいつもとは逆に突然電話がかかってきて「ついたから、どうすればいい?」とのトラックの運転手さんの電話だった。「へ?あ、了解」友人に、メッセージを送ったり、電話を掛けたりしたけどつながらない。どうするよ!もう一人手伝ってくれるといってくれた友人にもメッセするが反応がない。やるしかない。そして、トラックに向かった。オペレータさんにトラックの上で分解するようにするという話をしていたのだが(彼女からもそう提案があった)、実際に来たトラックの運転手さんは、時間ないから、さっさとおろすね、多分このツール使えばおろせるよ。と言われて私茫然。

f:id:simplearchitect:20190311174324j:plain
トラック到着(イメージ)

「こんなクソ重いのどうしたらいいの?」と聞くと「あー、それ君のコンテナやから、君のビジネスだよ」と。ちなみに、運転手さんは意地悪そうではなくて、親切なかんじだけど、彼もどうしたらいいのかわからない様子。私の眼前には、ドカッとおかれた920 lbs のコンテナが。脳内イメージでは、プラスドライバーで簡単に組みあがる、分解パーツなので、IKEAの家具みたいなのをイメージしていたが、実物はこれだった。友人もいない、雨も降っている。よくわからんが、とにかく分解するしかない。中身抜いた後もこのコンテナどうやって処理したらいいかわからんけど、とりあえず開けようと、ドライバーを片手に開けてみる。

f:id:simplearchitect:20190311161602j:plain
コンテナ(実物)

後悔

この巨大なコンテナと中に入っていた工場施設のようなパーツを見つめながら、「無理じゃね、、、」と心の中でつぶやく自分がいた。「やっぱ昨日の時点でキャンセルが一番正しかったなぁ。」で、これどうするよ、、、たった一人で、、、しばらくすると、友人二人が反応があって、わざわざ来てくれた。

Brent の一言

同僚であり、友人のブレントは、いろんなツールを貸してくれた。ドリルだとか、トンカチだとか、ノコギリだとか。彼は南アフリカから私と同じように来た超絶ナイスガイ。彼にも、もう一人の日本人の友人にも、こんなだから、入らなかったらキャンセルも考えてるんだという話をした。高さも多分無理だし。すると、Brentは、「メジャーで入るかどうかはかってみよう。折角君が楽しむために買ったんだから、入ると絶対いいよな」といって、メジャーで天井まではかってくれた。結果は 9.4 inch 。Brentは、「絶対入る。君が、このブースをエンジョイするのを楽しみにしてるよ」といって時間になったので、家族旅行に旅立った。家族旅行の前に仕事でもなんでもないようなこんなんを一生懸命手伝ってくれるなんてなんていい人なんだろう。ホンマ感謝しかない。

再び挫折

さて、2人で運べるといってたので、パーツを残りの友人と運んでいたが、2人でないと無理と言っていたドアが出てきた。友人が持ち上げようとすると、まったく持ち上がらない。私は筋トレをしているので、持ち上がるがかなりの重さ。そして、超でかい。これが自分の自宅の曲がりくねった玄関をちゃんと通過するんやろか?これは、2人では絶対無理という感じになって、自分のアパートの事務所にいって、手伝ってくれる人を探すことにした。自分の気持ちとしては、心の奥底で、誰かに「無理、だめ」って言ってほしかったような気がする。事務所の人だと、「こんな重いものを家に上げたらだめですよ」とかいう反応も想定しながら声をかけてみた。すると気楽にてつだってくれることになった。ローリーという道具までもってきてくれて、3人がかりで運ぼうとしたが、デカすぎるのと、重すぎるので、すぐにアパートの壁に大穴を開けそうになる。頑張ったが、そもそも、普通にエレベータに乗らないのがわかった。中に仮に入ったとして、組み立てなんて2人で絶対無理だわ。エレベータは斜め上にしてあげたらいけるかもしれんけど、機械つかって3人でも無理な重さだ。

f:id:simplearchitect:20190311174718j:plain
重すぎた

どこのだれが、2人で十分って言ってるんねんほんま。とうとう私たちはエレベータに詰めることもできず、スタックした彼は「人でを調達したほうがいいよ。ローリーは貸してあげる。」とアドバイスをくれて「自分にはアイデアがある。この扉のパーツは、扉が重いから、これを外せば、かるくなるからインストールできるんじゃないか?」そういいながら、彼は仕事に戻った。しかし彼は「こんな重いものは無理だ」とか、「こんなのここのアパートに入れたらだめだわ、傷がついちゃう」とか言いそうなものだが、「どうやったらできるか」を必死にかんがえてくれた。

f:id:simplearchitect:20190311174745j:plain
ホンマにこんな気分だった

彼が去った後、くっそおもいローリーが邪魔なので、なんとかアパートの扉の外に戻して、にっちもさっちもいかなくなって、日本人の友人につぶやいた「自分がアホでした。やっぱり昨日キャンセルしとけばよかった。」彼は「この国の経験値があったと思いましょう。」そして、彼に、キャンセルの相談をしていると、まずは、宅配会社を呼ぶ前に、VocalBoothに連絡をして、リファンドの指示をもらわないといけないよと言ってくれた。だから、VocalBoothに再度電話をして、キャンセルのプロセスを教えてもらうことにした。

周囲の住民の反応

さて、このクソ重い、そして、デカい防音室の扉がアパートの前にローリーにくくりつけられて立ってる。こんなものを見たら、日本の同じアパートの人だと「大家さんに相談したほうがいいんじゃない?こんなのは入らないよ。」「邪魔だし、無理だよ」「迷惑です」とかいわれそうなものだが、絶望している私に何人もが話しかけてきて、「おー、これ、めっちゃいいやつやん、俺もギター弾いてるんだよ、君がうらやましいな!」とかおばちゃんも「防音室だねー。エンジョイしてね!」誰一人あきらめろとか、迷惑とか言わなくて、「めっちゃいいね」と言ってくるのだ。自分は絶望しているのに。もうキャンセルしたいって。

f:id:simplearchitect:20190311175018j:plain
ポジティブなご近所さん

Vocal Booth の一言

キャンセルの指示を聞くためにVocalBoothに電話をしてみた。高さは大丈夫だけど、扉が重いし、エレベータに乗らないし、どうしようもないという話をしていた。そしたら、彼が、「そうなんだ、普通は2人でいけるんだけどなぁ。」私「ちなみに、ドアを取り外して軽くするとかできる?」彼「お勧めしないない、だけど、ピンでとれるよ。こういう時は、うちは、People Readyというところにいつもお願いしているよ。」キャンセルもできるけど、最後の望みで、そこに電話をかけてみることにした。すると、そこは、人を派遣してくれるような会社さんて、「今すぐなんだけど、大人2人2時間手配できる?ものすごく重い家具を運んで組み立てるのを手伝ってほしいんだけど。」「いつがいいですか?」「できればなるはやで」すると1時間ぐらいで2人を派遣してくれた。

屈強のナイスガイ

すると、2人のかなりごっついナイスガイがやってきた。時間差で来たので、最初に来たナイスガイと私で、重くないけど、扉と同じサイズのものをためしに上げてみることにした。一応家には入った。ただし、扉は重いし厚い。この人が2人来てもあの重さやし、無理やったらキャンセルやな。と思っていた。もう一人のナイスガイもやってきて、とうとう扉にチャレンジすることになった。3人がかり+機械で無理やったやつだ。それが、なんと2人のタフガイは、機械も使わず普通に運んだ!マジっすか? エレベーターも斜めにして、通過して、曲がりくねった入口もさすがに大変そうだったけど、私も手伝ってなんと家の中に運搬できた。ホントかよ!すごすぎるこのナイスガイは!

f:id:simplearchitect:20190311175256j:plain
屈強なナイスガイ

手際のいいナイスガイ

するとナイスガイは、Vocal Booth の説明書を読みながら、苦労はしながらも着々とめっちゃ重いブースを組み上げていく。重さを知っているだけに、信じられない光景だ。私も筋トレをしているが、なにか根本が違う。引っ越し系のプロ凄い!俺はプログラミング頑張ります。ごめんなさい。という気分になりながらも、何回も挫折して絶対無理だと思っていたものが目の前で組みあがる光景は感動的だった。しかも、アメリカではあるあるなのだが、Vocal Booth の組み立ての説明書が、間違っている。私は Silver を買ったのに、Gold の説明になっている。これはわかるはずないわ。でも、ナイスガイは、そんなことはものともせず、たぶんこうだと文句ひとつ言わず、組み上げていく。そして完成。

f:id:simplearchitect:20190311175447j:plain
完成!

さらなる不可能を現実に

最後の大仕事は、コンテナだ。中身を抜いたものだが、めっちゃ重いし、そもそも、これ、どうするの?どこに捨てるの?という感じだ。先のどのBrent が去る前に相談したら。コンテナは2つにおって捨てるといいよと言われた。彼も経験があるらしい。アメリカどんな国やねん、、、

しかし、このコンテナは各段に硬いし重い。しかしナイスガイたちは、ガンガンにトンカチでたたいたり、上に乗ったりして、コンテナをぶっ潰してゴミ箱にぶち込んだ。あんたら凄すぎやろ、、、ナイスガイと感激の握手をして、のこりの日本人の友人と家に帰って、出来立ての Vocal Booth を試してみることにした。

人生で最も良い買い物

私は音楽をやっていて、長年いろんなものを買ってきた。少しでもうまくなりたくて、いい音がだしたくて、いろいろ買ってきた。しかし、この目の前にあるVocal Booth は人生で買ったものの中で最も素晴らしいものと断言できるものだった。ミュージシャンにとって、一番のストレスは、「音を出せないこと」で、歌にしても、家だと近所迷惑なので思いっきり歌えないし、ギターのアンプも小さくしないといけない。そうなるといろいろ違うので、実際にやるときとは違うし、歌も大きな声で歌わないと、うまく練習にならない。それが、なんの気兼ねもなく全力で歌って、ギターも相当デカい音で鳴らしてもTVぐらいだし、あれだけ昔苦情をいわれたアコースティックギターもTVよりもちっさいぐらいの音になる。ヴォーカルに至ってはシャウトしてもめっちゃ小さいおとしかしない。もう最高、最高だ。自分の家に音を出せるスタジオがあるのがこんなに素晴らしいことと思わなかった。人生で一番いい買い物だ。マジで。めちゃくちゃいろいろあったけど、あきらめなくて本当によかった。いや、私はあきらめてたんだけど、他の人が背中を押してくれた。

f:id:simplearchitect:20190311175529j:plain
思いっきり歌えるし、弾ける!

最大級の違い

今回はめっちゃくちゃ苦労したので、思い入れがありすぎて、長くなってしまったが、今回の一連の事件で最も衝撃だったことは、こんなタフなことを起こっても、Facebookの上の人を含めて誰一人「おまえアホやなー」「無理やろ」「諦めさない」とか言わなかった。全員が「絶対にできるよ」とか、「これ、めっちゃいいやつだよね!」「つよしが、ヴォーカルブースでエンジョイできることを楽しみにしてるよ」とか、どんな立場の人でも言ってきた。こんな環境で生きているからかもしれないけど、相当困難なチャレンジもきっと彼らにとっては普通で、それより、その先にまっている楽しいことを考えているし、失敗したらどうしようとか誰も考えていない。自分は日本人の中では相当チャレンジな人やと思ってたけど、やっぱ日本人なんだなとおもった。やっぱ失敗が怖いんだ。失敗を避けたいんだなぁと。こういう話を後で友人のDavidにして、日本人は失敗さけたいから、先に予見しようとして、時間がかかるんやと思ったわ。みたいな話をしたら、「そういう場面やと、自分はメジャーで測りもしないわ。やってみたらわかるやん」と返してきた。タフすぎるw つまり、私だけかもしれないが、自分のような日本人はそういうのが体に染みついているから、出来るほうに倒してしまうのだけど、こっちの人は、失敗するかもしれない難しいことにサクッとチャレンジして、それが普通で、周りの人もそれを歓迎してくれるんだ。だから、自分は、自分にそういうのが染みついていることを意識して、難易度ではなくて、「こういうことを実現したい」ということに対して難しそうに見て得てもチャレンジするようにするように選択を倒すのが必要と思った。

ソフトウェアもチャレンジング

そういえば、ソフトウェアでも、こちらの事例はチャレンジングなのが多い。昔マイクロサービスのハックをこちらでやったときも、出たばかりの製品を本番どころか、普段クラウドで使うところをオンプレで使ったりしていた。どんだけチャレンジャーやねん。と当時は思っていたが、そういう無理目なことをするから、失敗も多分あるけど、技術力が上がるし、うまくいったときの成果も自分にとってのVocal Booth のように、感動的なものになるのかもしれない。そういえば、Davidもスノーボードのコースも日本だったらそもそも入れないような区域に余裕で滑りに行っていた。つまり、結局のところ、困難なチャレンジをしないと本当にインパクトがある結果など出せない。それができている国民性がアメリカというところなのかと思った。確かにGitとかでも酷い目にあったときに新しいコマンドを覚えて使えるようになよな。上記のようにすべてが素晴らしいわけではないが、プロフェッショナルとしての腕を磨くには最高の環境かもしれない。

では日本ではどうしたらいいだろう?

この学びを日本で生かすにはどうしたらいいだろう?少なくともソフトウェアにおいては自分には、相当な「失敗への恐怖」と、「チャレンジの回避」の傾向があることを自覚するだけでも、かなりいろんな効果があるかもしれない。そういう視点で、他国の人を観察してみよう。日本にいても例えば、GitHubとかのプルリクエストでどんな会話をしているか?とか、観察するチャンスはいろいろある。そういえば、そういう方面でも、失敗を恐れて何かしないとかほぼ見たことないことに気が付く。だから、自分が思ってるよりもかなり困難なことをを実施しても出来てしまうかもしれない。自分が無理でも、私の出会ったAmazingなマッチョなナイスガイが手伝ってくれたら自分が想像だにしていなかったことを実現できるかもしれない。どうするかは人それぞれやけど、自分は、プログラミングの方でも「Vocal Booth」のような人生に何回もであえないような感動的な体験をしてみたいと思う。

ググるのをやめるとプログラムの生産性が上がるかもしれない

今日はプログラミングの生産性に対して気づきがあったのでシェアしてみたい。

f:id:simplearchitect:20180917205414j:plain

なぜ米国の人は生産性が高いのだろう

プログラミングの生産性に関しては以前から興味がありいくつかのポストで考えたことをシェアしてきた。私は職業柄、いろんな国でいろんな人々とプログラミングを一緒にする機会が多い。その時に頻繁に感じるのは、平均的に言うと、アメリカの人プログラマが生産性が高い確率が高くて、しかもコードもきれいだという傾向にある。アメリカでお客さんと一緒にコードを書くと、お客さん自体が物凄く良く知っているし、実行力もある。アメリカの次と言うことでいうと、英語がネイティブの国もそれに近く、フランスなどの言語が近いところが続く感じなので、英語が物凄く影響すると思っていたし、実際すると思う。そのあたりの話はこちらのポストに書いてみた。

simplearchitect.hatenablog.com

定義での理解と、例での理解

アメリカのエンジニアと自分や、日本のエンジニアを比較すると、「理解」のロジックの傾向があるように感じる。日本の多くのエンジニアの場合は、「例」で理解するのを好むように感じる。「定義」をみても、今いいち理解しにくくて、例を見て理解する傾向が強いように感じる。一方、アメリカのエンジニアや、いけてるエンジニアは、「定義」で理解する傾向があるように感じる。定義の短い文章だけを見て、それがどういうものかをさっと理解できてしまう。

f:id:simplearchitect:20180917215649j:plain

一方、「例」先行の人の場合、もちろん私もだが、最初に、定義を見るより、先にググって、ブログやコードサンプルを見つけて、どうやったらできるかを見つけて、その後で定義を見て理解するといったステップになっている。ひどい時は、サンプルをコピーして動けばOKで、なぜそのコードが動いているのかも理解していない人もいる。短い定義だけをさっと見て理解してコードをかける同僚や、師匠を見て凄いなぁ、、、といつも思っていた。やっぱこれは、言語と文化による違いだろうか? 理解を重視するのと、動くことを重視する姿勢とも言える。

シンガポールでの出来事

f:id:simplearchitect:20180917215404j:plain

この仮説を覆す出来事が先日シンガポールに行った時に発生した。シンガポールの人はビジネスは全部英語なので英語が大変堪能だ。自分の仮説上は、英語が堪能なので、アメリカに近いつまり、定義と理解を重視する人々と思ってハックをすると全く違った。彼らは私たちと全く同じく、例を重視して、理解よりも動くことを重視していた。インドの人も混じっていたが、インドの人は、定義重視と理解重視の感じだった。この「定義での理解」と「例」での理解は、言語に大きく影響しているのかと思いきやもしかすると違うのかもしれない。もちろん、コンピュータサイエンスの場合英語がリーディングやネーミングやメタファで圧倒的に有利なのは間違いないが、この部分に関しては違ったらしい。

アメリカのインターンとのペアプログラミング

そういえば、シンガポールに行く前は、アメリカでハックをしてきた。そこで、Javascript のコードを書く必要があったのだが、最近触ってなくてすっかり忘れていることともあり、堪能な人に助けを求めた。すると、コーディネーターが Javascript できるインターンのハンサムガイを連れてきてくれた。

f:id:simplearchitect:20180917215434j:plain

一緒にペアプログラミングをしたのだが、一つ衝撃的だったことに、彼はほぼググらなかった。見るとしても、リファレンスか、公式のサイトのみ。それでも、定義だけを読んで、「このメソッドがこのように使えるはずだ」とか言って、さっとプログラムを一緒に作ってくれた。インターンのせいか、彼のコードは綺麗ではなかったが、彼は十分に挙動を理解して、全然サンプルを見ないままコードを一緒に書き上げてくれた。ある一瞬彼が、「どうしたらいいんだろう?」と悩んで、リファレンスなどを見ながら悩んでいたので、私が、自分のブラウザでその時困っている現象をグーグルに打ち込んで検索してブログを見つけて、一瞬で解決した。なぜ彼にそうしなかったのかは聞かなかったけど、彼はそもそもそういうことをするという素ぶりも見せなかった。そういえば他の同僚もあまりググらないし、見ても公式ドキュメントで次にコードという感じだ。

全ては習慣ではないだろうか?

Extreme Programming で著名な Kent Beck は、「私は偉大なプログラマではなく、偉大な習慣を身につけたプログラマ」だ。と語った。つまり習慣は誰でも身につけられる。もしかすると、「定義」vs 「例」、「理解」vs 「動くこと」の違いは習慣で埋められるのかもと思うようになってきた。つまり、英語云々ではなく、彼らは幼少の頃から、「定義」で理解し、「理解」する方法を習ったか、練習してきたから、自然とそうなっているのでは?という仮説で、そうであるならば、「定義」だけを見てゴリゴリにコードをかけるようになるのではないだろうか?という仮説だ。だったら実際に自分で試してみよう。

仮説の検証

仮説に基づいて、次のことを気をつけてコードを書いて見た。自分がまだそんなに慣れていない Go 言語で実行して見た。

  • 可能ならリファレンスのみを見てコードを書く
  • 公式ドキュメントは見ても良い
  • サンプル / ブログの類は見ない
  • 速く完成させようと思わない

この単純な3つの条件をつけて、自分が今までコーディングしたことのないトピックを Go で実装して見ることにした。

実践した気づき

実際にコードを書いて見ると、色々気づきがあった。最初は、例を全く見ないでコードを書くのに不安があった。「早く作る」ことだけを考えると、自分のやりたいことで検索して、ブログを読んで書いてあることを真似するのが一番速い。ただし、この作戦は、その1回限りに於いては確かに速いのだが、本人がちゃんと理解できているか?はとても怪しいものがある。つまりどうなるか?というと、普段の私だと、何かが出てくるたびに、前にやっていても忘れているので、またググって、同じページを見て、同じコードを真似て、実装するという感じだ。確かにコードは出来るのだが、結局速くないし、理解も浅い。

今回の作戦をやって見ると、確かに初回の時間はかかるのだが、定義だけを見て、コードを書こうとすると、深く理解しないと書けないので、しっかりと定義を読むようになるし、コードサンプルがないので、自分の頭で考えてアルゴリズムを毎回考える必要があるので、コピペ作戦がこれまた使えないので、アルゴリズムを書くときに使われるイディオムも深く理解しないと結局遅くなってしまう。すると、2回目似たようなロジックが出てきたときには高速にコーディングが終わったし、サンプルの無いようなコードでもリファレンスだけを見てさっとコードが書けるようになってきた。しかもたった1日で。出来るか不安だったが、やろうとしたら出来るやん!

おおおお!これこそわしの求めていたものや!

実践のポイント

ただし、一つポイントがあって、先ほどの条件にもあった「速く完成させようとしない」というのがものすごいポイントで、他者からも、自分からも、速く終わらせようと思うと、どうしても「ブログ検索」の甘い汁を吸ってしまいそうになる。しかも、「速く終わらせよう」と思ってなかなか終わらないととってもイライラするのだ。つまり楽しく無くなる。「速さ」は、後から付いてくるから心配しなくてもいい。それよりも「理解できていない」ことを恐れたほうが、絶対的に安全だし、スピードも結局上がることに気づいた。

 後、「ヤクの毛刈り」ともいうけど、あるコードを調べているときに、その中でわからないことが出てきて、またそれを調べて、、、起こった時にはどうするか?それも焦らず理解するようにした。作戦としては、調べ物をするときに、ブログを同時に書いて、調べた内容や、自分で作り上げたコードを書いていく。その過程でわからないところが出てきたら、理解してブログに書くようにして見た。これは、先日紹介した、自分の動作を先に書き出してから実践するの応用作戦だ。急ぐのをやめると、コードを書いている過程できになる「ああなったらどうやって書くんだろう?」みたいなものもみんな調べて試すようになってきて、深さも出るようになってきた。

simplearchitect.hatenablog.com

書いていてどうしても解法がわからない時とか、書けるけど多分なんかいい API ありそうみたいな時もある。そういう時は、まず自分の解法で書いてみて、その後、ググってみて、あーこんな API あるんだとわかったら一瞬でブログや、サンプルを閉じて、リファレンスのページを見るようにすると良さげです。

まとめ

サンプルコードを求めて、ググってブログや、Stack Overflow のサンプルに頼るのをやめると、理解が高まり、高速にコードが書けるようになってきたと思う。そういえば日本人の技術イケメンや師匠もあまりやたらとググってなかった気がする。この方法を継続してやってみて、どうなるか実験して行きたい。実際にやっていると、初めのうちは高速なのかわからないけど、確実にわかるのは、完璧に自分でコントロールできている感を持てているということだ。これは自分にとっては大きい。

ちなみにこちらのブログは、初めて、リファレンスのみを見て技術調査をしながら書いたブログだ。単純なものだが、今後もっと複雑になっても、この姿勢をキープしながら継続してみたい。

qiita.com

最近気づいてきた、「日本人」のいいところは、我々は真面目ということだ。平均のレベルは圧倒的に米国に負けているが、トップレベルの日本人プログラマは向こうに行って十分通用するどころか、向こうに行ってもすば抜けていると思う。彼らは、言語やら習慣やらでコンピュータサイエンスは強いけど、私たちほど頑張ったりしない。だから、積み重ねていけば私たちでも世界で十分に活躍出来る素養は十分にあると思うのだ。