スタートアップ
受託開発

受託開発しかしてこなかったエンジニアが自社製品を開発するスタートアップに入ってみた

はじめまして。
人生で初めてのQiitaへの登録になります。どうかお手柔らかにお願いします。
本日はタイトルにもある通り、技術的なお話ではなく、私の経験的なお話をしようと思います。

入社まで

今まで2社のITコンサルティング会社に在籍し、要件定義から設計辺りまでの業務に従事してきました。
一時期はbackbone.jsを利用していたWEBシステムの開発担当として、夜な夜なjQueryと格闘する日々が続いたこともありましたが、基本はコードをほとんど書かない系の典型的な管理系エンジニアです。

そんな中、今年の7月から心機一転フロムスクラッチというスタートアップの会社でエンジニアをしています。経緯についてはまた別の記事でお話ししたいと思います。

私は管理系エンジニアだったこともあり、開発プロセスを考えることが多かったのですが、今までの受託開発での開発の進み方とは大きく違い、今までとは全く違うスピードで開発が進んでいきます。
本日はその受託開発での開発進み方の違いについて、3点ほどお話したいと思います

開発の進み方の違い1 「自分たちで要件をマジで考える」

こちらは受託開発なのか、自社開発なのかで大きな違いがあるかもしれませんが、本当に開発者が要件を考えなかれば開発は進まない体勢になっています。
というのも弊社ではScrum開発を進めており(Scrum開発についてはたくさん記事があるのでそちらを見ていただければと思います)、開発についてはユーザーストーリーというものをベースに開発を進めます。
このユーザーストーリーといいうものが、仕様書でも基本設計書でもない、「ユーザーストーリーはユーザーが実現したいことやユーザーにとって価値があることを簡潔にまとめた文章」を纏めたものになります。
なので、開発者は上記のユーザーの価値になることを開発で実現には何かを考え、それを完遂させなければ開発を完了することはできません。その過程で開発者は開発の途中段階でマジで要件を考えることになります。そのため、開発した後に要件が漏れることが少なくなり、結果的に開発のスピードが上がります。

開発の進み方の違い2 「技術選定にも自由がある」

受託開発時によくある話で、「過去に導入実績のあるIEしか容認することはできない」とか「言語も新しい言語は信頼性にかけるのが」ということが往々にしてあると思います。提案して、承認をもらうまでのプロセスが長く、結果的に導入事体が見送りになるケースも多いと思います。
しかし自社開発×スタートアップともなると、積極的に新技術を投入していきます。開発のベースが「ユーザーに価値のあるものを提供」を目的としているため、いま世の中にある技術をフルに活かして実現しなければなりらないからです。もちろん技術検証はしっかりとした上で。
新技術をいち早く導入し、新技術におけるメリット教授して開発できるため、こちらも結果的に開発スイードがあがります。

開発の進み方の違い3 「アジャイル開発を本当に実現している」

こちらは受託開発の時でもアジャイル開発ができるように導入にしようという話があがることが多いのですが、私がいたプロジェクトとでは結果的にはほとんどアジャイル開発はできていませんでした。というのも、基本的にお客様の業務システムに関わる部分で仕事をしているため、業務上決まっている導入スケジュールが優先されるため、イテレーションを実施を繰り返すように進めようとしても、結果的にはウォーターフォールで仕事が進むことがほとんどです。
ですがこちらも先に記載の通り弊社ではScrum開発を導入しているため、短い基幹でのSprintで開発基幹を区切り、書sprint毎に仕組みの改善に取り組んでいることから、本当にアジャイル開発を実現できています。
アジャイル開発を実現できているということは、ウォーターフォールでは追加の開発期間が必要になる開発を短いスパンで実現できるようになるため、結果的に開発スピードが上がります。

最後に

いかかでしたでしょうか。
自社製品を開発したことがなかった私としては、上記の3つの違いは私の中では今までにない衝撃的な内容でした。本当に。
上記を実現し続けることは相当量のエネルギーも必要だし、大変な部分も多いですが、このスピード感で開発をしだしたら、受託開発でのスピードにはもどれなくなるなと、自分は感じています。

あとエクスキューズですが、まだまだ開発力が足りなすぎて、「◯◯やってみました」的な記事がうまくかけませんでした笑。
そういった内容の記事についてはまた次回、チャレンジしようと思います。絶対に。