自分を攻略していく記録

自分がやりたいことを達成するには何をすればいいのか、その攻略していく過程をつらつらと

スタートアップで1年以上エンジニアをやって気づいたこと

はじめに

1年と2ヶ月株式会社Candle(キャンドル)というスタートアップでエンジニアをしてきた。

エンジニアをやろうとしたきっかけ

大学は工学部システム創成学科というふわっとした学科に所属しており、主に授業は、プログラミング(Java)だったり(←すぐに授業は終わった上、実際大したことはしていないので全く身につきつかなったが)数理最適化などの手法を学んだり、ビジネス入門とかゲーム理論とか経済よりのこともする一風変わった学科だった。座学が少なくてケーススタディとかグループワークが多いのが印象的だ(就活予備校っぽい)。

一番はじめのきっかけは大学2年の冬に初めてJavaを触ったこと。もともと高校まではパソコンに触れる機会が少なくパソコンには疎い方だったが、プログラミングってパズルっぽいなと感じたのを覚えている。しかし学部時代ラクロス部に所属していて、3年になると急激に忙しくなり、あまり勉強をする時間が取れなかった。

大学4年の11月に部活を引退してから部活で割いていた時間をプログラミングにあてるようになった。引退直前は正規練習・筋トレ・映像を見る・自主練で半日近く割いていた時間をいきなりプログラミングにあてようとしたのだ。

しかしプログラミングと言っても何をやればいいのか、詰まった時にどう解決するのがいいのかはじめは全然わからなかった(今考えればググれよ、って話だが笑)。そう悩んでいる時に、ふと、「山口(学科の友達でCandleのCTOをしている)がエンジニアインターンを探していたな」と思い、すぐに会ってその日からジョインして研修を始めることにした。2015年の12月前半のことだ。

研修期間

Javaをほんの少し触ったことはあったものの全く覚えておらず、ほぼゼロスタートも同然だった。Candleはキュレーションメディアの開発・運営をメインに行っていたのでWeb系の勉強をすることになり、HTMLをドットインストールで見ることから始めた。CSSJavaScript(というかjQuery)、PHPCakePHPをドットインストールで見たり、簡単なチュートリアルを通して学んだ。研修と言っても基本一人で全部やって、詰まったりすると質問する、というスタイル。

卒論をやりつつ飽きたら研修をやって、という感じで1ヶ月半程度で何となくCakePHPを動かせるようになったと思う。2016年のお正月はCakePHPの環境構築に苦戦していたのをよく覚えている。しかしながら、CakePHPが一体何をしているのか、そもそもCakePHPは何なのか当時は理解できていなかった。

研修後

2016年の2月から簡単なタスクをもらって業務を開始し、1ヶ月くらいするとAWSのことも徐々に教わり、Webってこうなってるんだ、とインターネットの仕組みとかインフラに関して興味を持ち始めた。以来、PHPを書きつつもサーバーのログを見たりするようになった。

当時キュレーションメディアを5つ運営していましたが、そのうちの1つが大きくなって、iOSアプリを開発することになり、2016年の4月頃からSwift、iOSの勉強を徐々に始めました。そして、6月か7月くらいからiOSの開発に関わりだした。

会社が急激に大きくなる

学生のインターンが急激に増加した。エンジニアも入った時はメインで実装している人がCTOだけだったのが10人以上になっていて、組織が大きくなる様子を目の当たりにした。この成長が落ち着いた頃に、CROOZに12.5億で買収された。

Swiftにはまる

夏くらいにはエンジニアの業務委託が4、5人いたのだが、その内のiOSエンジニアの1人が入社することになった。僕と同い年だが、すで前職での経験もあり、コードレビューやコード規約に関する良い文化をもたらしてくれた(それまではなかったことはないがしっかり根付いてなかった)。彼はSwiftに関する本を出すくらいSwiftに詳しかった(ただのSwift好き?)ので、Swiftらしいコードの書き方を学ぶことができた。

また、一からアプリを作ってみたいと思い、12月には、空いた時間でQiitaのクライアントアプリを作ってリリースした。(https://itunes.apple.com/jp/app/qiitapicks/id1181929918?l=en&mt=8)30~40時間くらいでできたと思う。その過程でいろんなライブラリを目を通して非常に勉強になった。

現在

Candleはキュレーションメディアの他に女性向けの動画メディア(MIMI)を運営しており、MIMIという動画系iOSアプリの開発を3人(1人は研修なので実質2人)でしている。分担は自分APIサーバー、管理者サーバーをメインでiOSも少し分析周りとかの実装をし、他方がiOSのUI/UX面に注力している。Swift、node.js、Ruby on Railsと全部言語が異なるので結構辛いが、非常に勉強にはなっている。プログラミングは実践でやりながら学ぶのが一番早いと実感する。

何が言いたいか

1人で学習するのが難しいと思われがちなプログラミング。しかし、勉強のためにプログラミング教室に通うのはナンセンスだと思う。

例えば、英語を話せるようになるのにもっとも効果的なのは外人しかいない環境に飛び込むこと。ちまちま英会話教室に通っても外人と話せるようになれる人は良いが、多くの人は、いきなり外人だけの会話に飛び込めるようにならないと思う。プログラミングも同様で、教室に通ったからといって一からサービスを創出できるようになれない。実際作り始めてみると、コードを書く以外にもサーバーの構築、チューニング、サーバー管理などすることは非常に多い。

ただ、英語の例と大きく異なるのは、実践の環境に飛び込むにあたって経済的コストが低い(留学は高い!)、むしろインターンとかバイトであればお金がもらえるということだ。いち早くプログラミングやエンジニア的素養を身につけるならそういう環境に飛び込んでみることをオススメしたい。スタートアップであれば、全くの初心者ウェルカムという組織も多いので、プログラムに興味がある人はそういうアプローチをしてみたらどうだろうか。