私はいま、一つのWEBサービスを一人で開発しています。
フロントエンド、バックエンドAPI、DBの設計、ネットワーク設計などすべてです。
なぜそんな開発をしているかというと、チームで行うよりはるかに速い、早いからで、それに尽きます。
開発現場の常ですが
WEBサービスでフロントエンドの処理、例えばよくある会社の社内チャットの参加者をDBから引いてきたり、スレッドのテキストを範囲を指定して取得してきたり、それをUIに表示したりという機能があったとします。
これを、バックエンドAPIからユーザーに紐づくいろんなスレッドをまとめて取得してきてフロントエンド側でスレッドごとに分類、表示する処理を実装している際に
『バックエンドAPIで分類したものを細切れで取得したほうがいろいろなケースで効率的』という結論に至った場合・・・
もしチームで開発していて自分がフロントエンド側だとすると、バックエンド側を担当するプログラマーにこれを相談し、プロマネかディレクターに変更を相談し、その手間や工数の変更を受け入れてもらうために情報を整理し、資料を作り、説得する必要があります。
この過程を経るだけでも相当なコストが掛かりますし、その上こうした『相談』というのは、そもそもはユーザビリティ的にどちらが優れているか、とか、サービスの将来性を考えると現時点ではどちらがベターか、という視点からずれて、往々にして『こないだも変更があって手間がかかった』とか『こいつはいつもワガママばっかり言う』とか、果ては『お前の顔が気に入らない』レベルの感情論からマウントを取り合うポジショントーク炸裂の不毛な議論になりがちです。
また、まともな議論だとしても、インターネットを経由するデータが変わるのであればセキュリティポリシーに照らしてどうか、などの評価を経る必要があります。
これがこの1回で済めばいいですが、さらに構築を進めていくと、新たな課題を解決するためにさらに変更する必要が出てきた場合はもう泥沼の修羅場になります。
逆の立場で見ると、度々変更が発生するシステム開発に携わっていると、無限ループの沼に引きずり込まれる拒否感で夜も眠れなくなるのも確かです。
思い立ったらデータベースの設計変更も5分で完了
これがUIの一部の機能などであればまだましですが、処理の効率化を図るためにはDBのテーブルに中間テーブルをはさんだほうが検索がはるかに速いぞ、となったりした場合、相当厄介なミーティングを重ねる必要があります。
こうなってくると、もう【良いサービスを作る】とかではなく【とにかく自分に神経性の難聴や腰痛が起こる前にプロジェクトを完了する】というのが優先事項になり、結果金をかけチームをそろえて開発したものがとてもつまらない形に仕上がることになります。
ですが、フロントエンドもバックエンドも、DB設計もインフラ設計もネットワーク設計も全部自分で行っていれば、5分で解決します。
DB設計書に新たな設計を書き込んで、全テーブルを削除し、全テーブルをCREATEすればいっちょ上がり!あとはそれに合わせてデータを取得するモデル部分、それを受け渡すバックエンドAPI、受け取るフロントエンドアプリケーションを修正するだけ!
内容によりますが、【このサービスをより良くするためには】【このサービスの将来性を担保するためには】この作業に3~4時間かかるな…と思いたったら即実行できます。
もしチームで開発していたら、ここまでのフェーズを経て改変実装完了までに優に1~2週間かかります。みんな自分とその仕事を尊大に見せたいので、DB担当者、モデル担当者、フロントエンド担当者やプロマネがもっともらしい理由を10でも20でも挙げて、それを困難にするからです。
評価は最後にまとめて
セキュリティ評価も、可用性評価も最後に行えば済むことは多くあります。
もちろんソースコードに一定のレベルやルールが必要ですが、それを守れば最後にまとめて評価を行うことが出来る部分は多くありますし、そもそも一人で開発していれば、個人情報の重要度レベルを勘違いして一部のパートを開発してしまった、のような信じられない事故も起きません。デイリーのバッチ処理が25時間かかるなんてことが後でわかる、なんてことも防げます。
何が言いたいかというと…
一人アジャイル最高!っていう事です。
本当に作りたいサービスがある時は、初回評価版を開発するまではそれに限ります。
もうちょっと一般的な業務に合わせた言い方をすると、、
プロマネが初期に時間をかけて自分ひとりで評価版まで開発する。
その後、社内や関係者レビューを経て、必要に応じて専門の担当を入れてUI/UX、通信セキュリティ、個人情報セキュリティなどのパートを埋めなおしてプロダクション版を開発する。
当然中身を最もよく知っている初期担当者がそのままプロマネとして開発に携わる
が公開が最も早くてよいものが創れるのではないかと、考える次第です。
異論は認めます。。
コメント