10.1 「人はもう生まれず、育てられる」
まだここにいるってことは、続きを話そう。「そしてウサギの穴がどれだけ深いか見せてあげる」(ц)
じゃあ、プロダクトの開発プロセスについて教えるね。最上位のグローバルなレベルから、コードを書く最下位のレベルまで順を追ってみていこう。いくつか面白い発見が待ってるかも…
現代のITプロダクトはもう書かれない:作られる。ライブラリ、フレームワーク、外部プログラムやプロダクトから部品を集めたり、有料や無料のオンラインサービスを利用したりするんだ。
現代のプロダクトは、技術、サービス、ソリューション、プロセスの動物園みたいなもの。作業の一部は人が行い、一部は自動化されている。残りの90%はデータセンターのクラウドサービスが行っている。もう世界は昔のままじゃないさ。
最初に気づくのは、常に変化していることだろう。もうプログラムを書くことはない:それに変更を加えるんだ。
10.2 常に変わる変化
仕事に出て、5年もプロダクトに取り組んでいる20人のチームに加わる。今、ユーザーに提供されているのはそのプロダクトの7番目のバージョン。あなたの仕事は、そのプロダクトに変更を加えること。今いるアクティブなユーザーを怖がらせないように小さくね。
これは簡単じゃないよ。だってプロダクトはもう動いているし、クライアントもいてお金を払っている。だから壊しちゃダメなんだ。既に動いているプロダクトに変更を加えるのは、新しいものと比べて数倍難しい。特別なスタンダード、プロトコル、移行手順、ユーティリティが用意されている。とあるジョークを思い出すね:
古い友達が出会う:一人はメカニック、もう一人は外科医…それぞれの人生、心配事、幸せがある…いろいろと話しているうちに給料の話になる。メカニックが「まぁ、月に30万もらえて満足しているけど、君はどのくらい?」って言うと、心臓外科医が「そうだね、手術一回でおよそ10万かな」…メカニックは興味を持って「不思議だな、こんなに差があるなんて。お互い同じことをしているはずなのに、部品を交換するだけさ」と言うと、外科医は「じゃあ車のところに行こうか、エンジンをかけて」…メカニックがエンジンをかけると、外科医はボンネットを開けて言う「ほら、エンジンが動いているだろ? 交換してみて! :)」
奇跡的に、チームが1年かけてゼロからプロダクトを書いて、ようやくリリースしたとしても、その後に何が起こると思う?
プロダクトが成功したら、オーナーはそれを発展させたくなる。新しいバージョンをリリースしたり、機能を追加したり、いくつかの実験を行ったりしたい。そうなると、やっぱり変化がやってくる。
10.3 プロダクトの価値
現代のプロダクト開発の観点から見ると、価値があるのはリリースされたコードと、ユーザーが使っている機能だけ。コードを書いて保管されていても、誰も使っていなかったら、その価値はほとんどゼロだ。だから、すべてのコードはできるだけ早くProductionに持っていく必要がある。
コードが経るべき段階はこうだよ:
- コードを書いて、ちゃんと動くことを確認する
- TeamLeadがレビューして、Gitのメインブランチに追加する
- プログラムビルド中のテストで、重要なものを壊していないことを確認する
- 統合テストでプロダクトがうまく動いていることを確認する
- テスターがこのコードを確認し、リリースの許可を出す
- その後、プロダクトの新しいバージョンをビルドしてサーバーにリリースする
- 新しいバージョンをDocker Imagesにパッケージしてリリースする
- 必要なら、移行スクリプトを走らせたり、データベースや他の第三者ソリューションに変更を加える
- その後、サーバーのログを集めて、すべてがちゃんと動いているか確認する
- もし何か問題があって壊してしまった場合は、元のビルドに戻し、データベースの以前の状態に戻して、ユーザーが不安定なバージョンで行った行動を失わないようにする必要がある
今のほとんどの会社ではこれらのタスクは解決済みだ:新しいプロセスが構築され、特別な人材が雇われたり、特別なセキュリティプロトコルや品質管理の基準が導入されたりしている。
会社が大きくなるほど、コードが書かれてからProductionに入り、価値が生まれて人々に役立つようになるまでの時間が短くなる。
ほとんどの会社では、コードがこのプロセスを経るのに2週間かかるが、毎週、あるいは毎日リリースを行う会社もある。特別なユニークな会社は一日数回リリースすることもある。
書かれたコードには価値がない。価値を生むのはProductionで動いているコードだけだ。
GO TO FULL VERSION