Subscribed unsubscribe Subscribe Subscribe

Ruby on Railsのビシバシはぁはぁ日記

シンガポールのスタートアップで働くソフトウェアエンジニアの悪戦苦闘ブログ

ITエンジニアの海外転職で出された技術問題をそのままここに貼り付ける - その1

Rails Ruby プログラミング 海外スタートアップ事情 海外移住 海外転職 英語 転職

エンジニアが海外転職をする際に必ず出されるのが技術問題で、それらは本当に玉石混交。いい問題もあれば、なんかしっくりこないクソ問題もある。私が現職で応募者に技術問題を出す際にはいつも「外部のネットに書いたり、人に問題の内容を教えたりしないでね」と一言付け加えている。ただ全ての会社がそんなこと言ってる訳でもない。特に注意が無かった会社の技術問題はちょっとぐらい外に出しても文句を言われる筋合いは無い、と解釈してここに少しずつさらすことにした。きっと日本から海外転職をお考えのエンジニアにとっては参考になると思う。

出題した会社:ロンドンのITスタートアップ
応募職の求める技術:Ruby、Rails、サーバーサイドのメンテナンス、その他いろいろ
問題の形式:画面を共有して応募者がコードを書く様子をモニタリングして、出題する。本問題に特に制限時間は無し。Google検索は不可。「なるべく考えてることを話しながら(英語)コード書いてね」とのことだった。

Exercise 1 - Ruby

In as few lines of code as possible, implement a class Person so that each instance of this class can have children and grandchildren (of that same class Person) - but not beyond grandchildren.

問題は単純。Personクラスを作って、そのPersonのインスタンス変数には子供(children)が何人か居て、さらに孫も何人か居るように設計してね、と。

こういうのを出された時に私が言う第一声はいつも同じ。「いい問題だねー」と。で、これは技術問題の最初の第一問としては素直にいい問題だと思う。難しすぎず、特定の技術を要することなく基本ができていればだいたい解ける問題だし。
向こうの担当者はモニター越しに応募者がコードをどのぐらいのスピードで書けるか様子を見ていて、イケてそうなら次にもう少し難しい問題を。ダメそうなら次にカンタンな問題に移るのだろう。


出題された時に私が書いたコード。今から読み返すと改善の余地もあるかもしれないが、まーこんなもんでもOkかな、と。

class Person
  attr_reader :children
  attr_reader :name

  def initialize(name, children: [])
    @name = name
    @children = children
  end

  def grand_children
    @children.flat_map(&:children)
  end
end


実行する時

grand_child = Person.new('GrandChild A')
grand_child2 = Person.new('GrandChild B')
child = Person.new('Child A', children: [grand_child])
child2 = Person.new('Child B', children: [grand_child2])
parent = Person.new('Parent A', children: [child, child2])

p parent.name
p parent.children.map(&:name)
p parent.grand_children.map(&:name)

実行結果

$ ruby person.rb
"Parent A"
["Child A", "Child B"]
["GrandChild A", "GrandChild B"]

この手の問題を突破するためのコツとしてはいくつかコード書きながら話すネタを用意しておくこと。それはどんな問題が出た際にも普遍的に話せるネタの方がいい。つまり冒頭で「英語で話ながらコード書いてね」と言われるのだが、それが案外むずかしい。本来なら考えていることをそのまま言えればいいのだが、あんまりいいアイデアが無い場合にそれをするとボロが出まくる。そうした事態を避けるには「オレってコード書く時はいっつもVimを使っててね。以前はEmacsも試したんだけどやっぱりVimだよね。だって。。。」と意味はなくても話せるネタがあればかなり心強い。
想像して欲しいのだが「あれ?この問題ムズい。どうしよう。。。」と考えてモニターを眺めて黙ってしまっている時の気まずさはかなりある。そういう状況はやたら焦るのだ。「なんか英語で言わなきゃ!でもどうやってコード書いたらいいのか分からん!でもなんか言わなきゃ!なんて言う?こんな時、英語でなんて言ったらいいんだー!!」とかなってたら本来書けるはずのコードすら書けなくなる。したがって話のネタは用意すべし。
どうでもいいことでも話してたら心が落ち着くし、少なくとも雰囲気は保てる。こうした技術面談は技術だけじゃなく「こいつと一緒に働くことになってもOkか、どうか」も見られている。ムスッと黙って何も言わない人になってしまうと「こいつ大丈夫かよ?」となってしまうので、話しネタは重要。

上記の問題を見て「こんなカンタンな問題、楽勝だわ」とお考えならば、それを国境を超えた向こうの会社の人にモニター越しにあなたのタイプをひとつひとつ眺められてかつ英語で話しながらコード書かされることはだいぶ雰囲気が違うんですよ、と言いたい。慣れたらどうってこと無いんだけど。


tango-ruby.hatenablog.com

tango-ruby.hatenablog.com

tango-ruby.hatenablog.com


外国人の家に泊まる、結婚式に出席する、葬式に出席する、という変な目標

シンガポール生活 日々の雑感 海外移住

シンガポールに移住した当初に個人的に立てた目標があって、パソコン内のファイルに書いて残しておいた。もうすぐヨーロッパに引っ越す予定で、ファイルを整理していたら、その当初の目標書いたファイルが出てきてそれを確かめたら、なんかあまり意識せずにも全部達成されていた。その目標はこの3つ。

  1. 外国人のご家庭と家族ぐるみで仲良くなってその家でお泊りすること
  2. 外国人カップルの結婚式に出席すること
  3. 外国人のお葬式に出席すること

私は元々がそこまで社交的ではないし、友達も少ない方だ。友達なんてひとりも居ないシンガポールに突然に家族で引っ越してきてこの目標を立てた時はかなり達成困難なハードルの高い高い目標に思えた。だいたい3つめの目標なんてとても高度だ。どれだけ仲良くなった人であっても「今は元気かもしれないが、もしあんたの父親が急死したらその際にはぜひお葬式にお誘いいただきたく」なんて言える訳がない。普段から密な友人関係を築いておくこと以外に方法は無い。

しかし異様にコミュニケーション能力の高い妻のおかげもあって、3つともいつの間にか達成していた。外国の人の家に泊まることはもちろん、結婚式やお葬式などその人の人生の節目になる行事に参加して友人として家族と共に見届けるというのは貴重な体験だった。

別に誰かにこんな目標を立てることをおすすめする訳でもないし、この目標のおかげで人生救われました、などと言ってる訳でもない。ただ心のどこかでこういう感じの目標が達成できるような海外生活を送りたいと、考えていたことは確かだ。そうして何気に意識していることは、普段の生活に影響して自ずとそういう方向に行く。

シンガポールには5年も住んだことだし、いい人達にたくさん出会えて変な目標も達成したし、次はヨーロッパに行くことにしたけどそれはそれでええのかな、とも思った。ITスタートアップ業界の鼻息の荒い人達はもっとすげー目標を立てるのだろう。「**ドルのバリエーションを獲得するゼ!」「世界を変える!」とか。
そんなんばっかりじゃなくて、個人の生活をちょっと豊かにするような目標があってもいいのかな、と。そしてヨーロッパに行っても同じ目標を立てることにした。
 
 
tango-ruby.hatenablog.com

tango-ruby.hatenablog.com

tango-ruby.hatenablog.com


ごく少数の日本の音楽を除いて子供の感性に引っかかるのはほとんどが英語の音楽になってしまう

シンガポール生活 海外での子育て 海外移住 英語

うちの子供たちが子供の感性で選ぶ音楽、映画、本にはほとんど口を出さないことにしていたら、彼らが触れるのは全て英語の作品になってしまって、いまさら軌道修正しようとしても、どうにもなりませんでしたわ(ただし少数の日本人の作品を除く)という話。

シンガポールで暮らす子供たちにとって日本語と英語は特に意識することなく両方を使っている。ピクサーのアニメを英語でも観れるし、ジブリのアニメも日本語で観れるという状態だ。
で、とにかく音楽や映画や本に関して親である私が「これを観ろ」「これを聴け」とかは言わないようにしていた。Spotifyで流れる曲も彼らが自由に気に入った曲のプレイリストを作っていた。YouTubeもよほど教育に悪い映像でもない限りとやかく言わないようにしていた。

するとある日に気が付いたのだが、日本発の音楽がひとつも彼らのプレイリストに入っていなかった。映画も「次は何を観ようか?」と聞いても出てくるのが全てピクサーやディズニーの英語の映画ばかり。これはちょっと良くないな、と考えて「おいおい、日本では『君の名は』という作品が大ヒットしていてだな」とか言ってなんとか日本の作品にも触れさせようといろいろがんばった。

しかし結果はさんざんで今のところあまり日本発の作品にはあまり興味を示していない。作品を提供するアーティストも日本市場と英語圏の市場とのマーケットの違いを意識して提供しているのだろう。日本市場に向けた音楽は日本の中に居ないと「いいなーこれ」と思い難い作品に仕上がっているように感じた。スピーカーから流れる日本のヒットチャートの音楽を聴いている子供たちがなんとも微妙な表情で「なんか違うぞこれ」感がありありと出ていた。横で見ていた私までいたたまれない気持ちになってしまった。

その中でもちょっとは興味を示している日本の作品が映画ではジブリ映画。これは日本で暮らしていた幼少の頃から親しんでいた影響が強い。(さすが永遠不滅のジブリ!)

あと音楽で子供たちのプレイリストに入った日本人アーティストは2人。坂本龍一(世界のサカモト!)とパイナッポーペンのピコ太郎。

こうして見てると子供の感性というものは決して侮れないな、と感じた。坂本龍一もピコ太郎もどちらも世界市場で確固たる地位を獲得された偉大なアーティスト。

そういう世界市場でもパワーのあるアーティストでなければ、例え日本語ができてもバイリンガルな子供の感性には引っかかりようがない、という事実を目の当たりにした。

PPAP

PPAP

Playing the Piano

Playing the Piano

tango-ruby.hatenablog.com

tango-ruby.hatenablog.com

tango-ruby.hatenablog.com