Upgrade to Pro — share decks privately, control downloads, hide ads and more …

スタートアップでエンジニアとして働く話 / Narrative of working at startups

Ryota Yokote
September 01, 2021

スタートアップでエンジニアとして働く話 / Narrative of working at startups

Ryota Yokote

September 01, 2021
Tweet

Other Decks in Programming

Transcript

  1. 経歴: 学生の頃 ▪ 1986年生まれ • 数学、理科は好きだった • 物理は好きだけど化学は嫌いだった • 国語、社会は好きじゃなかった

    • 現国は得意だったけど古文は苦手だった • 要するに、論理的に考えるのは得意で暗記は苦手だった ▪ 大学 • 早稲田大学 理工学部 コンピューターネットワーク工学科(当時) • プログラミングを学んだのはこれがはじめて(18歳) • Java、C/C++ • 情報系の授業は全体的に面白かった記憶 • アーキテクチャ(ハードウェア)、OS、ネットワーク、アル ゴリズム、、
  2. 経歴: 早稲田大学 ▪ 研究室: 機械学習 • 情報理論 / アルゴリズム •

    コンピュータビジョン(CV) • ブレインマシンインターフェース(BMI) • 自然言語処理(NLP) • バイオインフォマティクス ▪ 研究職として働く(2010年4月〜2014年3月) • 研究=論文書くのが仕事 • 情報系の研究者はエンジニアと被る部分も多い • Python、R、C/C++ • 会社という観点だと大学は大きい組織 • 職員/教員あわせて3000人くらいいるらしい
  3. 経歴: 株式会社Donuts ▪ 株式会社Donuts(2014年4月〜2018年4月) • 入社するとき100人くらいの組織? *記憶が曖昧 • 退職するとき300人くらいの組織? ▪ スマホゲーム開発

    • ゲームのビジネス、開発の仕方 • 企画の進め方、デザイナーと一緒に仕事をする • C/C++、Unity、PHP、Go、MySQL、、 ▪ ベンチャー • ベンチャーとはなんぞや?というのがわかったのが一番の学び • 自分の仕事が会社の成長にダイレクトに伝わる • すごい勢いで組織が大きくなっていく • 裁量は大きい、その代わりに責任も大きい
  4. 経歴: (無職) ▪ 新しくなにか始めようと思った • 起業とか • 今までやっていなかったなにか ▪ エンジニア的リハビリ

    • 前職退職直前は管理職業務が多くコードをほぼ書けていなかった • TypeScript、React、Go ▪ やりたいこと探しをしたが特にやりたいことがなかったので普通に働 くことにした • 前より小さな会社でチャレンジしてみたい
  5. 経歴: 株式会社ミラティブ ▪ 株式会社ミラティブ(2018年7月〜) • 入社するとき10人くらいの組織? *記憶が曖昧 • 現在(21年7月)、70人くらいの組織? ▪ アプリ開発

    • toC/エンタメ/ライブ配信/スマホゲーム/SNS • Unity、Swift、Kotlin、Go ▪ スタートアップ • 創業は2018年2月(*DeNA社から独立)、ジョインした時点です でにプロダクトあり(自分で起業したわけではない) • 10人くらいだと1人あたりの裁量と責任がめちゃくちゃ強い • 会社によって雰囲気全然違う! • エンジニア的な観点だと、求められるスキルとマインドは実はそ んなに変わらない
  6. 講義で話すこと ▪ 今日話したいこと • スタートアップとは? • エンジニアとは? • 活躍するには? ▪

    持ち帰ってほしいこと • モチベーション高くもってほしい • 『好きこそものの上手なれ』 • スタートアップ楽しいよ • エンジニア楽しいよ • 人生なんとかなるよ • ただし楽しむために一定の努力は必要
  7. 講義で話すこと ▪ 受講生の想定  *そんなにずれていなはず • IT系の勉強をしている/しようとしている • IT系の企業で働こうと考えている • スタートアップでエンジニアとして働こうと考えている •

    起業をしようと考えている ▪ 自己紹介長くない? • なぜ自己紹介を長々したかというと…講師の言うこと(=今日の 話)は絶対に正しいわけではない、できるだけフェアに伝えよう とは思っているがなにかしら偏るだろう • とはいえ役に立つプラクティスも多いはずだし、鵜呑みにしない 程度に上手く使ってほしい
  8. スタートアップ ▪ そもそもスタートアップって? • 新しいビジネスモデルを考えて、新たな市場を開拓し、社会に新しい価値を提供したり、社会に貢献 することによって事業の価値を短期間で飛躍的に高め、株式上場や事業売却を目指す企業や組織 • https://www.chugoku.meti.go.jp/research/kikaku/pdf/190315_report.pdf より •

    新しく作られた会社(=起業) • 新しいビジネス、新しいプロダクト(=まだ世の中にないもの) • 会社を速く大きく成長させる(=イグジット) ▪ スモールビジネスとの違い • 小規模の会社でもビジネスは成立する • 小さいだけだとスタートアップとは呼ばない ▪ ベンチャーとの違い • 意味としては同じ、はず • 10人未満の会社はスタートアップという気がする、100人くらい したらスタートアップとはいわずにベンチャーという気がする
  9. スタートアップ ▪ そもそも会社って • 色々ある、本当に色々ある • 日本の会社の数: 400万社以上あるらしい ▪ スタートアップといっても幅広い

    • 従業員数: 1人 • 典型的には10人未満だったらスタートアップ • 20〜30人でもまだスタートアップと呼ぶ・・と思う • 従業員数: 100人 • 従業員数: 1000人いてもベンチャーとか • イグジットしていたらスタートアップとは呼ばない • 会社が大きくなってもスタートアップ時代の会社文化は残って いることが多い
  10. スタートアップ ▪ スタートアップ vs 大手 • 「ベンチャーと大企業、どっちに就職したらいいか?」 • 以下、特にエンジニアの話 ▪

    答えはないけれど • (規模によるが)ITベンチャーだとそんなに極端に差はない? • 1年前に上場したIT系会社と、創業100年の会社は全然違う • 業界の差は大きい、規模の差はあまりない • 会社よりチームの方が大事 • 100人の会社に入っても、2000人の会社に入っても、一緒に 働くのは周囲の10〜20人程度 • 大きい会社の方が整っている傾向はある、小さい会社の方が裁量 がある傾向(=自分で作れる)はある • 合う合わないはある
  11. スタートアップでの働き方 ▪ スタートアップって不安定なのでは? • 意外とそんなことない ▪ 流動性でセーフティネットを担保 • スタートアップの成功確率は低い=倒産 •

    なくなる会社も多いが、新しい会社もバシバシ生まれる • 人材の流動性高い=転職多い=3年くらいで転職するのが当たり前 • 会社が合わなくなったら次の会社に行っちゃう • =業界全体では自分の働ける場所がどこかにある • 大手企業:潰れにくいが、潰れると他の会社に移りにくい • スタートアップ:潰れやすいが、潰れても他の会社に移りやす い
  12. スタートアップでの働き方 ▪ スタートアップって給与が低いのでは? • 意外とそんなことない ▪ スタートアップは早く大きく成功させる必要がある • 早く大きく=採用大事 •

    スタートアップは採用競争力をもつ必要がある • 福利厚生、働きやすさ、成長環境、をアピールしているス タートアップは多い • ただし、創業直後の会社で事業が軌道に乗るまでは、キャッシュ がないので給与は低いと思ったほうがいい • そのかわりにストックオプションのような、後でリターンを得 られる可能性はある
  13. スタートアップでの働き方 ▪ スタートアップはなんでも屋? • エンジニアでも営業したりする? • 意外とそんなことはない ▪ スタートアップ=新しいビジネス、プロダクトを生み出す •

    エンジニアのパフォーマンス=超重要=開発に集中すべき • 10人くらいいるとそれなりに役割分担される ▪ 全く必要ないわけではない • シード期には必要なことがあるだろう • 同僚(=隣の席)は営業をしているだろう ▪ こういうことはありうる • エンジニアはフルスタック的な仕事をする(かも) • エンジニアも企画やデザインをする(かも)
  14. スタートアップでの働き方 ▪ スタートアップで働けば成長できる? • そんなことないと思う、、人による ▪ 良い面 • 裁量が大きい •

    自分から学びにいく、行動していく人は成長しやすい • 会社の全体像が見える • 社長が同じ部屋にいる • 会社の成長過程が見える ▪ 悪い面 • 教育面は弱くなりがち • 放置されがち • 裁量があるとは限らない • 会社が倒産の危機にあるなら新人に与えるような裁量はない
  15. スタートアップでの働き方 ▪ 実例 • 出社時間:10時〜19時 • 休憩:適当な時間に休む(1時間休むこと) • 残業時間:みなし残業(36協定を守る) •

    土日:休む • 服装:Tシャツとか • PC:MacBookが支給される等 ▪ 要するに普通に働いている • スタートアップは意外と合理的 • 合理的でないと会社が成長しない • ※ フェーズによる
  16. エンジニア ▪ ここで話すエンジニアはソフトウェアエンジニア • ITエンジニアともいう • 主にWeb業界、ITベンチャーの業界 ▪ 具体的に求人で言うと •

    モバイルアプリ(iOS、Android、Fluter) • サーバサイド • Webフロントエンド/バックエンド • ゲームクライアント • SRE、ML/AI、セキュリティ • テスト、ネットワーク、組み込み系
  17. チームで働く ▪ チームで働く • 例えば、企画とデザイナーとエンジニアが1人ずつのチームがあっ たとすると • 企画:企画をつくる、仕様書を書く • デザイナー:デザインする、素材をつくる

    • エンジニア:実装する、デプロイする • 「実装する」 • どこからどこまで・・? • チームによる • エンジニアの数: 1〜20人 • 企画がいないチーム、デザイナーがいないチームもある (特に創業期のスタートアップ)
  18. チームで働く Android サーバ CTO iOS デザイナー Biz Biz Biz ミラティブ創業期の人員

    ミラティブ21年6月末時点のエンジニアの人員 サーバ CTO iOS・Android・Unity インフラ・ライブ配信
  19. チーム開発の仕方 ▪ 実務で扱うコードの量 • 10万行とか • コードの行数を数えるツール: https://github.com/AlDanial/cloc • (今まで見た中で)短いと2万行、長いと30万行とか?

    • 書くより読む時間の方が長い • 慣れると特に多く感じない ▪ OSS • (ベンチャーの場合)OSSを使えるならOSSを使う ▪ 開発フロー • デザイン: Figma等 • 仕様書: mini spec • 仕様ってどうやって決まる?
  20. 自社サービス、新規開発以外 ▪ 運用中のサービス開発 • 新規開発より重要 ▪ 保守・運用 • 運用のみ、最小限の開発 ▪

    自社で開発しない • 会社として案件を全て受ける • 一部受ける • 人材を融通する ▪ 自社サービスを開発している会社に入社しても、最初から新規の開発 をやることはない、運用中のサービスでスキルアップすることを優先 することが多い
  21. 働き方とキャリア ▪ 働き方 • 会社員というよりスポーツ選手の方が近いかもしれない • 実力=アウトプット、がほぼ全て • 休日に勉強したりコードを書いている人は多い •

    年中めちゃくちゃ働いている人はそんなにいない? • 人材の流動性は高い • スタートアップに限らず転職は多い • そもそも会社に所属しない人も多い • これはいい部分と悪い部分がある • 「会社に貢献する」と「自分の成長」を両立させる • ずっと長く会社にいないことが前提 • どこの会社でも通用する技術を身につける
  22. 働き方とキャリア ▪ エンジニアは常に学び続けないといけない • 表面的な技術は長続きしない • 例えばSwiftはいつに生まれた?いつまである? • 基礎を押さえるのが大事 •

    アルゴリズム、設計、OS、、 • 実務で得られる経験、知識 ▪ チーム開発で得られる経験 • フロントエンドだと企画、デザインに詳しくなりやすい • バックエンドだとインフラに詳しくなりやすい • 会社にいるとマネジメントに詳しくなりやすい
  23. 働き方とキャリア ▪ オープンなコミュニティがあるのがエンジニア • OSS • 技術記事 • 勉強会 •

    ハッカソン ▪ 積極的にアウトプットしていくのが善 • 自身のスキルアップ + 転職活動 + 社会貢献
  24. 働き方とキャリア ▪ エンジニアの先 • OSS Committer • Engineering manager •

    CTO / VPoE ▪ エンジニア以外 • 起業 • Product manager ▪ 元エンジニア • 元エンジニアの人事、とか • →プログラミングなどで物事を整理する力が養われている • →エンジニアがどう考えているのか知っている
  25. エンジニアとして活躍するには? ▪ プログラミングはできる必要ある(当たり前だけど) • 新卒だと実務経験は求めない • 中途だと3年以上やっている人を採用するのが普通 • 業務時間の半分でコードを書いているなら、3年=3000時間 ▪

    新卒採用でよく見るところ • プログラミングが好きか? • テクノロジー、新しいものが好きか? • 手を動かしているか、アウトプットしているか? ▪ よく聞かれること • 競技プログラミング、数学、情報の資格って意味ある? • コミュニケーション能力って必要?
  26. スタートアップで活躍するには? ▪ 起業について • 今の時代、起業のハードルは低い(誰でも起業できる) • 失敗してもたいていはやりなおせる • ただしめっちゃ大変 ▪

    起業とプログラミング • 自分がコードを書くかどうかはともかくプログラミングをやって おくのは良い • 自分が書かなくても仲間はコード書く、外注先がコード書くかも しれない、どこかで役に立つよ ▪ 起業と経験 • スタートアップは半分くらいは経験が重要、将来起業をすること を考えているなら伸びているベンチャーに一度入って実務経験を 得るのはおすすめ
  27. やっていてよかった、やっておけばよかったこと ▪ 目の前のことをちゃんとやる • プログラミング、IT系技術の勉強は間違いなく役に立つ • プログラミングに限らず頑張っていたことは結構役にやっていた りする、コードを書くだけが仕事ではない ▪ 頑張っていると仲間や人脈ができる

    • 転職しても連絡取り合ってる人は多い • 起業するときには人脈は大事 ▪ (やっておけばよかった)アウトプットする • 大学にいた頃、あまりオープンにアウトプットしていなかった • 楽しい&学びになる
  28. 講義で話すこと [再喝] ▪ 今日話したいこと • スタートアップとは? • エンジニアとは? • 活躍するには?

    ▪ 持ち帰ってほしいこと • モチベーション高くもってほしい • 『好きこそものの上手なれ』 • スタートアップ楽しいよ • エンジニア楽しいよ • 人生なんとかなるよ • ただし楽しむために一定の努力は必要