Fine Software Writings 再読
(2010/10/19追記) 続き書きました
ここ最近ずっと、青木さんのサイトを読み直しています。
なぜ急に思いついたかというと、はてブでお気に入りに登録しているどなたかが青木さんのサイトの古い文書をブックマークしていたのを見て久しぶりに読み直したくなったというただそれだけのことです。
私が最初に青木さんのサイトの翻訳を読んだのがいつかは覚えていません。最初にブックマークしたのは2008年1月と随分新しいようです。
確かに今回読み直した文書の多くは以前読んだという記憶があるものでしたし、内容のあらすじも頭に残っているものばかりでした。しかし読む文書一つ一つに新しい発見があり、思わず夢中になって読んでしまいました。
はてブに登録しておけばいいやとも思ったのですが、あまりに参照しづらいここに自分用メモとしてまとめておくことにします。
といっても、青木さんの翻訳はあまりに分量が多すぎてとてもまとめきれないので、とりあえず今回はサイト右側に並べてある「人気のあるページ」を中心に紹介することにします*1。
やる気に関する驚きの科学
http://www.aoky.net/articles/daniel_pink/dan_pink_on_motivation.htm
1年ぶりに読み直しましたが、Atlassian が紹介されてたのは読み落としてました。
Atlassian は BTS の JIRA や、企業向け wiki の Confluence などで有名な会社ですね。
その会社には「Fedexの日」という日があるそうです。
1年に何回か、エンジニアたちに言うのです。「これから24時間何をやってもいい。普段の仕事の一部でさえなければ何でもいい。何でも好きなことをやれ」。エンジニアたちはこの時間を使って、コードを継ぎ接ぎしたり、エレガントなハックをしたりします。そしてその日の終わりには、雑然とした全員参加の会合があって、チームメートや会社のみんなに何を作ったのか見せるのです。
Google の有名な「20%ルール」の前のステップとして位置づけていますが、私は Fedex の日の方が他の一般的な企業でも導入しやすいのではないかと感じました。20%ルールを導入しようとして失敗した会社を私はいくつか知っていますが、めげずにこちらも試してほしいものです。
最初の一歩は始めること
http://www.aoky.net/articles/jason_zimdars/the_first_step_is_to_start.htm
これは非常に最近の文書ですので簡潔にいきます。
君はたぶん必要なスキルが何かさえ知らないだろう。だったらそれについて心配なんかしないことだ。すでに知っていることを使って始めればいい
ここが全てですよね。
どうしてプログラマに・・・プログラムが書けないのか?
http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm
この記事も随分たくさんブックマークされていますし、さぞ多くのエンジニアが読んだことでしょうが、3年経った今では状況に変化はあるのでしょうか。
多分最初に読んだ頃は2つかそこらの言語でしか FizzBuzz を書けなかったでしょうが、多分今は 5,6 個ぐらいの言語なら楽に書けるでしょう。だから何だと言われればそれまでですが。一応自分も少しは成長した……と思います。多分。
プログラミングの6大10項目リスト
http://www.aoky.net/articles/jeff_atwood/top_6_list_of_programming_top_10_lists.htm
ブックマークしたのが昨年末なので読んでからまだ一年経っていないはずですが覚えてません。
今読んでもやっぱりあまり頭に入りませんでした。まだレベルが低いのでしょうか。
ソフトウェア開発者のための推薦図書
http://www.aoky.net/articles/jeff_atwood/recommended_reading_for_developers.htm
2004年の文書ですが、名著と呼ばれているものがずらりと並んでいます。
ほとんど読んでないです。まともに読んだの「人月の神話」ぐらいでしょうか。
うーむ。
いいアジャイルと悪いアジャイル
http://www.aoky.net/articles/steve_yegge/good_agile_bad_agile.htm
この原著者の Google 礼賛ぶりは凄まじいものがありますし、私のようにアジャイルの a すら知らない人間がこの記事読んだだけでアジャイルを論じるというのは自分の無能を晒すようなものですのでここではしません。ですが以下の一文はいいなと思いました。
作業キュー(もちろん優先度つきだ)さえあれば、アジャイル方法論の魔法の利点だとされていることの多くは即座に達成できる。そして間違わないで欲しいのは、それはインデックスカードの山ではなく、ソフトウェアに入れた方がいいということだ。納得できないというなら、あなたのインデックスカードを取ってしまうから。
アジャイル云々の真偽はともかく、優先度つき作業キューという言い方が非常にしっくり来ました。TODOリストでも GTD (そういえば最近聞かなくなった) でもチケットでもなく priority queue。最近 TODO リストも真面目に書かなくなっていたので試しにやってみたら、確かに効率はよくなりますね(別にソフトウェアに入れたわけじゃありませんが)。多分飽きるまでやります。
頭の中にプログラムを入れる
http://www.aoky.net/articles/paul_graham/head.htm
気が散ることを避けること。気が散るというのはどんな仕事でも不都合なものだが、プログラミングにおいてはとりわけ不都合であり、プログラマというのは扱いうる限界まで詳細を突き詰めて考えているからだ。
最近気を散らせすぎていたのでこれは反省ですね。
ですが、
長時間続けて働く。プログラムに取りかかるときに毎回一定のコストが発生するのだから、短いセッションを何度もやるよりは、回数の少ない長いセッションをする方が効率が良い。もちろん疲れから頭が働かなくなる時点がくる。その長さは人によって違っているようだ。休みなく36時間ハッキングする人たちの話を聞いたことがある。私の場合は一番長くて18時間くらいで、12時間を超えると効率が落ちる。
これは私には無理です。
もって数時間といったところでしょうか。
頭脳のスタミナが足りないのかもしれません。
スタートアップの始め方 & 社会運動はどうやって起こすか
http://www.aoky.net/articles/paul_graham/start.htm
http://www.aoky.net/articles/derek_sivers/how_to_start_a_movement.htm
通して読んでいて、この異なる2つの人物が同じことを言っているのに気づきました。
Paul Graham は常々、「共同創業者を見つけることがスタートアップに重要」と言っています。
創業者は2人から4人の間が理想的だ。たった1人で始めるというのは難しすぎる。1人で会社を立ち上げることの精神的な負担に耐えるのは困難だ。相当な精神的負担でも耐えられそうに見えるあのビル・ゲイツでさえ、共同創業者を必要としたのだ。
Derek Sivers の有名なこの TED の講演でも、同じことを言ってるんですよね。
最初のフォロワーというのは、過小評価されていますが、実はリーダーシップの一形態なのです。こんな風に目立つだけでも勇気がいります。最初のフォロワーの存在が、1人のバカをリーダーへと変えるのです。
失敗した結婚みたいな企業が多すぎる
http://www.aoky.net/articles/kathy_sierra/too_many_compan.htm
内容もいいのですが、写真がとにかく面白い。是非リンク先を見ていただきたいですね。
いい結婚生活のための秘訣が何かというと・・・変わらないということだ
熱狂的なユーザがほしいのなら、うまくいった結婚から教訓を学び、火花を散らし続けることだ。「確実」なものになったからといって、それを当たり前のことと思っていいわけではない。
これって簡単に言ってますけど、相当難しいですよね。
結婚も仕事も大変ですねー(他人事)
まとめ
いい文章というのは読むたびに新しい発見があるとはよく言いますが、青木さんの訳した文書もその意味でもまさに名著と言えるでしょう。
数年前は分からないことも多いまま読んでいたのでしょうが、おそらく今回は以前より遥かに多くのものを感じ取れたのだろうと思います。
青木さんのサイトには自分が読んだことのない文書もたくさんありますので、しばらくの間はじっくり読んで楽しむことにします。
*1:次があるかどうかわかりませんが