205 Views
January 18, 21
スライド概要
2021/01/18 Ltech#13 事業開発エンジニアとは?~実装は甘え~
中 佳博
LIFULL HOME'Sを運営する株式会社LIFULLのアカウントです。 LIFULLが主催するエンジニア向けイベント「Ltech」等で公開されたスライド等をこちらで共有しております。
大規模サイト開発と新規事業開発の経験か ら見たそれぞれの違い 中佳博 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。
自己紹介 名前:中佳博(あたり よしひろ) 趣味:湯船で を読むこと 好きな言語: 経歴: を 年新卒入社し、 の開発 年ほど経験。その後、新規事業開発の部署で 年ほど経験 今日はそこで得た知見の話が できればと思います。
まず最初に 本日は「 実装は甘え 」という サブタイトルですが 私は実装する場面においての、大規模開発と新規事業開発の違 いについて話そうと思います。
目次 大規模開発と新規事業開発の違い 1. 開発の優先度 2. エンジニアの裁量 3. エンジニアとしての担当領域 4. メンバーとしての担当領域 5. 求められる姿勢やスキル 6. それぞれの良いところ 7. それぞれのちょっとつらいところ
開発の優先度の違い
開発の優先度(新規の場合) ・ (品質:汎用性・高可用性・高機能) ・ (コスト:料金・人的リソース) ・ (納期:開発期間) 場面においていろんな意味を持つと思いすが どれが一番、優先度が高いでしょうか
開発の優先度(新規の場合) 個人的には 1. 2. 3. (納期:開発期間) (コスト:料金・人的リソース) (品質:汎用性・高可用性・高機能) だと思います。※ただし条件付きで
開発の優先度(新規の場合) なぜか
開発の優先度(新規の場合) 少し極端な話をします。
開発の優先度(新規の場合) エンジニア視点で ・とても綺麗な設計 ・とても読みやすいコード ・とても汎用性のあるコード を、時間をかけて作り上げたとしても もし ヶ月後に事業が撤退してしまったら 意味がありません。
開発の優先度(新規の場合) もしくは 綺麗に作ることに時間をかけている間に 競合他社に差をつけられてしまうかもしれません
開発の優先度(新規の場合) そんな状況になるより ・多少コードが汚くても ・多少バグがあっても(致命的でない) ・多少仕様を満たしていなくても それなりに動く状態でリリースするほうが意味 があります。
開発の優先度(新規の場合) 早くリリースすることで ・ユーザ検証ができる ・他の優先度高いタスクに取り掛かれる ・事業にスピード感を出すことができる というメリットがあります。
開発の優先度(新規の場合) 素材
開発の優先度(新規の場合) ただし、 品質を完全に忘れて良いという訳ではない バグだらけで使い物にならない機能を生み出しても それはそれで意味がない。 だが、ある程度さじかげんが必要 も も両立できるならそれが一番良い。
開発の優先度(大規模の場合) 逆に、大規模開発だと な場面が多いと思う。(状況によるが)
開発の優先度(大規模の場合) 大規模開発だと ある程度サービスが育っていて 来月潰れるかもという可能性が低い
開発の優先度(大規模の場合) コードを綺麗に書くことに初めは時間がかかるかもしれないが 次回以降の改修にかかる時間が短くなるなどのことを考えると 長期的に見るとコードを綺麗に書くほうがメリットが多い
開発の優先度(大規模の場合) また、大規模サイトは信頼もある しょっちゅうバグを出していたら 事業の信頼にも関わる
開発の優先度 大事な考え方として プロダクトは事業の上で成り立っているということ 事業のフェーズによって、プロダクトに求める優先度も変わる
エンジニアの裁量の違い
エンジニアの裁量の違い(新規の場合) 新規事業開発の場合は 裁量(権限や決定権)を与えられます というよりは、裁量を持って やらなければいけないことが多いです。
エンジニアの裁量の違い(新規の場合) ・システムアカウントの権限 ・技術選定、開発方針の決定権 ・開発権限(デプロイ権限など) ・案件に対する責任(これは裁量じゃないかもだけど)
エンジニアの裁量の違い(新規の場合) 理由としては 単純に人がいなくてなんでもやらないといけないから なので、やりたいことは自分で判断していかなければならない
エンジニアの裁量の違い(新規の場合) 逆に 大きな裁量を持っているので ・意思決定する力 ・判断力 ・慎重さ が必要になる また つのことに専念するというのが難しい
エンジニアの裁量の違い(大規模の場合) 対して大規模開発だと 裁量は分割されている
エンジニアの裁量の違い(大規模の場合) 自分一人でできることの幅は少ないが その分、一つのことに専念できる
エンジニアとしての担当領域の違い
エンジニアとしての担当領域の違い(新規の場合) 私の関わった事業の場合は エンジニアが潤沢にいませんでした。 ( 人 人) そのため、 人でなんでもしなければいけません。 フロント サーバーサイド インフラ
エンジニアとしての担当領域の違い(新規の場合) そのため 幅広い知識が必要 知らないことによくでくわす
エンジニアとしての担当領域の違い(新規の場合) 広く深い知識があると良いが それが厳しい場合は 広く浅くでも知っていると良い
エンジニアとしての担当領域の違い(大規模の場合) 逆に大規模開発の場合は 担当領域が分割されている フロント担当・サーバーサイド担当・インフラ担当
エンジニアとしての担当領域の違い(大規模の場合) 担当が分割されている場合は 狭くても深い知識が必要 (ある程度周辺領域の知識は必要だが) ・言語に対する深い知識 ・ドメイン知識 ・ハイパフォーマンスな設計
メンバーとしての担当領域の違い
メンバーとしての担当領域の違い(新規の場合) 開発領域の話と似ていますが 新規事業の場合は人が足りないので システム開発以外の業務もしなくてはなりません。
メンバーとしての担当領域の違い(新規の場合) ・事業オーナーとサービスの方向性の相談 ・企画案出し ・機能仕様作成 ・全体スケジュール管理 ・部署間調整 ・外注管理 ・会議体の改善
メンバーとしての担当領域の違い(新規の場合) しなければならないことや やれてないこと、 整備されていないことも山ほどあるので 自ら動いて改善したり、担当したり しなくてはならない
メンバーとしての担当領域の違い(新規の場合) そのため、コードを書く以外の知識が 必要になってくる ・スタートアップの知識 ・数字を見る知識 ・企画を考える知識 ・運用改善の知識
メンバーとしての担当領域の違い(新規の場合) 加えて、なんでもやる姿勢も大事
メンバーとしての担当領域の違い(大規模の場合) 大規模開発(人がいる現場)の場合は 役割が分担されている
メンバーとしての担当領域の違い(大規模の場合) そのため、自分の専門領域に専念できる
求められる姿勢やスキルの違い
求められる姿勢やスキルの違い(新規の場合) 新規事業の場合の姿勢 ・事業のためになることならなんでもやる ・事業の成長のためにできることが、自分のやりたいこと ※個人的な見解
求められる姿勢やスキルの違い(新規の場合) 求められるスキル ・事業の成長に必要なこと全て (もちろん、その中でもエンジニアに注力したいなどはある) ※個人的な見解
求められる姿勢やスキルの違い(大規模の場合) 大規模開発(人がいる現場)での姿勢 ・自分の担当範囲で最高のパフォーマンスを出す ※個人的な見解
求められる姿勢やスキルの違い(大規模の場合) 求められるスキル ・特定の領域に特化したプロフェッショナル性 ※個人的な見解
それぞれの良いところ
それぞれの良いところ(新規の場合) 新規事業の場合 ・やりたいと思ったことはなんでもやれる ・いろんな仕事ができるので、飽きない ・ のフェーズを担当できる ・役職に関係なく人同士が近い ・スピード感
それぞれの良いところ(大規模の場合) 大規模開発の場合 ・その領域に特化、専念して仕事ができる ・環境が整備されている ・大規模ならではの仕事ができる(負荷対策など) ・専門知識の高い人がいるので相談しやすい
それぞれのちょっと辛いところ
それぞれのちょっと辛いところ(新規の場合) 新規事業開発の場合 ・一つのことに専念しずらい ・良い意味でのこだわりを貫き通せない場合が多い※ ・少ない情報で意思決定しなければいけない ・足下に意識がいってしまいがち
それぞれのちょっと辛いところ(大規模の場合) 大規模開発の場合 ・担当が細分化されていて全体が見えづらい ・調整事や情報共有に時間かかりがち ・思い切ったことしづらい ・ドメイン知識ばかり増えてしまう
目次 大規模開発と新規事業開発の違い 1. 開発の優先度 2. エンジニアの裁量 3. エンジニアとしての担当領域 4. メンバーとしての担当領域 5. 求められる姿勢やスキル 6. それぞれの良いところ 7. それぞれのちょっとつらいところ
最後に ※補足 今回お話したことは 全てにおいて、こうだという訳ではなくて あくまで私が経験したなかで こういう傾向が強いと思うという話でした。 それぞれの現場や社風などによってまた変わってくると思います。
大規模サイト開発と新規事業開発の経験か ら見たそれぞれの違い 中佳博 © LIFULL Co.,Ltd. 本書の無断転載、複製を固く禁じます。