Extream Programmingは過激なんかじゃない
これは、昨晩友達とDeep Rock Galacticで時間を浪費していたときのことだ。
「敵が多すぎる。」
「難易度Extremeにしといた。」
「Extremeってどういう意味だ。」
「極端とか、過激とか。」
XP(eXtreme Programming)とかあるよね。と発言しようとしたが、非プログラマーが知っている訳もなく、私は何か他の使用例を考えていた。そこで、別の友人が言う。
「Extreme usersとか言うでしょ。」
「聞かねーよ。どういう用途だよ。」
「サングラスかけて俺はまだまだいけると夢見ちゃっているホームレスのおじさんとか。」1
「そんなやついねーよ。エクストリームなユーザをマーケットでターゲッティングして…。とかそういう事普段から言ってるの?」
そう。彼は皆さんが好きなMBAタイプの人間だ。そして、彼がときどきこのブログを見ていることを私は知っている。
「そうは言わない(笑)」
さて、ここまで出てきたExtremeの使用例を考えてみよう。これらはどれくらい過激なのだろうか。
- Deep Rock Galacticの難易度Extreme
- Extream users -- サングラスかけて俺はまだまだいけると夢見ちゃっているホームレスのおじさん
- Extream Programming
私はXPに詳しいわけではないのでWikipediaの解説を読んでみよう。
エクストリーム・プログラミングの他の要素には、ペアでのプログラミングや広範なコードレビューの実施、すべてのコードのユニットテスト、機能は実際に必要となるまでは追加しない、フラットな管理構造、コードのシンプルさと明快さ、時間の経過とともに問題がよりよく理解されたことでの顧客の要求の変化を期待する、顧客やプログラマーでの頻繁なコミュニケーションなどがある。この方法論は、伝統的なソフトウェアエンジニアリングのプラクティスの有益な要素を「極端な(エクストリームな)」レベルに持っていくという考えからその名前を取っている。例えば、コードレビューは有益なプラクティスと考えられており、これを極端にすれば、コードを「継続的」にレビューする、つまり、ペアプログラミングのプラクティスとなる。
今日の視点から見るに、ペアプログラミングがExtreamかと言われても、しっくりこない。テスト駆動にしても残業禁止にしても、4人でさばけない程の敵の湧き方をする難易度のDeep Rock Galacticや、ましてや、サングラスかけて俺はまだまだいけると夢見ちゃっているようなホームレスのおじさんには到底及ばないのではないか。
それにしても、件のホームレスはどう考えても\(2σ\)の外の領域だろう。ここまでのエッジケースを扱う意味はあるのだろうか。一体全体彼は、普段何を議論しているのだろうか。
More info
[1] OpenAIのCreate image APIで生成したら思いのほか出来が良かったのでのせた。