Parsable Inc. という会社で、ざっくり言うと工業系のフロントライナーのお客さんたちの手順書やチェックリストをデジタル化するSaaSを作っています。ユーザーが入力した項目の内容や時間からボトルネックを探して手順を改善したりするための機能もあって、単なる電子化というよりかは全体最適化を目指すプラットフォームという感じです。
技術的には、GUIでポチポチしながら柔軟に手順書やチェックリストのテンプレートを作れる機能とパフォーマンス計測ができる機能を持ったダッシュボードがあるという感じで、かなり歯応えのある複雑なフロントエンドです。
本社はアメリカのサンフランシスコのダウンタウンのど真ん中にありますが、僕は2020年3月にカナダのバンクーバーオフィスでシニアフロントエンドエンジニアとして採用されました。
採用されてからすぐにCOVID-19の影響でオフィスがシャットダウンされ、それ以来ずっとリモートで働いています。同僚とイベントで何度か顔を合わせてますが、主にオンラインでのやりとりがメインです。
「USの会社で働く」ということでまず頭に浮かぶのは英語だと思います。結論から言うと、僕の英語力は徐々に伸びてはいるもののまだ充分に流暢ではないという感じです。シニアポジションの特性上、コミュニケーションの仕事の比重がめちゃくちゃ増えます。ミーティングの中で会話をリードする機会や気の利いたコメント(というより説明)を求められる場面が多くなります。
最初の頃は「こういうことを聞かれるだろうな」というのをミーティングの中で想定しておいて、テキストエディタに英語で書き出しておいて話すというのを試していました。元々英語でのライティングが得意だったので使っていたハックという感じです。最近ではそういう下準備なしに複雑な会話もできるようになってきました。
第二言語話者の間では通説のようなものですが、英語で話すと日本語で話している時よりも思考のパフォーマンスが下がります。その結果、口から出てくる言葉も稚拙になり、話している相手からは頭が悪いように見えます。これは人間が思考に言語野を用いていて、持っている言語の単語や表現力に思考範囲が制限されるためだと言われています。そのため、英語を使っていると「日本語だったらもっとうまく説明できるのに」みたいなシチュエーションが発生します。
僕は英語を勉強している中でこの話を知りましたが、実際に働いてみてその存在を確かに実感しました。この本当の意味はおそらく日本語 (ネイティブ言語) で働いているうちは一生気付くことができなかったです。それまでの自分の思考のパフォーマンスが自分にとって当たり前すぎて「いざ奪われるとこうなるのか」という稀有な体験でした。
上でも話した通り僕の英語のスキルはまだまだ下の下なので、前もってドキュメントを作ってミーティングに臨むなどしてオーラルコミュニケーションのコストを減らしたり、そのドキュメントの中でも図をたくさん使うなどして補っています。これはこれで仕事全般として良いプラクティスだとは思いますが、いずれはこういうことをしなくてもいいようにあえて徐々にギプスを外していこうと思っています。
少し恥ずかしいですが、ざっくり周りの評価を書いておこうと思います。「実際どれくらいのレベルの人がこういうこと言ってるのか」という参考になれば...。
ただ、日によってめちゃくちゃ英語が上手な日とものすごく下手な日があります。おそらく身体的なパフォーマンスと同じように、頭脳やメンタルのパフォーマンスによって変動があるんだと思います。また、休みの日に日本語のYouTubeを一日中見ていた次の日の月曜日なども英語がすごく下手になったりします。
北米の会社だと経験やスキルによってレベルが何段階かに分かれているのが普通です。定義や基準は会社によってまちまちですが、大まかに次のような感じです。
上でも書いていますが、シニアポジションになるとコミュニケーション的な仕事の割合が増えてきます。今のところコードを書く6:コミュニケーション4といったバランス感です。会社に長くいればいるほど中心人物になっていくので、いずれコミュニケーションタスクが半分を超える日が来ると思います。
他者からの評価は「技術に明るい」「綺麗なコードを書く」という感じなので (自分の認知している中では...ですが) 、自分の立ち回りもその期待に寄せているところがあります。具体的には、会社の中の文化的な話題よりも、技術的な議論に積極的に参加しています。自分の得意分野の仕事が増えていくように印象付けしている形です。先日 (2021年3月) いくつかある年間賞のうちの1つを獲得したので、今のところまあまあうまくいっているのかなと思います。
会社で使っているのはいたって普通の技術スタックです。対外的に話せる範囲 (面接で候補者に話している範囲) だと、
といった感じです。
よく聞かれますが、どうなんでしょう...。ただ、以下のことは共通して言えると思います。
エンジニア採用にも絡んでいます。この箇所を書いている時点 (2021/03/19) まででだいたい20人くらいの候補者と面接したと思います。
また、通年とはいきませんが弊社は色々なエンジニア職種で積極的に採用しています。基本的に即戦力になるようなレベルの方を探していますが、実力があれば経験年数は問いません。ただ、経験が少なすぎるとテクニカルリクルーターの目に止まらない可能性もあるので、興味のある人はTwitterから連絡してもらえるとそういう運要素なしに紹介できます。
Q. 記事内に「君の英語はとてもじゃないがパーフェクトとは言えない、研鑽して欲しい」と言われたとありますが、"英語"でどのように言われたのか教えて頂くことは可能でしょうか?
A. 1-on-1 ミーティングの中で口頭で言われたことなので正確にどんな表現で言われたかは覚えていません...。が、Your English has room to improve to some extent. I think you are doing hard work on your own practice but please keep it going. (君の英語はまだ完璧じゃないから、めっちゃ向上させようと頑張ってると思うけどそれを続けて欲しい) みたいなニュアンスだったと思います...。
Q. マイクロフロントエンドを採用しているとあるのですが、グローバルステイトの共有が困難になると思うのですが、そこまでして得られるメリットはなんなのでしょうか?
A. 一つ目のメリットは小さな単位でテストとデプロイができるようになることです。 あるシングルページアプリケーションのコードが数十万行以上あるのですが (正確な行数は把握できていません。もしかしたら100万行以上あるかもしれません) 、機能の一箇所を変更しただけでも (理論的には) この巨大なコード全体のリグレッションを覚悟しなければなりません。細かい単位に分割されて小さくテスト、デプロイできるようになっていれば今より頻繁にユーザーに新しい機能や修正を届けることができるようになります。
二つ目のメリットは仕事の分割をしやすくなることです。「コンウェイの法則」の一言で言い換えられるかもしれません。アプリケーションが細かいピースに分割されているということは、それらの結合性が弱いということです。マイクロフロントエンド間はある一定のルールに従って互いに疎通していて、このルールに沿っている限りは自由に中身を変更できます (疎な結合性の確保) 。この構造になっていると、この細かいピースごとにタスクとチームを綺麗に分割できます。2つ以上の関心事をまたぐ変更であっても、無理なくチームごとに異なるロードマップで非同期的に進めていきやすくなります。
Q. キャリアのフリーランスですが、これはカナダに渡った後でしょうか、その場合、ビザの区分を教えて頂けないでしょうか🙇♂️
個人ブログを見る限り、ビジタービザでの就労の方もいるようですが、カナダの労働市場に影響を与えない場合でも不可、と労働局から回答を貰ったため、どのビザか参考にしたいです
A. カナダに渡った後で、学生ビザの期間でした。ちなみに顧客は日本の会社で、自分は日本の個人事業主としてです。一応学生ビザに週20時間までの労働許可がついてたのでケアしてた形にはなりますが、短期間のビジタービザでも日本の仕事をする分には問題ない認識です。自分が日本の個人事業主としてでないといけないので、たとえ海外のクライアントでも契約や報酬の振り込みに際して日本のルールに則ってもらう必要があると思います。なんにせよ、プロに頼んで上手に問い合わせてもらうのがいいと思います。聞き方によって (もしかしたら担当者によっても) 回答が違うことがあります。
Q. こんにちは。Asaiさんには《某プログラミングスクール (以前講師サイドでお手伝いしていました) 》 のJavaScript講座でお世話になった者です。その節はありがとうございました!私は今、海外でフリーのデザイナーをしております。
Asaiさんには就職以外にもフリーランスかまたは起業など他にも選択肢があったのではないかと推測しましたが、就職という選択をしたのは何故ですか?
A. フリーランスだと北米の風土や流儀を100%余すところなく経験できないと思ったからです。 雇用形態はあまり気にしていないのですが、「チームの一員である」ことは僕にとってマストです。なぜなら「外部リソース」のように扱われてしまうとアクセスできる情報に制限があることがありますし、会社の文化を感じられるような重要なチャンスに顔を出せないことになります。たとえば僕は今の会社で面接官として採用にも携わっていますが、フリーランスという形でも同じことができるかどうかは疑問です。
また、僕は起業は個人ではできないことをするための手段だと捉えています。具体的には出資を受けたり、他の大きな会社との契約をしたり、あとは節税でしょうか。僕が自分でビジネスを始めて必要性があれば起業というアクションはもちろん選択肢になります。あるいは、フリーランスとして働いていて利益が膨らんできたら、ということもあるかもしれません。 何にせよそういった「起業する理由」が前に来るべきだと思っていて、今はまだそのタイミングではなかったというだけです。





