こんにちは、荒井(@yutakarai)です。
弊社は、ゼロからシステムを開発することは滅多にしませんん。
システム開発会社なのに?
と言われるかもしれませんが、滅多にしません。
今回は、システム開発について僕の考えを書きたいと思います。
スクラッチ開発とは
スクラッチ開発とは、ゼロからシステムを作り上げることを言います。英語では「development from scratch」と言います。
「ゼロから」ということは、全て自分の思うがままにシステムを作れるわけです。
全て自分の思い通りにシステムを作れることはメリットだけではありません。デメリットもあります。
・思い通りに作れる
・カスタマイズなどの拡張も思い通り
・開発に時間がかかる
・コストがかかる
賛否両論あるかと思いますが、ここではフレームワークを使ってシステムをゼロから構築することも「スクラッチ開発」として話を進めます。
スクラッチ開発はエンジニアのロマン
ゼロからシステムを構築するのは、エンジニアのロマンです。
以前僕がエンジニアとして勤めていた会社の上司がそのロマンを追い続けている人でした。
ある自社サービスのシステムを開発するプロジェクトがありました。
そのシステムのコアとなる機能があったのですが
同じような機能が、オープンソースとして無料でできるプログラムがすでに公開されていました。
しかし僕の上司は
そのオープンソースを使わずに、ゼロから開発することにこだわりました。
それだけでなく、上司は仕事以外のプライベートでも
独自のフレームワークや、はたまたプログラム言語まで自作しようとしていました。
ここまでいったら、完全にロマンですよね。
僕自身は、そこまでの熱意もありませんし
技術力も足らないので、唖然としてしまう反面、うらやましくもありました。
上司としては、
自分の思い通りにシステムを作りたいという
エンジニアのロマンを追い続けていたということです。
無条件にスクラッチ開発をするのはエンジニアのエゴ。使えるものは使うべき
スクラッチ開発はロマンである反面、エゴの塊でもあります。
前述したシステムは無事リリースされたのですが
十分なドキュメントも揃っておらず
あとから入社した新人エンジニアは、かなり苦労をしていました。
スクラッチ開発を全否定するわけではありません。
ただ、スクラッチ開発をするのであれば、開発後の運用も見越した対応も必要です。
ヘタしたら、開発自体よりもドキュメント化や運用のための準備のほうが手間がかかることだってあります。
エンジニアのエゴで、他のエンジニア、お客様に苦労をかけてしまうということは、本末転倒です。
まとめ
今回はシステム開発について僕の考えを書きました。
僕の考えとしては「使えるものは使うべき」です。
オープンソースやパッケージソフト、APIが公開されているSaaSがたくさんあります。
日本国内にかぎらず海外でも、ある機能に特化したサービスが山ほどあります。
その機能が、得意なシステムに任せれば良いだけです。
要件によっては、複数のサービスをつなぎ合わせるだけで、解決するケースもあります。
そうすれば、弊社も幸せだし、サービス提供企業も幸せだし、なにしろそれでコストが削減できてクオリティが高いシステムができればお客様も幸せになります。
エンジニアの変なエゴは捨てて
お客様目線でシステム開発を行うことが大切だと思っています。