1.1 「人はもう生まれない、育てられるんだ」
さて、まだここにいるなら、続けようか。「そして、ウサギの穴がどれだけ深いか教えてあげるよ」 ©
まずはプロダクト開発のプロセスについて話そうかな。全体の大きな流れから始めて、最も低いレベルのコーディングまで段階を追っていこう。多分、君は幾つか面白い発見をすると思うよ…
今のITプロダクトは、もはや書くのではなく、作るんだ。ライブラリやフレームワーク、他のプログラムやプロダクトからのパーツを組み合わせたり、有料または無料のインターネットサービスをそのまま利用したりするんだ。
現代のプロダクトは、技術、サービス、ソリューション、プロセスの動物園みたいなものなんだ。作業の一部は人間がやり、一部は自動化されていて、残りの90%はデータセンターのクラウドサービスで実行される。世界はもう昔と違うんだよ。
でも最初に気付くのは、変化が絶えないことだろう。もうプログラムを書くんじゃなくて、 変更を加えていくんだ。
1.2 絶え間ない変化
君が働くようになると、既に5年間プロダクトに取り組んできた20人のチームに加わることになるんだ。今はそのプロダクトの7番目のバージョンがユーザーに提供されている。そして、君の役目はそのプロダクトに変更を加えることだ。それも、現在のアクティブなユーザーを驚かせないように小さな変更で。
これは難しいことだよ。だってプロダクトはすでに動作しているし、顧客がいて、彼らはお金を払っているんだからね。だから壊してはいけない。動いているプロダクトに変更を加えるのは、新しいプロダクトに変更を加えるよりもはるかに難しいんだ。そのために特別な標準、移行プロトコル、ユーティリティがあるよ。こんなジョークを思い出すね:
二人の古い友人が会うんだ。一人はメカニックになり、もう一人は外科医になった…それぞれの人生、心配事、喜びについて話し合い、給料の話になる。メカニックが言うんだ:「まあ、毎月30万円くらい稼いでいて、それには満足しているよ。君はどれくらい?」心臓外科医が答える:「まあ、手術でだいたい100万円くらいかな…」。そこでメカニックが興味を持つんだ:「おかしいな、なんでそんなに違うんだ?同じことをしているみたいなのに - 部品を交換しているだけだよ」。外科医が言うんだ:「じゃあ、車に行こう、エンジンをかけろ…」。メカニックがエンジンをかけると、外科医がボンネットを開けて言うんだ:「ほら、エンジン動いているだろう?交換してみて! :)」
奇跡が起きて、君のチームが1年間かけてプロダクトをゼロから書いて、それをリリースしたとしよう。その後何が起こると思う?
君のプロダクトが成功すれば、プロダクトオーナーはそれを成長させたいと思うだろう。新バージョンをリリースしたり、新機能を追加したりするんだ。少なくともいくつかの実験を行いたいと思うかもしれない。そしてその後に何が続くか知っている?変更なんだよ。
1.3 プロダクトの価値
現代の開発の観点から、価値があるのはリリースされたコードと、ユーザーが使用している機能だけなんだ。もし君がコードを書いて、それがどこかに保存されて動作しても、誰も使わないならその価値はほぼゼロに近いんだ。だからこそ、すべてのコードはできるだけ早くproductionに出るべきなんだ。
君のコードは次のステージを経る必要があるんだよ:
- コードを書いて、それが動作することを確認する。
- 君のTeamLeadがそれをレビューして、Gitのメインブランチに追加する。
- プログラムビルド中のテストで、何も重要なものを壊していないことを確認する。
- 統合テストがプロダクトが必要な動作をすることを確認する。
- テスターがこのコードをチェックしてリリースの許可をする。
- その後、新しいバージョンのプロダクトをビルドして、それをサーバーにリリースする必要がある。
- 新しいバージョンのプロダクトをDocker Imagesにパッケージしてリリースする。
- 場合によっては、移行スクリプトを実行し、データベースまたは他の外部ソリューションに変更を加える必要があるかもしれない。
- その後、サーバーでログを収集して、すべてが必要なように動作していることを確認する必要がある。
- 予期しない状況の場合、何かを壊した場合、ビルドをロールバックし、データベースの状態を元に戻し、ユーザーが不安定なバージョンのプロダクトで作業している間に行った操作を失わないようにする必要がある。
ほとんどの会社では、これらのタスクは解決済みで、新しいプロセスが構築され、特別な人々が雇われ、安全プロトコルと品質管理基準が導入されている。
会社が大きければ大きいほど、コードが書かれてからproductionに入って価値になり、皆に利益をもたらすまでの時間は短くなるんだ。
ほとんどの会社では、コードはこの過程を2週間で経るんだ。しかし、毎週または毎日リリースを行う会社もある。特別な例は、1日に数回リリースを行うところもある。
書いたコード自体は何の価値もないんだ。価値をもたらすのは、productionで動いているコードだけなんだ。
GO TO FULL VERSION