2012/02/08
Genius is in the choices
前のエントリ(『書かれなかったもの』)ではプログラミングにおける具体的な取捨選択を取り上げたけれど、 さらに考えてゆくと、やっぱりどんな分野でも創造過程の中心にあるのは選択なのかもしれないと思えてきた。
表題の "Genius is in the choices" はデニーロだったかショーン・ペンだったかが "Inside the Actors' Studio" の中で言ってたことなんだけれど、 つまり、脚本が与えられた時、それを何らかの形で演じることは誰にでもできる、 差が出てくるのはその先、全ての可能性からどれを選択して演じるかってことなんだ、という話。 ("choice"という言葉は芝居の現場で良く使う。"You made an interesting choice."とか"Brilliant choice!"とか。)
役者は個人作業で様々な可能性を検討し、実際にやってみて練り込んでゆくし、リハーサルの場でも色々なアイディアを試して選択してゆく。試せば試すほど、新しいアイディアが産まれる土壌が醸成されてゆく。
何でもいいからとにかく何か作る、って時に必要なのは体力と技術で、 これは誰でも訓練すれば伸びる。伸びれば作れるものの幅が広がり、出来も良くなる。 でもそれは、その後により良い「選択」をするための、準備なのだろう。 体力と技術が足りないと、そもそも出来るものの幅が狭いので、選択のしようがないから。
2012/02/08
書かれなかったもの
プログラムを書かない人がプログラムを読んだときにする良くある間違いは,ああこんなプログラムなら自分にも書けそうだと思うことだ.プログラムは何百万とある可能性からたったひとつ(は言い過ぎにしてもわずかながら)の正しい方法を残したものであり,この捨てる能力こそがプログラマの実力だから.
ああ、以前『引き算の技術』というのを書いたことがあったけど、上に引用した文の方がずっと的確でかつ具体的だなあ。
「たったひとつの可能性を選び取って残りは捨てる」とだけ言うとわりと何にでも適用できる概念のようだけど、ことプログラミングに関しては、「本当に捨てる」ことは珍しくない。つまり、実際にいくつも作ってみて、ベンチマークを取ったりしばらく実際に使ってみたりして、ベストと思えるものだけを残す。捨てられたものはバージョン管理システムのブランチくらいにしか残っておらず、ソースを見ても何が捨てられたのかはわからない。
経験を積めばいちいち書かなくても見当をつけて選択肢を枝刈りできるけれど、経験者が散々議論してもアイディアが3つくらいに絞られた時点で「あとは実装してベンチとらないと何とも言えないね」ってなることはよくある。しかも、大抵一番難しいのは実装すること自体ではなくて、実装間の比較をうまく行えるような環境を作ることの方だ。(逆に、比較のためのフレームワークがちゃんと出来ていると、がんがん実装を試せるので進化がとても速くなる)。で、完成品のソースコードにはそういう実験のための環境ってのはやっぱり含まれてない。
人が作ったものを見て、ぱっと「なんかうまくないなあ、こうすればいいのに」って思うことはよくあるけど、自分も同じものを作って試してみた経験が無い限り、一旦立ち止まって考えるようにしている。こうすればいいのに、っていう他の方法は既に試し尽くして、うまくいかなかったから今の方法になってるのかもしれない。
(もっとも「他の方法は試してみてダメだった」ってことがわかっててもやっぱり今の方法はダメだ、って場合があるからややこしい。つまり、試しかたがダメだった、ということである。)
(追記2012/02/09 06:41:08 UTC): ソフトは一度リリースしたら完成ってもんじゃなく、むしろ生物のように新陳代謝しながら生きながらえてゆくので、一度本体から捨てたものでも将来のために取っておきたい、ということはある。将来の人が同じ轍を踏まないためにも、また将来条件が変わって捨てた選択肢が復活するという可能性のためにも。
自分は、コードそのものは可能ならブランチに取っておいて、ベンチマーク結果や実験の概略などはパブリックなものならWiLiKi等に、仕事上のものはイシュートラッカ等に残すようには心がけている。多分重要なのはレポートの方で、コードはメンテしない限り本体の進歩からすぐに取り残されてしまうので、歴史的な資料価値しかないだろう。レポートの方はちゃんと書いておけば、将来アイディアをまた試したい時に大いに参考になる。ちゃんと書くのは手間がかかって大変なんだけれど。
そんなわけで、「紆余曲折色々試してこうなりました」っていう紆余曲折の部分が書いてある論文は読んでて面白い。プロジェクトのpost mortemリポートとかも。
Tag: Programming
2012/02/06
在宅勤務
HsbtDiary (2012-02-06) 在宅勤務期間の開始 を読んで、そうだよなあと。
日本での在宅勤務の議論ではよく「会って話さないとだめなことがある」ってのが出るけど、「家で一人きりで仕事」と「出勤して顔を合わせる」との中間に「電話 (ネット越しの音声会話、ビデオ会話含む)」ってのがあって、「会って云々」の要素の大部分は電話で済むことが多いんじゃないかと思う。
仕事にもよるけど、今コンサルで入ってるプロジェクトは拠点はベイエリアだけどお客さんは方々に散らばってるので、「お客さんとのやりとり」もカンファレンスコールが基本だ。あとチームミーティングが週3回、電話。メールで議論してて込み入ってくると電話。リリース直前にサブミットしたパッチがコンフリクトしたら電話。そもそもベイエリアに住んでいる社員だって毎日出社してるわけじゃないし。
プロジェクトの開始時には、1週間全員で集まってキックオフミーティングをやった。全員の知識や目標を同期するには対面は手っ取り早い。状況に合わせて素早くピボットしてかないとならないプロジェクトだと、方向転換の度に足並みを揃えたいので、対面の重要性は増すだろう。でもわりと方向性がはっきりしててひたすら改善してゆくってプロジェクトなら、たとえ開発サイクルが速くても、対面の必要性はあまり感じないし、むしろ対面ミーティングのオーバヘッドは足を引っ張るんじゃないかという気もする。
ただ、日本とアメリカで「音声のみによる議論の重さ」っていうのが違うような気もするんだよね。ってことは以前書いた (『オーディオブックとオーラルコミュニケーション』)。この仮説が正しければ、日本の方が在宅勤務導入は難しいかもしれない。
2012/02/05
Punahou Carnival
昨日はPunahou Schoolの ファンドレイジングイベントであるPunahou Carnivalに子供と行ってきた。移動遊園地がやってくる。らむ太は遊園地的なものに触れることが滅多にないので、 Punahou Carnivalはもう半年以上前から楽しみにして、あれに乗ろうこれに乗ろうとプランを立てていた。 ところで今年はキンダーの仲良し友達3人で回ったのだけど、それぞれやりたいものがばらばらで (らむ太はライド系、それもスリルのあるやつを好むんだけど、ライドよりミニゲームが好きだとか、ライドでも好みが違ったりとか)、 この年頃だとまだ自分のやりたいことと一緒に楽しむことの折り合いをうまくつけるのが難しそうだった。
日本やメインランドにある常設の遊園地に比べたらまったく大したことはないのだけれど、 年に数日だけ現れるという移動遊園地の性質は、むしろそれが非日常のハレの場にふさわしいような気もする。 スティーヴン・キングの「Dead Zone」にカウンティ・フェアの場面が出てくるけど、 こんな感じだったのかなあ、などと思ったり。
Tag: 生活

Comments (0)