スタートアップのエンジニアが求められるもの、経験できること
スタートアップ企業のエンジニア、というとシリコンバレーで活躍する
優秀で成功を収めているマッチョな人物像を思い描くでしょうか。
もちろん日本もスタートアップは多く立ち上がっており、
サクセスストーリーを歩んだエンジニアも多いです。
そんな人に憧れて、エンジニアを志す方へ、
またスタートアップ企業へ入社して挑戦したいと考えている方へ、
実際にスタートアップのエンジニアのあり方について
実体験をもとに書いてみました。
スタートアップとは
まず、スタートアップと言う言葉について定義しておきましょう。
場面によって多少意味は揺らぎますが、ここでは
- 一人ないし数人の起業家が
- 会社を立ち上げたばかりのステージの
- 自社プロダクト・サービスを広めるための企業
とします。
人・モノ・金もなければ知名度もまだ無いステージで、
これからIPOやバイアウトを目指してスケールをしていこう、という会社です。
リスキーな部分に踏み込む
スタートアップ企業では万全な開発組織体制が整っていることはまずありません。
資金が尽きる前に、少数で、いかに早く開発し、アップデートをし、収益化のためのリリースをするかが重要になります。
その為には十分に時間をかけたテストや保守性に飛んだコードを書く余裕はないかもしれません。
収益が立ち、資金繰りの目処が立つまでは汚いコードだろうととにかく早く"動くこと"を優先される場合もあります。
将来的に事業がスケールすると立ち行かなくなる実装もあるでしょうが、
その問題を後回しにせざるを得ないケースは往々にしてあります。
スタートアップでは 今を生き抜くこと が重要になります。
あなたがリリースの速度を維持したまま高品質のコードを書くことができるのであれば、
その企業にとってかなりの財産となるでしょう。
"エンジニア"に求められる仕事はファジーになる
役割と範囲と仕様が固まったプロジェクトと異なり、
スタートアップではあなたが想像している以上の仕事を行う機会が大量に存在します。
一人当たりの裁量が大きい分、役割の境界も曖昧になっています。
コードを書くばかりがエンジニアの仕事ではない。
開発チームの体制にもよりますが、明確な分業が無い場合は往々にしてあります。
万全な仕様書もなく、用意する余裕もないかもしれません。
設計から実装、テストに加えて表面のUIデザイン部分も自分で行う必要があるでしょう。
サーバー環境構築やデータベース設計、技術選定からあなたの出番です。
「専門では無い」と断ってはいけません。断っても他にいないのですから。
パソコンに向かうばかりがエンジニアの仕事ではない。
人数が少ないほど、"エンジニア"としてジョインしたあなたの役割は増えていきます。
まだ総務が十分機能していない場合、あなたの役割は更に多岐にわたります。
プリンターの故障、Wi-Fiの接続、個々のパソコンの設定から床下配線も担当することになります。
おおよそ電気で動くものの担当になる と覚悟をした方がよいでしょう。
ただし、コロナ禍によってリモートワークをしている場合は大幅に仕事は減るでしょう。
社内ツールの設定を遠隔で行う必要はあるかも知れませんが。
スタートアップのエンジニアが求められること
ここまでの話でおおよそ予想はついているかも知れませんが
ワークライフバランスではなく"ワーク = ライフ"
エンジニアに限った話ではありませんが、スタートアップで働く場合は
24時間臨戦態勢でいる覚悟をもちましょう。
定時で上がりたいと思っていたり、仕事を上がった後は業務関連の連絡は
受けたくないという方は向いていません。
もちろん企業によって休暇を取ることもあるでしょうが
食事中だろうが、朝の4時だろうが、海外に行ってようが、
連絡が来たらパソコンを開いて業務に当たれる常在戦場の心構えは
非常に重宝されるでしょう。
メンタルとフィジカルのタフネスさ
冒頭で"シリコンバレーのマッチョな人物像"と述べましたが、
精神面と肉体面をコントロールできることは大切です。
スタートアップでは爆速でトライ&エラーを進めた結果の
朝令暮改はよくあることです。
作ってきたプログラムやシステム、サービスが方針転換で"ボツ"になることもありますが
その程度でめげている暇はなく、新しい方針での開発に移りましょう。
リスキーな道を渡っている分バグやエラー、クレームも多いでしょうが、
心穏やかに対応しましょう。
自由度は多い分、組織に縛られるストレスは少ないでしょうが、
その反動の圧倒的な仕事量に心をやられないようにしましょう。
メンターがつきっきりになることは少ないので
過酷な環境を楽しめる、強いモチベーションを自発的にコントロールできる方が向いています。
肉体面のセルフマネジメントにも注意が必要です。
長時間の労働時間や短い睡眠時間に体が慣れていると有利でしょう。
疲労はパフォーマンスの低下にもストレスにもつながります。
また、もしあなたが病気で休んでも、あなたに変わる人はおらず、会社の進行が遅れます。
体は資本、というのがダイレクトに響く為、激務の中でも健康に気を遣いましょう。
多岐にわたる開発知識
今まで携わってきた言語や環境以外の知識も必要になります。
サーバ・インフラ担当がいない場合、
テスト環境や開発環境の構築から、デプロイ運用なども含めて行う必要があります。
デザイナーがいたとしても、ある程度自力で組めると良いでしょう。
全てあなた一人でサービスの開発・ローンチまででき、全てのサービスの問題を
あなた一人でも対応できることが理想です。
最低限のことはリリースまで持っていけるフルスタックなスキルが求められます。
0から開発するため、技術選定ができるだけの知識も必要です。
複数の言語や環境、フレームワーク、サービスを比較検討し、
学習コスト・開発コストを見積もれるようにしておきましょう。
業界内での人脈
ここだけは筆者が持っていないのですが、昨今切に渇望しているものです。
新しい技術やシステムを取り入れるときに相談できる先駆者や、
何か会ったときにヘルプで手伝ってくれるような知り合い、
またスケールに際してリファラル採用できるような繋がりは
非常に重要になってきます。
特に採用に関しては、スケールのタイミングで人脈のある人を
CTOとして招き入れることで成功をしている企業をいくつか見てきています。
全部一人でできるように、とは言ってきましたが
何かあったときに頼れる相手がいる、というのは非常に強みとなります。
スタートアップのエンジニアに向いている人
ここまで述べてきましたが、もちろん企業によって得手不得手もありますし
環境が整っている組織もあります。あくまで私からの意見として受け取っていただければと思います。
その上で、スタートアップに向いているタイプをあげるなら、次のような方でしょう。
- 自分で起業しようと思っている人
- 強い内的なモチベーションがあり、企業の方針とマッチしている人
- 心身が強く、全身全霊で仕事をしたい人
- 過酷な環境に身を置いて、なんでもできるタフなエンジニアに成長したい人
- 環境の変化や新しいことを学ぶことに苦がない人
- すでにスタートアップの経験があり、慣れている人
もしスタートアップに興味があり、覚悟があるのであれば是非挑戦してみてください。
ハマればとても素敵な体験ができるはずです。
もっと詳しく知りたければ実際にスタートアップで働いている人に聞いてみましょう。
周りにいなければ、TwitterでDMいただければ相談に乗ります(Twitter:@divrots)
そこまでゴリゴリでないにしろ、成長ステージにある企業で働きたいという方は
CheerCareerにはたくさん掲載してあるので探してみてください。
運命の一社がこのサービスで見つかれば幸いです。