アメリカに来てから買った調理器具

サンフランシスコ・ベイエリア日本食レストランもたくさんあり、比較的食に恵まれてはいるけれど、やはり普段の食事の基本は自炊になる。自炊関連の器具について書いてみることにする。食材については サンフランシスコで和食を自炊してサバイブする - ベイエリアで楽しくやっていく を参考のこと。

スライサー

今の家に引っ越して以来、近くで豚の薄切り肉が買えなくなってしまった。仕方ないのでPork Shoulder をwhole foodsで買っては自分たちでスライスしている。買ってきた肉を一旦凍らせたあと、数時間常温で半分解凍させると切りやすい。

炊飯器

我が家で使ってるのはこれ。日本語のブログをいろいろ見て評判いいのを買った気がする。普通に美味しいと思うが、日本にいたときに高い炊飯器を使ってたことがないので正直よくわからない

IH調理器

家で鍋するときにあると便利

二食鍋

外食で二食鍋を食べたときにこれめっちゃ便利やんと思ってAmazonで探して買った。我が家ではたまにキムチ鍋と水炊きの二食で作ったりする。 レビューあまり良くないが我が家に届いたやつは特に問題もなく使えている

ホームベーカリー

日本で言うところの食パンがアメリカにはあまり売ってないのだけど、ホームベーカリーを使うと(材料さえそろえておけば)簡単に作ることができる。あとはうどんも作れるのだけどこちらはまだ修行中

Intrahepatic cholestasis of pregnancy について

妊娠に際して学んだことを書き記して行くシリーズ。

妻が妊娠35週くらいからかゆみを覚えるようになった。軽い気持ちで産婦人科に相談したところ、Intrahepatic cholestasis of pregnancy (ICP)*1という病気の可能性があるので念の為検査をしたほうがいいと言われ血液検査をすることになった。

いくつか参考文献*2を送ってもらって勉強したのでメモしておく(当然ながら、正確な情報が必要な場合は医師と相談することをおすすめする)

  • 妊娠により肝臓に負荷がかかることで引き起こされる
  • 母体には危険が無いが、最悪の場合胎児の命に危険があることがある
  • 仮に母がICPを患っていても、35週まではほとんど胎児に危険はない
  • 逆に36週を過ぎている場合は帝王切開による早期出産をDrが勧めることがある
  • 血液中のbile acid(胆汁酸)を測定することで診察するが、bile acidの上昇が見られない場合でも、かゆみなど医師の判断によって帝王切開をすすめられることがある
  • 妊婦が(特に妊娠後期に)体ががゆくなることは極めて一般的に見られるため、かゆい = ICPというわけではない

我が家の場合は一度目の血液検査ではICPであるという結果は見られなかったが、医師の判断で念の為もう一度血液検査をしている状況。

*1:日本語では「妊娠性胆汁うっ滞」というらしい

*2:いろいろ送ってもらったけど、オンラインで読めるものはこれ https://www.uptodate.com/contents/intrahepatic-cholestasis-of-pregnancyなど

Cord blood bank - さい帯血の保存について

来月に第一子が生まれる予定の我が家。妊娠6ヶ月ごろに、産婦人科医からCord blood (さい帯血)の保存について考えておくように言われた。さい帯血(臍帯血)とは出生直後のへその緒から取れるstem cell(幹細胞)を含む血のこと。stem cellは様々な細胞に分化できる特別な性質を有しており、胎児のうちにstem cellを採取しておくことで、将来本人や兄弟が病気になったときの治療に利用することができるとのこと。産婦人科医としてはとくに推奨も禁止もしておらず、本人の意志でどうするか決めるべし、とのことだった。

さい帯血の保存には大きく二通りがあり、無料で公共機関に寄付するか (public cord blood banking), 専門の期間に有償で預ける (private cord blood banking)というのがある。private bankingの相場としては20年間の保存でだいたい5000ドル、一年あたり$100-150といったところのようだ。

これは2009年の古い記事だが、460,000の保存された血液について、99件しか利用されていないことなどから、private cord blood bankingはnot cost-effectiveと論じている www.ucsf.edu

こちらは2017年のレポート。同じくprivate cord blood bankingの有効性に疑問を呈しつつ、Public cord blood bankingを勧めている pediatrics.aappublications.org

private cord bloodの支持意見としては、これからさらに有効活用する方法が見つかるかもしれない、というものもあるようだが、、あまり費用対効果の高くない保険のように感じたため、我が家では保存しない予定。せっかくなのでpublic bankに寄付することを検討してみたが、自分たちが出産予定の病院では寄付を受け付けていないようだった。*1

*1:http://parentsguidecordblood.org/en/donationspot から寄付を受け付けている場所を検索できる。サンフランシスコではKaiserのみの模様

子供をバイリンガル環境で育てるべきかについて

アメリカ在住の日本語話者の人々と、子供のバイリンガル教育についての話をすることがある。観測範囲では、日英バイリンガルのプレスクールに通ったり、週一度の日本語補習校に通ったりと、子供をバイリンガルにするために苦労している親子が多いような気がする。

一方で、たまに聞く言説として「言語習得前に複数の言語を聞かせると脳が混乱してどちらの言語もマスターできない」というものがある。日本語でぐぐるといろんなブログなどが引っかかるものの、具体的な研究や統計などに言及したものは見当たらなかった。

さらにいろいろ調べてたところ、2006年にジョージア大の人が出した Raising Bilingual Children: Common Parental Concerns and Current Research という論文(といっても2ページのサマリ)がよく引用されているようだった。同じような疑問を持った人のために以下に要点をまとめておく。

  • 複数言語を話すことが言語能力習得の遅れにつながるという研究的証拠は無い
  • 会話の中で複数の言語を混ぜて話すことは、混乱しているわけではなく、言語能力が習得できていることの証である
  • 第二言語の習得手段としてTVなどの受動的メディアは活用できるが、周りの人間が話しかけてあげるほうが効果的。例えば、"perceptual narrowing"といって普段聞かない音を認識する能力が弱っていくことが、TVなどを活用した場合におこりやすい
  • 複数言語を学ぶことが"bigger, better, brain"になるというナイーブな思い込みは誤り。言語をメタ的に捉えられるようになるなど、限定的なメリットは有る

サンフランシスコのスタートアップで面接官をしている

絶賛人員拡大中のスタートアップに転職して以降、コーディング面接の面接官をするようになった*1

弊社はいろんな方面で人員を拡大中のため、面接対象の職種も多岐にわたっている。具体的には、入社からの数ヶ月の間で以下の5つの職種の候補者を面接した。

  • Fullstack engineer (自分の職種)
  • Infrastructure engineer
  • Data scientist
  • Technical product manager
  • Sales engineer

基本的に自分に期待されているのはエンジニアリング(主にコーディング)の技能のチェックなので、職種にかかわらず似たようなコーディング面接を行い*2、職種に応じて評価を調節することが多い。

コーディング面接に際しては、うちの会社ではcoderpadを利用して、実際に動くコードを書く面接を行っている。自分の(インタビューされる側としての)数少ない過去の経験だと、大企業のほうがホワイトボードにコーディングさせる傾向が多く、スタートアップは実際にコードを書いて実行させることが多い気がする。大企業は基本的な理論や理解を問うのに対し、スタートアップは実際に職務を完了させることができるかを見たがっているということかな、と思っている。

もちろん、弊社でも場合によってはアーキテクチャの議論にフォーカスしてホワイトボードのみで面接することもあるし、場合によってはずっと喋っているだけという場合もある。自分は今のところはコーディングを中心とすることが多い*3

コーディング面接の問題としては、LeetCodeなどから見つけてきた問題のストックの中から、応募者の経験に応じて出題している。なかなか手頃な問題のリストを集めるのに未だに苦労しているのだけど、一応自分が意図しているのは以下

  • トライ木など、発展的なデータ構造の知識の有無に依存するような問題は避ける
  • 複数の解法があるとなお良し
  • 30分くらいで実装が終わる
  • 現実の問題になるべく近いとなお良し(例えば、自分でLinkedListを実装する、みたいなのは避けるようにしている)
  • 自分でも出題する問題を一度は解いておく

自分が面接を受ける側だったときに、インタビューの内容によってやはり会社に対する印象が変わっていったので、なるべく候補者に面白いと思ってもらえるような問題を出題しようとしているが、正直まだまだ模索中である。

面接のフォーマットとしては、最初に5-10分くらいアイスブレイク的な会話(雑談と、過去の経歴、転職してやりたいことなど)をしたあと、コーディング面接を行い、最後に5分ほど応募者からの質問に答える時間をとるようにしている。

コーディング面接に際しては、

  • 応募者がうまく自分の考えをコミュニケーションできるか
  • 実際に解法のアイディアにたどり着くことができるか
  • コーディングの早さやアプローチ(例えばこまめにテストをして問題がないか確かめ、簡潔なコードを書けるような人は印象が良い)
  • 例外的なケースにちゃんと気づくことができるか(ちゃんと説明してくれれば実際にそれに対応する必要はない)

あたりを見ている気がする。

逆に自分がどうでも良いと思っているのは

  • 必要以上に細かい例外処理: 時間がもったいないので、例外ケースを認識しているということだけ伝えた上で無視してくれるのが一番ありがたい
  • 計算量の議論: 別にしてもいいんだけど、間違った計算量見積もりを言われると藪蛇になってしまうので、聞かれないなら言及しないのが無難だと思う

候補者がすぐに一問目を解いてしまった場合は、簡単な問題をもう一問出題することもあるけど、大抵の場合は一つの問題でインタビュー時間のほとんどを使う。逆に候補者が手こずって時間がかかっている場合は、ヒントを出して、時間内に一応解法まではたどり着けるようにしている。中途半端なところで終わってしまうと候補者としても後味が悪いと思うので。

まだ累計でも十数回インタビューしたくらいなので、まだまだ実際に面接しながらこちらも学習してるような段階だけど、流石に最初の頃と比べると少し慣れてきたような気がする。今年ももっと面接をしないといけない予定なので、引き続き頑張っていきたい。

おまけ: 面接を受ける場合の話

自分はこちらもたいして経験がないけど、たまにアドバイスを求められることがあるのでついでに書いておく。

参考書としては世界で闘うプログラミング力を鍛える本 コーディング面接189問とその解法がおすすめ。著者は元Googleのエンジニアで、記載されている例題も妥当っぽい感じがする。ただしこれは問題集的なので、これを一読しただけでわからないことがあるようなら別途お勉強する必要があるかもしれない。コンピュータサイエンスの全般的なことが一通り網羅されている。

実際の面接では補完の効かないオンラインエディタを使ってコーディングしながら、英語でコミュニケーションを取らないといけないので、それも練習しておくと良さそう。プログラミング中のボキャブラリなんてたかが知れてるので、慣れれば日常会話ほどは辛くない。interviewing.ioというWebサイトで無料でコーディング面接の練習をすることができる。

プログラミングの問題を解くだけならLeetCodeというサイトも有名っぽい。たまにPKU Online Judgeなどで練習してる人も見かけるが、プロコンで求められる能力とコーディング面接で求められる能力は必ずしもイコールじゃない(プロコンのほうがより数学・パズル的)ことには注意したほうがいいかも。

あとはシニアになるほど抽象的な話とか過去の経験の話とかが増えてくる(過去にした設計上の誤りの話とか、チームでどうやってタスクの優先付していくか、など)ような気がするけど、そういうのは対策が難しそう。普段からそういうことを考えるようにしてるといいんだろうか。

*1:前職では3年も在職していたのにインタビュー講習を結局受けないままだったため、一度も面接官にならなかった

*2:実際には事前に他の面接官と相談して、誰がどういった側面をインタビューするか決めている。例えばインフラエンジニアの採用なら、ひとりがコーディング全般のインタビューをして、もうひとりがインフラを実際にセットアップする実技試験、もうひとりが過去の経験やインフラの知識全般を聞くといった具合

*3:これは恥ずかしながら自分の英語でのコミュニケーション能力の欠如によるところもあると思う…違ったフォーマットにもだんだん挑戦していきたい次第

アメリカでA-Listを使ってスタートアップに転職した

サンフランシスコで大企業からスタートアップに転職した にも書いたけれど、スタートアップに転職したい、という気持ちがあって、実際に転職したので、その経験をまとめておきたい。実際に転職活動していたのは2017年8月だけど、書くのが遅くなってしまった。

応募まで

@hmskさんのツイートで知った A-List という求人サイトを主に利用した。A-Listは「top engineers&designersがtop tech companiesと出会える」というのを標榜している求人サイト*1で、AngelListによって運営されている。

A-List上でレジュメを提出して書類選考を通過すると、参加企業のうち自分のプロフィールに興味のある企業からメッセージが届く。自分の場合はレジュメを出してから数日のうちにapproveされて、その後A-Listの面接官を相手に45分くらいのコーディング面接をして*2、その後一週間くらいの間に30件くらいの企業からメッセージが届いた。

ところで、自分はA-Listを使うにあたって、超初期(一人目のエンジニア、シード調達したばかり、とかそういう)のスタートアップをなんとなく想像していたのだけど、実際に連絡が来た会社はシリーズA以降の会社が多い印象だった。転職サイトにお金払って人を増やすようになるにはある程度資金や成長の見込みが無いといけないので、まあ考えてみたら当然である。自分はプロフィールに小さい会社が良いと明記していたけど、AsanaやLeap Motion, Postmateなどの、すでにだいぶ成長しているスタートアップからも連絡が来た。

面接まで

実際に転職活動を初めていろんな会社から連絡をもらうことで、 自分にとっての重要な点が明確化されていったように思う。

  • 初期のスタートアップ(自分が一桁人目のエンジニアになれること)
  • 広告収入ではなく、プロダクト自体にマネタイズ要素があること *3
  • 成長中の組織であること*4
  • 自分がある程度興味を持てる分野であること

などを基準として、自分が興味がありそうな会社からの連絡に返答し、面接の日程を調整していった。

なお、この時点では待遇や細かい職務内容は気にせず返事をしていた。

自分が見ていたサイズの会社だと、founder自身*5が直接連絡をくれるケースが多くて、やり取りをしている時点で会社の雰囲気など想像出来たのでよかった。

電話面接

連絡をくれた会社のうち興味がありそうな会社5つほどに返事をし、電話面接をした。面接の内容としては、コーディングが全体の90%をしめるようなものもあれば、ただCEO/CTOと話すだけというようなものもあった。ここで業務内容と自分のスキルがフィットしてない一社には落とされてしまったので、残る4社のオンサイト面接に進むことに。

オンサイト面接

このときはまだ当時の職場に退職の意志を伝えてなかったので、なんとか時間をやりくりしてオンサイト面接に行った。当時の職場は勤務体系などについてはだいぶ緩かったけど、オンサイト面接に行くとなると一社あたり数時間かかるので、微妙に大変だった記憶がある。

オンサイトの内容も会社によりけりで、4つのインタビューが全てコーディングにフォーカスしたものもあれば、半分くらいの時間を非技術者の人と話すような会社もあった。スタートアップとしてはカルチャーにマッチする人を雇うのは大切だと思うので、カルチャーマッチ的な面接がある会社のほうが自分としては好印象だったけど、自分のスキル的には英語で会話するよりホワイトボードにコーディングするほうがよっぽど気楽なので、ただ会話するだけの面接は大変であった。

また、自分は前職ではずっとAndroid開発を主にやっていたのだけど、転職を機にfullstack engineerとしてWebのバックエンドからフロントエンドまでをやるようなpositionでの面接が多かった。このあたり、前職ではほぼ経験がなかったので、サイドプロジェクトでいろいろやっていたことが役にたった。

面接の結果として、リファレンスを求められたり、こちらからお断りしたり、他の候補者を面接する間待っていてくれと言われたり、さまざまだった。

給与交渉

結局最初に受けた会社が良さそうだなということで、リファレンスチェックを通過したあと、給与などの詳細を相談することに。 僕は最初に新卒で入社したときのオファーにまったく交渉しなかったことをひそかに後悔しており*6、今回はどのようなオファーを貰おうともちゃんと金額を確認し交渉するつもりだった。

一方で、現実的にはスタートアップの給与はGoogleなど大企業と比べて低くなってしまう傾向にある*7。実際に、自分が提示された金額は、前職と比べるとそれなりに下がる金額であった。

一般に、スタートアップでの現金給与は大企業より低く、その分をストックオプションで埋め合わせることになる。このストックオプションがいくらの価値を持つか、というのは諸説あるところだけれど、この記事では、ストックオプションの価値の目安として、前回資金調達時の20%としている。この記事で言及されているような点や、自分の現在の給与など*8を根拠に、期待している金額では無いことを伝え、何度か電話した後、結局希望通りとは行かなかったものの、少しだけストックオプションを増やしてもらうことにした*9

関連記事

転職を考え始めた時期に、同様にアメリカ国内で転職されている二人の記事をたまたま拝見して、勇気づけられた。

ビザについて

自分は一社目の会社でグリーンカードをスポンサーしてもらい、退職前にグリーンカードを取得していたのでビザ面の心配はなかったので幸運であった。 一方で、自分が入社した会社でもH1Bのトランスファーで入ってきてる人がいるので、意外と小さい会社(彼が入社時点ではまだ社員10人くらいだったはず)でもH1Bのスポンサーしてもらえるのだな、という印象。

その他利用したサイト

当初は似たサービスの hired も併用しようと思っており、登録まではしていたのだけど、A-List経由での連絡に返事するだけで手一杯になってしまい結局利用しなかった。

転職活動で自分の興味のある分野がある程度明らかになったため、AngellistTechcrunch経由で興味のありそうな会社を見つけ、いくつか直接連絡してみた。これは正直あまりうまく行かなかった(そもそも返事が来なかった)。原因として推察されるのは、ある時点でTechcrunchなどでいい感じに紹介されていた会社でも、常にactiveに採用しているわけではないといういことだろう。

*1:余談だけど企業側のフィルタリングがどの程度されてるのかは疑問が残る…A-List側に応募企業をフィルタするメリットはあまりないような気がするので

*2:このステップはoptionalであった。もしこれに通過すると、その後受ける企業での一次面接をスキップできる、共通一次面接的な位置づけと書いてあったけど、真偽の程は謎。僕が入社した会社はこのシステムの存在すら知らなかった

*3:これまで関わったサービスは無償のC向けサービスで、ガツンとユーザ獲得してその後マネタイズを考えるタイプの製品ばかりだったので、セールスチームがソフトウェアを売り込むようなビジネス形態に興味があった

*4:ポール・グラハムStartup = Growth といってたし

*5:まあfounderのアカウントを使った人事担当者かもしれないけど

*6:自分が生活する上では必要以上の金額をもらっていたのだけど、エンジニアにとって働きやすい社会の実現のためには個々人が自分の市場価値に見合うだけの給与を要求することが重要だ、という考えになったため

*7:参考: THE $350K GOOGLE SALARY IS HURTING STARTUPS

*8:書いてから思ったけど、自分の給与ではなく自分と同様のレジュメを持つ人の市場的な給与を根拠にすべきだった

*9:とはいえ交渉後の額もたいしたことはない(?)気がするので、結果的に丸め込まれている可能性はある

言わないと伝わらなかった話

転職に際して思ったことをメモしておくシリーズのつづき。

転職を考えはじめた大きな理由のひとつとして、自分のやっているプロジェクトや自分自身に十分な権限やサポートが与えられず、日々の仕事を楽しめていないというのがあった。そんな状態が数ヶ月続き、このまま頑張るよりも新天地を探したほうがやりたいことが実現できるのではと思って転職活動を始めた。

内定が出て初めて上司や同僚に伝えたわけだけど、皆一様にとても驚いていて、曰く、俺は日々の仕事を楽しんでいるように見えたとのこと。 そして自分が転職理由としてあげたいくつかの事項に対して、数日のうちに具体的な解決策を模索してくれたのであった。

もうそのときには行きたいと思える会社から内定をもらっていたし、現職に対するネガティブな感情だけでなく、新天地に対するポジティブな感情からも転職したいと思っていたので結局転職することにしたのだけど、もし同じ状況で数か月前からやり直すことができるのであれば、もう少し違った振る舞い方もできたのかもしれないなあと思った。

自分は結構苦労を抱え込むようなところがあって、1-2ヶ月に一度くらいしか1on1ミーティングの時間をとれなかったマネージャの放置プレーもあって、ただ不満を溜め込む状態になっていた。しかし、結局のところはっきり主張しないと、数十人の部下を見てるような人には問題が認識してもらえないのであって、自分から積極的に伝える努力をするべきであった。また、自分がいざ辞めるという気持ちで問題提起をするとちゃんとマネージャたちも真剣かつ具体的に問題解決に動いてくれる(あるいはそういうふりをしてくれる)のであった。

転職したことについては正しい判断であったと思うけど、せっかく大企業にいる間に、大企業でうまいこと自分の望む変化を起こすための方法を見に付けておくのも良かったかもな、と思わないでもない。

転職先では週1で上司にあたるエンジニアとミーティングがあるし、そもそも毎日いっしょにランチを食べる感じなので、伝える機会がないという問題はおこらなそうだけど、とにかく伝えたい事があればちゃんと主張するというのは意識していきたい。