以前、Twitterでハッシュタグ「#駆け出しエンジニアとつながりたい」が話題になりました。このハッシュタグは、プログラミング学習を始めた駆け出しのエンジニアの方が、このハッシュタグ付きツイートを投稿し、プログラミング勉強仲間をTwitter上で募るという目的で、今でも頻繁に使われています。
それを見て気づいたのは、どんなプロフェッショナルでも「駆け出しエンジニア時代」があったはず。という訳で。今では有名なあのエンジニア起業家やあのCTOの「駆け出しエンジニア時代」をインタビューする企画です。
元IBM・LINEエンジニアの海外連続起業家で、現在バンコク/東京/ホーチミン拠点のエンジニア事務所「GAOGAO」のCEOを務める手島拓也さんの「駆け出しエンジニア時代」をお伺いしました。
手島拓也
元IBM・LINEエンジニアの海外連続起業家。現在バンコク/東京/ホーチミン拠点のエンジニア事務所GAOGAOのCEO。
スタートアップ向けの開発受託・採用支援・プログラミング教育事業などを運営。
Udemy講師や共著「Vue.js入門」を出版。独立系VCのCTOなども兼任。
Twitter:@tejitak
大学2年の時に受講したプログラミングの講義が人生を変えた
──まずは現在のご活動について教えていただきたいです。
GAOGAOというエンジニア事務所の代表をしています。コンセプトは起業や海外など、いわゆる日本で会社員のITエンジニアとして、フルタイムで働くような仕事ではなく、そこから一歩踏み出してみて、「自分で事業を作り上げたい」、「海外でチャレンジしたい」といった「野望」を持った方を支援する、生活プラットフォームみたいなものを目指して、運営をしています。
──GAOGAOではご自身でコードを書くこともあるのでしょうか?
あります。週に丸2日分ぐらいの割合です。
──では、マネジメントや戦略を考える時間が多いのでしょうか?
企画みたいなものと、後はコミュニケーションです。今のクライアントさんとのコミュニケーションや、開発受託の事業に関して言うと、例えばどのメンバーにどの指示を出すのかみたいなディレクション業務、かつ新規で営業もあって、企画、営業、ディレクション、開発など、全部を程よくやっている感じです。
──ありがとうございます。手島さんがプログラミングを始められたのはいつ頃でしょうか?
プログラミングを初めてやったのは大学2年生です。きっかけは、大学のプログラミングの講義でした。私の所属していた学科は管理工学科といって、経営とか経済とか金融とか数学をやっていて、そこでプログラミングの授業が一部だけあったんです。
大学2年生の時に、初めて受けたプログラミングの授業がJavaでした。その時のことは今でも覚えていて、Windowsのコマンドプロンプトでアスタリスクを1行目は1個、2行目は2個、3行目は3個表示して三角形を作る、という課題でした。それをやった時に「すごい面白い」と思ったのが初めての体験です。本当に1個か2個の構文を書くだけだったのですが。
──たまたまプログラミングの講義を受講したのですか?
それは確か必修科目でした。
──もし、その講義でプログラミングに出会えていなかったとしたら、今は何をされていると思いますか?
全然違うことをやっていたと思います。私の学科では、大手のSIerに行く人が多かったです。プログラミングが出来なくても、そういう企業に行く人が多く、後はメガバンクとか金融系に行く人も多くいました。
──手島さんはその講義でプログラミングが面白いと感じ、大学院へ進学されたんですね。
そうです、大学院は情報系でAIを扱うところでした。
電車で毎日オライリーのJavaScriptを読み込んだ2ヶ月
──手島さんの駆け出しエンジニア時代だったと言えるのは、具体的にいつ頃でしょうか?
実務レベルをこなし始めた頃でいうと、大学4年生の時のIBM研究所でのインターンシップです。
そのインターンシップは、たまたま所属していた研究室が文科省の先導的ITスペシャリスト育成推進プログラムというものに採択されていて、そのプログラムの一環でインターンシップに行きました。初めて実務のレベルのコードを知ったのもその時です。
──プログラミングを始めてから、実務に入るまでは期間があったんですね。
確かにそうですね。それまでは独学で勉強したり、基本情報技術者とか応用情報技術者、当時はソフトウェア開発技術者という名前だったんですけど、そういう試験を受けて勉強したり、大学の研究室でプログラムを書かなくてはいけなくて、そういうのをやったりして独学でやっていました。本当に実務を経験したのはそのインターンシップが初めてです。
──初めて取り組んだ実務は、どのような内容だったのでしょうか?
その当時「マッシュアップ」という概念があって、APIのマッシュアップと言うのですが、今では企業がWebのAPIを提供するのは当たり前のことじゃないですか。
でも当時自分が大学4年生の頃は、APIという概念が出始めた頃でした。基本的に今までの企業はデータを外部に公開しない方が、自社のデータを蓄えることができるため利益になる、という考えでした。
ですが、Googleとかが率先してAPIを提供して、関連サービスをサードパーティーに作ってもらうことで、よりグロースができるという、つまりはオープンの方が良いという思考がちょうど出てきていて、各企業がこぞってAPI を作り始めていました。
URLでGETリクエストを投げるとAPIを叩けるじゃないですか。それをGUIでブラウザ上で、例えば食べログのサービスをドラッグして、このアウトプットを例えばGoogle MapのAPIのこれにマッピングして入れるみたいなものを作っていました。
サービスのアウトプットを、次のAPIのインプットに入れて、またそのアウトプットを入れるみたいな、ブラウザ上でグリグリ動かしながらドラッグしながら作ると、表側にそのサービスが表示されるみたいな感じです。結構先進的なことをやっていたプロジェクトで、それの実装を担当してました。
それはJavaScriptのプロジェクトで、それまではJavaばかりを書いていたので、そこで初めてJavaScriptの本場のコードに触れました。当時は技術のキャッチアップをするために、毎日電車の中でオライリーのJavaScriptを読み込んで、勉強していました。
それが私の駆け出しエンジニア時代ですね。結果的にはその会社から内定をいただき、就職しました。
そのプロジェクトは、プロトタイプというものに研究費を使えていたプロジェクトで、結局製品化までは至りませんでした。ですが、その時にお世話になったメンバーが移ったチームに自分も入社時に配属になり、インターンシップでお世話になった方々と一緒にプロダクト開発をしていくことになりました。
そこでは企業向けの検索ソフトウェア+テキスト解析ソフトウェアを開発していて、超簡単に言うとGoogleの社内版みたいなものです。イントラネットの情報を横断的に検索して、かつドキュメントのテキストなどを解析し、トレンドを解析するツールも提供していました。
──それは今も提供しているプロダクトですか?
はい、その製品は今はWatsonのグループに入っています。Watsonというと、クイズのAIみたいなイメージがあると思うのですが、WatsonというIBMの組織があり、その中の一プロダクト的な位置付けのものを開発していました。
「なぜこう動くのだろう?」常に原因を深掘りすることが大切
──手島さんがエンジニアとして一番成長したと思う時期は、どの時期でしょうか?
やはり、IBM研究所でのインターンシップが一番成長したと思います。自分の研究で少しプログラムを作ることはできましたが、初めて現場レベルの出来る方々のソースコードを見ながら、製品レベルまでプログラムを書く、というレベルにまで上げることができたのは、そのインターンシップ時代の2ヶ月間でした。
──インターンシップをしていた当時、大切にしていたことはありますか?
「なぜこう動くのだろう?」と常に考え、深掘りすることは意識していました。
例えば、結構JavaScriptはライブラリを使って、ほいってコードを書くとそれなりに動いたりするんです。ですが、もちろん動かないこともあって、その時に「動かない、じゃあ止めよう」ではなくて、「なぜ動かないのだろう?」と考えしっかりとたどっていくと、最終的にはJavaScriptの素のソースコードにたどり着き、そこで問題があることを発見できたりします。
なので、ライブラリが動かないからやめようではなく、ライブラリの中までちゃんと見て、原因を突き止める癖をつけるように意識していました。それが自分の力になった気がしていて、そうするとデバッグ能力も上がるので、何か問題が起きた時に「なぜこうなるのだろう?」ということをどんどんスムーズに解析できるようになり、力がつきます。
また、これは少し後の話なのですが、前前職のLINEなどで技術面接官を担当することもあり、その際にはライブラリなどの知識を問うよりも、JavaScriptを本当に理解しているのかを問うように心がけています。
あとは社会人1、2年目ぐらいで意識していたことは、実装の速度です。初めの頃はちょっとした機能をつくるのにも1週間から2週間かかるのですが、数ヶ月後に似たような機能を作ると数日で終わったりします。前はこの時間かかったけれど、今回はこれくらいでできたというのを結構意識してました。
──なぜそのようなことを意識しようと思ったのでしょうか?
成長を感じられる一つの指標だったので、それで成長を実感していました。「実装にどのくらいかかったのか」ということを覚えておいて、さらにそれを2、3ヶ月後にまたやったら、「今回はこれだけの時間でできた」という風になると、成長したと思えます。それで成長が止まらないように、成長することを楽しんでいました。
自分で解決する癖をつけよう
──逆に、駆け出しエンジニア時代に失敗したことや苦労したことはありますか?
1つあるとすれば、新卒で入社した企業の先輩が頼れる人すぎて、頼り過ぎてしまったことです。今自分がマネジメントする立場になって思うのは、当時とんでもないことをしていたと思います。
おそらく、「ググれカス」と言われてもおかしくない内容も、頼れる先輩が真隣にいるので「これなんでしょうかね?」みたいな感じで、すぐに聞いてしまっていました。
もちろん、自分で解決する癖をつけようと思ってはいたのですが、その頼れる先輩があまりにも人が良すぎてしかも真隣にいるので、頼り過ぎてしまいました。
今それを当時自分がやっていたぐらいに、自分の部下からされたら非常に困るな、とすごく思います。そこは失敗談といいますか、反省点です。
──最後に、駆け出しエンジニア時代のご自身にアドバイスができるとすれば、どんなアドバイスを送りますか?
先ほどの話になりますが、頼れる人に頼りすぎるなということです。自分で解決する癖をつけるべきだと思います。