元データサイエンティストが2人目のエンジニアとしてスタートアップに入って1年経ったので振り返ってみる

こんにちは。iphoneって落とすと割れるんですね。エンジニアのみどりです。
イノーバの2人目のエンジニアとして入社して1年が経ったので、やったこと、良かったこと、悪かったことについてまとめてみようと思います。
入る前の自分のスペックは以下のとおり。
- 基本的な統計の知識があって、データ分析・機械学習がある程度わかる
- スパゲッティコードで簡単なプロトタイプを作れる程度のコーディング技術
- MVC系のフレームワークとか使ったことがない
- 複数人数でのプロジェクトに関わったことがない
- GitとかGithubとか知らない
入社した時点でのエンジニアとしての知識は新卒の情報系学部を卒業した学生程度です。とはいえ、ベンチャーでは教育コストなんてかけてらんないので、案件をこなしながら独習が基本です。自分が入った頃にはCTOと自分の2人でしたが、1年経った今では10人と、大幅に拡大しました。たった1年とは思えないほど色々とやったような気がします。
「スタートアップってどんな感じなのかなー?」って思っている方の参考になればと思います。あと、すげー頑張ったので「よく頑張ったねー」とかSNS上で褒めてもらえると、あとからコソッとエゴサーチして喜びます。
まずは良かったことと悪かったこと。
良かったこと
結構裁量がある
最終的な意思決定権はないが、「これで行きましょう」っていったら大体通る。ただし、やるのは自分。
優秀な先輩エンジニアがたくさんいる
きちんと教えてくれる先輩エンジニアの存在って超貴重です。何の技術に投資すればいいか教えてくれて、正しい方向に導いてくれる先輩エンジニアは偉大。無駄な努力をしなくて済むようになる。
夢がある
ベンチャーで働く以上、どんな夢を追いかけられているかの比重が大きいかと思います。イノーバでは、コンテンツマーケティングを行うためのツール提供とコンサル、コンテンツ制作の2軸のビジネスを行っています。コンテンツ制作ではWeb経由で世界中のライターさんに執筆して頂いています。イノーバで以下のようなことを実現したいなぁと考えています。
- 中小企業や始めたてのベンチャーが簡単にマーケティングできるようになる
- きちんと理解をした上で商品を選択できるようになる
- クリエイティブな仕事で食べていける人が増える
- 働き方の選択肢が増える
「ワーク・シフト」)にも書かれていますが、この先の世の中として、小さな企業がたくさん立ち上がってクラウドワーカーが活躍する世の中にシフトしていくと思っています。そのような中で、様々な制約あってできなかったことができるようになって、多くの人の生き方を変えるような関わり方ができるのではないかと思っています。
人が面白い
スタートアップという小さな組織で働く以上、会社のメンバーが面白いというのは非常に重要視するべきところだと考えています。イノーバは突き抜けた人がたくさんいてなかなかに面白いです。パッと挙げるだけでも以下のような人がいます。
- 新卒でブログしか書いてなかった社長一人の会社に入っちゃう東大生
- MBA取っててマーケティングできるCTO
- 現役バーテンダー
- 約20年フリーで食べていた元プロライター
- サウジアラビア政府にコンサルしていた元戦略コンサル
- 某大手ECの会社でバリバリ稼いでいたECコンサル
データが作れる
データ分析をやっている方なら、「このデータ取ってないのか……マジか……」とか、「このデータからじゃ何も語れないよ」っていう話もあるあるネタかと思います。自分でデータの設計ができるようになると、将来的に必要になりそうなデータが分かるので、ログに仕込んでおくことができます。データが溜まったらあんなことやろう、こんなことやろうとか、色んな知見が得られそうなので夢が持てます。
イノーバの場合では、メディア企画、コンテンツ制作、コンテンツ拡散、コンテンツ配信と一気通貫でデータが取れるので、非常に活用シーンが多く、今からワクワクしています。
色んな経験ができる
ベンチャーで働いていると、良いことも、悪いことも山ほど経験できます。上記のような開発業務はもちろん、それ以外でもいろんなことがありました。エンジニアとして働いていて、まさか記事の校正を手伝うことになるとは思いませんでした。企業の拡大、組織の変更、資金調達や製品のリリースなど、開発としての経験以外でも、非常に豊富な経験を得ることができました。
悪かったこと
半端無く大変
やることがいっぱいあるのに人がいない。
作り込めない
私が元々やっていたデータ分析の仕事では、サービスの改善を行うことで100の売上を110に増やすとか、100かかっていたコストを90に押さえるといったことを目標に仕事をすることが多いです。サービスの立ち上げ期だと、全く方向性が違っていて、0から1を作り上げることが目標となります。そのため、最低限の機能を揃えて早くリリース重要です。コアのバリューを見極めて、それ以外の機能は切り捨てるぐらいの勢いで開発項目を絞り込まなければなりません。「この機能が実装できれば売れる!」とか「こんな機能作ってよー」とか言われて、「あれば嬉しいのはわかるけど、まだ実装できるフェーズじゃないんですよねー」って返すのは辛い。この種の悩みはきっとどこの開発現場でも一緒なんでしょうけどねー。
コード的にも前のめりに負債を抱えて行ってて、ある程度サービスが安定した時点で大手術をやるということも時々やっています。
ココらへんの話は資産と負債、キャッシュ・フローとか、会社の状況とか戦略が密に関わってくるところなんで、仕方ない部分はあります。稼げると分かるまでは最小限のリソースで頑張って、稼げると分かってからリソースを投資するというのは正しい戦略なので。ただ、エンジニアとしては、自分が100%満足できる状態でリリースしたいという割り切れない思いはありますよね……
一つ一つの技術に対する理解が浅い
色々な技術を学べる反面、一つ一つの技術に対する理解がどうしても浅くなってしまっている面もあります。何かをやる場合に、どんなことが必要で何をリサーチすれば良いか程度の知識は付くのですが、選択肢がすぐに出てきたり、メリット・デメリットを挙げられる程の知識はありません。
以下、具体的にやったことです。
やったこと
開発の基本的な技術の習得
開発回りの1年間のざっくりとした内容としては以下のような感じです。
- Gitを覚える
- GitHub-Flowを覚える
- GitHub-Flowだと大変なのでGit flowに移行する
- スクラムでアジャイルを回してみる
- DevOpsの環境が着々と整って行く
複数人で開発のプロジェクトを回したことがない自分としては、GitとかGitHub-Flowとか、ちんぷんかんぷん。Gitの概念を理解するのに1ケ月くらいかかった気がします。この1年間は急拡大で、エンジニアの数も数人〜十数人と一気に人数が変わって行きました。プロジェクトの管理をちゃんとやって回すためにアジャイルを導入したり、新しく来た人でもすぐにジョインできるように色々と自動化したりと、「開発チームってこうやって出来ていくんだー」というのを実感できて、すごく勉強になりました。
Cloud CMOの開発
9月にリリースしたCloud CMOという、MA(マーケティングオートメーション)付きのCMS(サイト構築システム)があるのですが、最初はその開発を行いました。Cloud CMOはconcrete5というPHPベースのCMSです。学習コストが高いCMSだったので、結構苦労しました。世界で結構広まっているオープンソースなのに、DB定義書が開発者の脳みそのなかっていうのはなかなかクールでしたねー。そもそも、MVCをちゃんと使って開発したこともなかったので、フレームワークを使った開発とか色々と身についたような気がします。
分析用APIサーバーの作成
ログ取得・集計設計
このあたりの設計に関してはデータ分析をやっていた頃の知見があったので結構スムーズにできました。将来的にどんな分析が必要で、どんな集計結果が必要なのかということをババババーっとまとめて、それを分析するためにはどのようなログデータがあれば実現できるかというようなことを設計しました。自分で取りたいデータを作れるのはいいですねー。
サーバーサイドアプリケーションの作成
アプリケーション・サーバーの設計としては、ざっくりと以下のような感じです。
- nginx(アクセスログを取得する)
- fluentd(アクセスログをまとめる)
- MySQL(データを溜めておく)
- sinatra(アプリケーション)
- REST API(アクセスログ取得のためのURLとレスポンス設計)
今まで分析する側の立場だったので、「どうしてこんな汚いデータが生まれるんだろう?」と思っていたのですが、ログを作る側になると、「そうなっちゃうよねー」って感じをひしひしと感じました。きれいなログを吐き出すとか、ゴミが少なくなるようにするとか、欠損データを出さないようにするとか、結構骨のいる作業なんだなーっていうことを実感しました。
社内校正用ツールの開発
一時期、「津波がやってくる」と社内がざわついた時期がありました。それもそのはず。3ヶ月で3万本の記事を納品するという超巨大プロジェクトを受注してしまったのです。あまりの大量案件だったため、CEO、CFOも含めて、全員が記事の校正を手伝うという異様な光景が社内に広がっていました。数万件の案件を処理するにも関わらず、データの管理はExcelベース、記事を修正する度にWebのツールに記事をコピペしてチェックするという、破綻秒読みのプロジェクト。というわけで、Excelからファイル読み込んで、Web上で校正するツールを2週間くらいで立ち上げました。マジで死ぬかと思った。
校正前後の履歴データなどを取って、誰がどの程度修正されたか、どのくらいの時間をかけて校正を行ったかとかの分析をやったんですけど、人によって性格がすごい分かれていました。結構良い結果が出たので、ライターさんの評価とか、インセンティブに使っていきたいなーなんて思っています。
コンテンツ制作ツール
ブリッジSEとしてオフショアプロジェクトに参加
そうこうしているうちに、オフショアに出したプロジェクトがどうやらヤバそうだという話になりました。最初とあるサービスのクローンを作る発注をかけて以降、なかなかな放置具合だったので、自分がオフショア先とのやりとりをすることになりました。どうやら世の中でいうところのブリッジSEというお仕事になるっぽいです。やることは大体こんな感じです。
- ヒアリング・仕様の作成
- ワイヤーフレームの作成
- プロジェクトの管理
- オフショア先とのやりとり
- 開発体制の提案
- テストケース作成、レビュー
オフショアどうこうじゃなくて、外注するには発注スキルが重要
まぁ当たり前のことですが、外注するのって高度な発注スキルが必要なんですよねー。言語の障壁もあってですが、こちらが考えているものを完全に伝えるのってすごい大変です。何度キーボードをクラッシュしそうになったことか……最初は超ざっくりの要求と機能ベースでやっていたのですが、最終的には伝わりづらそうな所はきちんとERDを書く、プロトタイプをこちらで作る等、結構なノウハウが溜まっていきました。この辺りに関しては、今後ブログで紹介しようかと思います。
ってな感じで、なかなかの充実具合で1年間を過ごすことができました。
スタートアップへ入ろうと思っているあなたへ
のんびりと楽しく生活を送りたいなら辞めた方がいい
スタートアップで働くって、ぶっちゃけすごいしんどいです。シリコンバレーみたいにドカドカと資金をぶち込んでくれるわけでもないので、安定するまでは給料もそんな高くないです。会社のビジョンに共感したとか、チームメンバーと一緒に何かやりたいとか、将来自分で会社を立ち上げるために修行したいとかそういった理由がある方じゃないと、あんまりオススメできないです。
やってることより人を選べ
スタートアップの経営戦略は経営や市場の状況によって結構簡単にピボットします。経営の戦略が変わったら辞めるくらいの気合で入るなら良いですが、そうでない場合は一緒に働く人の性格や行動原理を元に会社選びを行うと良いかと思います。
スタートアップで一括りにしない
とはいえ、スタートアップは千差万別です。上場を目指している会社、バイアウトを目指している会社、資金調達を繰り返すことで急拡大を狙っている会社、固く利益を出して内部留保を作って着実に成長していく会社など、様々な方針が考えられます。人数が少ない分一人一人のメンバーに依存する割合も多いです。スタートアップと一括りにせずに、自分なりの比較軸を持ってどのような会社なのかをしっかりと検討するのが吉かと思います。ちなみに、自分の比較軸は以下のような感じでした。
- 夢・将来性があるか
- ビジネスを通じて自分のやりたいことが実現できるか
- 一緒に働きたいと思える人がいるか
- Web開発の技術が身につくか
- データ分析の知見が活かせるか
自分の場合は上記の条件は概ね満たしていたのでなかなか良い選択だったかと思います。
イノーバの1年を振り返ってみましたが、本当に色々なことがあって、人生のなかで一番濃密な一年だったように思います。相当しんどかったので、もう一回やり直すかと言われたらあんまりやりたくはないですけど、経験しておいて良かったかと言われたら間違いなくイエスです。3年分くらいを濃縮して経験できたような気がしていて、一生使えそうなスキルもたくさん身につきました。つらつらと書き綴ってみましたが、スタートアップの雰囲気が伝わって、選択肢の一つして考えたり意思決定の参考になったりしたら幸いです。
エンジニアさんとの交流も深めて行きたいと考えていますので、もしイノーバに興味があって話をしてみたいという方がいれば、Wantedlyかコーポレートサイトから気軽にお問合せください。