- ホーム
- メンバーが考えていること
- エンジニアとしてベンチャー企業で働いてみて、ベンチャーだからこそ圧倒的に成長できた事
仕事の選択肢としてエンジニアを選ぶ人が増えてきました。大手でも良いし、フリーランスとして働くこともできます。ですが、今回はベンチャー企業で働いた経験から感じるメリットや活躍するためのコツをお話します。
エンジニアの仕事内容をざっくり解説
主にWEBエンジニアに焦点を当てて、まずはざっくりと仕事内容を書いていきます。
なるほど、こんな感じなのか〜と参考程度に読んでもらえたらと思います。
エンジニアの業務形態は
SES形態(出向型)
自社でシステムやサービスを開発するのではなく、エンジニアが足りない企業に技術者として出向します。人材派遣をイメージしてもらえればわかりやすいと思います。
派遣先のオフィスに常駐して、開発・運用・保守などの業務を遂行します。派遣先によっては自社開発のお手伝いもあったり、完全リモートワークだったりします。
受託開発形態
クライアントから発注を受けてシステムを開発し、納品していきます。クライアントの要望を汲み取りシステムの全体設計から開発作業まで全て網羅していきます。
クライアントの要望を的確にまとめ、要望を叶える設計を構築し、設計された物のプログラムを構築するといった流れです。様々な案件に携わるので知識が身に付きます。
自社開発形態
一般消費者向けのECサイトや、企業の業務効率化ツールの開発、SaaSアプリの開発など、世の中にない新しいサービスを自社で開発していきます。クライアントの要望を叶えるのとは異なり、サービス利用者のことを考えた設計からデザインを細部までこだわりオリジナルサービスを開発していきます。
開発するだけでなく、ユーザーからのフィードバックから改善を繰り返したり、どんなUI/UXがユーザーにとって使いやすいかの追求をする力も求められます。
エンジニアの開発フローは
上記では業務形態に触れてきました。今から0から完成するまでの開発フローを簡単に説明していきます。
ウォーターフォールモデル
各工程を段階的に進め、一度きりのリリースを目指す手法。要件定義、設計、実装、テスト、リリース、メンテナンスの順に進む。
要件定義、設計の段階で完成を目指していきます。
アジャイル開発
短いスプリント単位で開発を進め、要件変更に柔軟に対応する手法。
全体の設計から、優先順位をつけて機能毎に実装箇所を決めて開発していきます。「やっぱりこの部分の機能はこっちにしましょう」などの要件変更を頻繁に行いますので、開発チーム全員でのコミュニケーションが重要です。
プロトタイピング
最初に実際に動作するプロトタイプを作成し、ユーザーの要件を理解してからシステムを開発する手法。
主にフロント部分をまずは整え、視覚的にクライアントが求める事を理解しやすくします。プロトタイプを元に要件定義、設計を作り、システムの実装をしていきます。
クライアントと開発チームの解釈の齟齬をなくすことができます。
DevOps
開発と運用を統合し、継続的な開発・テスト・リリース・運用を行う手法。
要件定義、設計、実装、テスト、リリース、運用、フィードバックを同時進行に行い、圧倒的スピード感を持って完成を目指します。ユーザーの要望を素早く反映できたり、プロダクト、サービスの品質を向上することができます。
エンジニアのベンチャー企業と大企業での仕事の違い
分かりやすくベンチャー企業・大手企業と分けてみました。
実際どちらで働く方が良いかは、皆様がそれぞれに求める働き方によって大きく変わってきます。
なので、具体的にベンチャーと大手ではどのような違いがあるのかを説明していきます。
エンジニアの業務範囲
ベンチャー企業と大手企業で圧倒的に違う部分といえば開発規模でしょう。
開発規模の違いで、業務範囲がどのように違ってくるのか比較してみましょう。
大手企業
小規模開発はほぼほぼないと考えてください。
数億円単位の開発費用を要する仕事なので、開発チームの人数がかなり多いです。
チームの人数が多いからこそ、「要件定義」「設計」「実装」「テスト」「リリース」「運用」「フィードバック改善」全て役割を分けて担当をつけます。
全員が開発の全体像を把握するのではなく、決められた箇所の設計、開発に全力を注いでいくスタイルです。
チームで開発をして行くので、スムーズな連携や共有が必要なのでコミュニケーション能力も重要なポイントです。
大規模開発だからこそ、マーケティング予算や広告予算もたっぷりなので、世の中の注目を浴びるサービスの開発になります。完成した時の喜びは大手企業だからこその醍醐味と言えます。
ベンチャー企業
大手企業に比べるとどうしても開発費用には限界があります。
なので、開発チームも少数精鋭という形を取らざるを得ないでしょう。
少人数チームなので、要件定義からリリースまでの工程を担当毎に切り分けるのは難しいです。
全ての工程を自分でやり切る!ぐらいの気持ちで開発に挑みます。
要件定義と実装を同時にするということは、実装途中に「こっちの方がいいんじゃないか!?」という事は日常茶飯事です。その意見がすぐに発言でき、改善をすぐ行えるという点で個人の裁量権がかなり大きくやりがいもあります。
まずは動くものをリリースして徐々にサービス拡大していこうというスタイルなので、開発したサービスが成長した時には我が子の成長を見届けるようなやりがいを感じれるのがベンチャー企業の醍醐味と言えます。
開発フローの違い
最初に説明した開発フローにも、ベンチャー企業と大手企業では結構違いがあります。
どちらが自分にあってそうか参考にしてみてください。
大手企業
開発チームの人数が多いので、ウォーターフォール開発や、DevOps開発を取り入れることが多い傾向にあります。
ベンチャー企業
開発チームの人数が少ないので、アジャイル開発やプロトタイピング開発を取り入れることが多い傾向にあります。
ベンチャー企業のエンジニアはきつそう
エンジニアは会社に泊まって残業パラダイスなイメージ × ベンチャー企業は会社に泊まって残業パラダイスなイメージ
僕は当初こんなイメージを持っていました、、
同じようなイメージを持っていて、きついかも?と思う方いると思います。
ここからは筆者である僕の実体験を交えて、エンジニアとして4年間ベンチャー企業で働いて感じたリアルな声を書いていきます。
これまでやってきた業務をざっくり紹介
- LP制作(受託)
- HP制作(受託)
- WordPressオリジナルテーマ開発
- LP制作(自社)
- HP制作(自社)
- 自社LPのABテスト
- 顧客情報をスプレッドシートに自動入力ワークの構築
- GASを使ってスプレッドシートとSlackのAPI連携
- 自社サービス「d-base」の開発(現在は撤退)
- 自社サービス「slidebox」の開発
- 自社サービス「formwork」の開発(現在開発中)
- 某大手企業の新卒研修サポート
はい、本当にざっくりと並べてみました。
(どうでもいいことかもですが、社内にエンジニアは私一人だけです、、、!頑張ったねと心の中で思ってくれたら嬉しいです。。。)
大まかにカテゴリー分けをするとしたら
- WEBページの受託開発
- 社内DXの構築
- 自社WEBアプリ開発
といった感じになります。
正直会社に泊まって作業もしたことがありますが、最終手段なので4年間で数える程です。
業務の幅も広く、開発だけでなくたまーにセールスやディレクションもしていました。
きついと言えばきつかったですが、ベンチャーだからこそ自分の業務が直に会社の成果、成長へと直結するので楽しいが勝ちました。
エンジニアがベンチャー企業で働くメリット・デメリット
こんな感じで働く私の実体験をベースにエンジニアとしてベンチャー企業で働くメリット・デメリットを包み隠さず書いていこうと思います。
エンジニアがベンチャー企業で働くメリット
企業の成長に直に貢献できる
ベンチャー企業は比較的に社員数は多くないです。
そのため自分の仕事の責任は大きいです。大きいが故に仕事を完遂した時は会社の成長に大きくコミットできます。
いやでも会社に貢献する構図になるので、必然的にやりがいを感じる事ができます。
私は自社サービスを開発中ですが、もしかしたらこのサービスが会社の看板サービスとなるかもしれません。
まさにベンチャーで働く醍醐味だと感じております。
幅広いスキルが身に付く
大手企業では、「要件定義」→「設計」→「実装」→「テスト」→「リリース」→「運用」→「フィードバック」と開発の流れを役割分担して定められた業務を遂行している所が多いです。
ベンチャー企業にはそんな人材リソースはありません。。
すなわち、全部やります。
①ただプログラムを書くのではなく、どうすれば要件を実現できるか設計する。
②設計したシステムをどう構築していくか手を動かす。
③やっぱりこっちの設計の方が良いかもしれないと要件定義から見直す。
④まずは動く物を作って運用テストを行う。
①へ戻る
こうしてフルスタックエンジニアは育って行くのだろうと思います。
爆速にエンジニアとして成長していったのを実感しています。
自分のスピード感で仕事を進められる
使いたい言語、使いたいフレームワーク、使いたいツールはほとんど自分で決めることができました。
なので、新しい技術もどんどん取り入れることができ、【学習×生産性の向上】を常にできる状況です。自ずと開発スピードも上がって行きます。
- 開発時の提案から改善までのスピードが早い
- 独自で開発ルールが作れるのでスタートダッシュが早い
- 生産性向上に伴って、時間にゆとりができる(会社に泊らなくてもいい!!)
これもベンチャーの醍醐味だと感じています。
エンジニアがベンチャー企業で働くデメリット
知識不足による業務の圧迫
当然のことですが、自分の中にある知識・能力以上のパフォーマンスは絶対に発揮できません。
開発には要件の実現に躓くことしかありません。
その際に助けてくれる人がいなくては作業がストップしてしまいます。
それでも業務の納期はストップしてくれません。
このギャップに苦しむ可能性があります。
人材不足により業務量が多い可能性がある
ベンチャー企業は人材が少ないので当然エンジニアも多くはありません。
例えばアプリ開発をしていたとします。
その作業だけに注力し続けることも大事ですが、その他LP,HPの改善作業であったり、
新しく社内にツールを導入したいという時の実装を務めたりと様々な業務が降ってきます。
うまく優先順位をつけて業務をこなしていかないと社内の仕事にブレーキをかけてしまうことにもなります。
急激な仕様変更による柔軟な対応を求められる
私の開発手法はほとんどがアジャイル開発となっております。
(それ以外を実践するリソースが足りないです、、、)
少数のアジャイル開発だからこそ、仕様変更の対応には冷や汗をかきます。。
「今それいうなぁぁぁ」なんて事はよく起きます、、
ですが、柔軟に対応してこそプロのエンジニアです。
苦しいですが、踏ん張りましょう。
エンジニアがベンチャー企業で活躍する5つのポイント
エンジニアでは無い人のIT知識を成長させる
社内の非エンジニアのIT知識を育てる事で、急激な要件変更が少なくなります。
そして、育てるという事は自分の知識がより強固なものになります(アクティブラーニング手法)
伝えるためには全体像の理解も必要になってくるので、PM(プロジェクトマネージャー)としての力も自ずと身に付いていきます。
自分の業務も楽になる、生産性の向上により活躍できる、自動的にPMの力も身に付く
一石三鳥ですね。
分からない事はすぐ誰かに聞ける環境づくり
Googleのエンジニアチームには「15分ルール」というものが存在します。
問題が起きた時は
【1】最初の15分は自分自身で解決を試みる
【2】15分後も解決していなかったら必ず人に聞く
前者を守らないと他人の時間を無駄にし、後者を守らないと自分の時間を無駄にする。
素直にわからない事を質問できる人とそうでない人では成長速度には天地の差が生まれます。
周りにエンジニア仲間を作っていくというのもやっておいて損ではありません。
もしかしたら事業拡大時に、一緒に働いてくれるかもしれません。
私は社内に優秀なエンジニアを技術顧問として参画していただきました。
もちろん手を動かすのは自分ですが、3時間かかる業務を顧問の先生を活用して1時間で終わらせる事ができれば2時間もコストを削減できたと同じ意味になります。
- 何が分からないのかをうまく言語化する
- 面倒やプライドを捨てて即質問する
このことができる環境を作り、作業の生産性を上げれば
低コストで社内にエンジニアをもう一人増やしたことと同じ状況を作り出せます。
人材確保、圧倒的なスキルアップが実現でき、これもまた一石二鳥ですね。
生産性を向上させるためのパターンストック
開発をして行く中で、今まで自分で構築してきたコードはエンジニアにとって資産となります。
新しい案件を受注したときに、「あ、これ前似たような事を実装したことあるな」となった時が必ずきます。
その時に、やる事は一つだけ。コピー&ペーストです。
5時間かかるシステムを1分で構築できます。
しかし、コピー&ペーストを出来ない人がたまにいます。
どんな人かと言うと、パターンストックができない人です。
もっと簡単に言うと整理整頓ができない人です。
自宅で物が壊れた!ネジを閉めれば直す事ができる!
あれ、ドライバーってどこに直したっけ、、、?
これがコピー&ペーストできない人です。
PCのフォルダ整理を徹底したり、githubをうまく活用してパターンストックしていきましょう。
他社サービスに触れる経験
もの・サービスは当然使う人がいるから成り立っています。類似サービスも多数存在しています。違いは主にUI/UXです。
どの見た目がユーザーにとって理解しやすいか、どんな操作方法がユーザーにとって理解しやすいか。
ボタンが無いのに皆が使えるiPhoneは素晴らしいUI/UXです。
UI/UXデザイナーが社内にいれば問題ありません。ですが、ベンチャー企業にはそんな余裕がない事も多いはずです。
そこで、他社サービスに触れると言う経験はかなり貴重です。
リリースされていると言うことは「テスト」「運用」「フィードバック」をクリアして世の中にリリースされている分けです。
良いUI/UXの答えがそこにあります。
積極的に触っていきましょう。自ずと新しい技術に触れることにもなります
これもまた一石二鳥ですね。
タスクを細かく分割する
最後はエンジニアに限った話ではありません。俗に言う論理的思考力がこの部分かなと思います。
例えば、ユーザー一覧機能を実装してくださいと言う要件があったとします。
- ユーザー情報を入力する要素を作る
- 追加するためのボタンを作る
- ボタンがクリックされたら入力されたユーザー情報をデータベースに保存する
- 保存先のデータベース名はusersに指定する
- usersのデータベースを配列で取得する
- 取得した配列をループ出力する
こんな具合に要件を実現するためのタスクを細かく分解することで明確に何をすれば良いか瞬時に理解できるので、生産性が向上します。
そしてタスク分解ができると、例えば「データベースを配列で取得する方法がわからない」
と明確な疑問点を持つ事ができます。15分で解決しなければ即時に質問できます。
生産性が向上し、質問の粒度が高くなる
これもまた一石二鳥ですね。
まとめ
私自身がエンジニアとしてベンチャー企業で働いて感じた良かった点を実体験ベースに書いてみました。
大きなメリットとして、
- 企業の成長に直に貢献できる
- 幅広いスキルが身に付く
- 自分のスピード感で仕事を進められる
仕事する上で活躍、成長するためのポイントとして、
- エンジニアでは無い人のIT知識を成長させる
- 分からない事はすぐ誰かに聞ける環境づくり
- 生産性を向上させるためのパターンストック
- 他社サービスに触れる経験
- タスクを細かく分割する
上記のようにまとめてみました。
ベンチャーで働くという選択肢や、現在働いている人に少しでも参考になれたらと思います。
文中にエンジニア仲間を作ると書いてありました。
ぜひ私に興味を持っていただければ仲間になりましょう!