More Joel on Software

More Joel on Software (単行本(ソフトカバー))Joel Spolsky著, 青木靖訳『More Joel on Software』(翔泳社, 2009)

『Joel on Software』(オーム社, 2005)に続くJoel Spolskyのエッセイ集第2弾。第1弾はとてもいい本で、私もC++本執筆時にはかなり参考にさせてもらいました(Joelが警告するMicrosoftの罠に私の本の読者がかかってしまうということがありませんように)。第2弾は第1弾よりもマネージャ側の話が多い気がしますが、いい本であることに変わりはありません。ブログの記事がもとになっていて、一部ウェブ上で翻訳・公開されています。とはいえ、購入して、ページを折りながら、付箋を貼りながら、書き込みながら読む価値はあると思います。

  1. はじめてのBillGレビューのこと
  2. 優れた開発者を見つけるには
  3. 開発者観察ガイド
  4. マネジメント法3種(イントロダクション)
  5. 指揮統制マネジメント法
  6. 入門経済学マネジメント法
  7. 一体化マネジメント法
  8. Javaスクールの危険
  9. イェールでの講演(原文1, 2, 3
  10. コンピュータサイエンスの学生へのアドバイス
  11. フォントスムージング、アンチエイリアス、サブピクセルレンダリング(原文
  12. 競り合いのゲーム(原文
  13. ビッグピクチャー
  14. 選択肢=頭痛
  15. ユーザビリティがすべてではない
  16. ソフトウェアで作るコミュニティ(原文
  17. 火星人のヘッドセット(原文
  18. Microsoft Officeのファイル形式はどうしてあんなに複雑なのか?(およびその回避方法について)
  19. ごみあるところに金はある(原文
  20. エビデンスベーススケジューリング(原文
  21. ストラテジーレターVI
  22. 君のプログラミング言語で、これ、できる?
  23. 間違ったコードは間違って見えるようにする
  24. Eric Sink on the Business of Softwareへの序文
  25. マイクロISV ̶ ビジョンから現実へ
  26. ソフトウェアにおける高音域
  27. バイオニックオフィス(原文
  28. チュチュなしであんよする(原文
  29. シンプルさ
  30. ラブ ア ダブ ダブ
  31. ベータテストを成功させる12のコツ(原文
  32. 心に残るカスタマサービスへの7ステップ
  33. リリース日をどう決めるか(原文
  34. ラクダとおもちゃのアヒル
  35. なぜなぜ5回(原文
  36. 優先順位を決める

以下は気になったところ(一部)

入門経済学マネジメントのもう一つの大きな問題は、人々が極大を求めがちになるということだ。(中略)たとえば顧客と引き留める係の人は、顧客を保持することで得られるボーナスを望むあまり、顧客を怒り狂わせても気にかけなくなる。(p.40)

最近は怒り狂うと言うよりは同情するようになってきました。

長年にわたる私のような怠惰なコンピュータサイエンスの学生の泣き言と、アメリカの大学のコンピュータサイエンス学科を卒業する学生の少なさに対する産業界からの苦情が功を奏して、この10年の間にたくさんの大学がJava 100%へと移行した。Javaは流行っているし、履歴書の評価に”grep”を使っているリクルーターには気に入られており、何よりポインタや再帰を理解する脳みそを持ち合わせていないプログラマをふるい落とせるほど難しい部分がJavaにはないのでドロップアウト率は低くなり、コンピュータサイエンス学科は学生を増やして予算を増やすことができ、すべてがうまくいくのだ。(p.53)

これを皮肉ととらえる必要はないでしょう。

使用がプログラムの動作についてあらゆることを定義するなら、それはプログラムを生成するのに必要な情報をすべて含むことになる!(中略)

これは永久機関のソフトウェアエンジニアリング版とも言うべきものだ。(p.61)

関連する研究をしている人は要注意です。

アイビーリーグの大学でやっていることというと、Unixに関数プログラミングに状態機械の理論だ。もう少し入りやすい大学へと階層を下っていくと、Javaが現れはじめる。さらに下ると(後略)(p.63)

もう少し下もあるようですが、気になる人は本書を手に取ってみるといいでしょう。

ソーシャルインタフェースデザインというのはまだ発展の初期の段階にある。(p.108)

そう、やるべきことはまだたくさんあります。

引用の引用:頑強性原則。出典(RFC 793)の日本語訳

ジョン・ポステル「自分ですることについては保守的に、他から受け取るものについては寛容に」(p.134)

ウェブアプリ本で引用しましたが、この原則は、Tim卿も取り入れています。「自分で書くHTMLはStrictにし、人が書くものはTransitionalでも受け入れよう。」でも、これはこれでいろいろ問題があるんですね。

サンドボックスはペナルティになる。遅くてうんざりする。Javaアプレットが葬り去られた理由だ。(中略)カメラや、アドレス帳や、SMSメッセージやGPSみたいな電話機の機能に、どれでもいいからアクセスできるJavaアプレットが現れるのを私はいまだに待ち続けている。(p.169)

待てるわけがないです。

ちょっと想像してみよう。GoogleはGmailの出来にうぬぼれきっている。しかしどこか聞いたこともない会社が、ああるいはY Combinatorのスタートアップかもしれないが、NewSDKを売り出して人々を強力に引きつけている。それはJavaScriptへとコンパイルされる協力でポータブルなプログラミング言語と、さらにすばらしいことに、あらゆる気の利いた相互運用機能を備えたAjax的ライブラリを持っている。カット&ペーストだけじゃない。同期化にシングルポイントアイデンティティ管理と言ったクールなマッシュアップ機能がある(p.171)

そうぞうしてみよう。

アプリケーションハンガリアンは非常に価値があり、ことにコンパイラがあまり方について有用な情報を与えてくれなかったCプログラミングの時代にはそうだった。

しかしその後まずいことが起きた。

ハンガリアン記法の暗黒面が支配権を得たのだ。(p.193)

ハンガリアン記法にはアプリケーションハンガリアンとシステムハンガリアンの2種類があって、もともとの起源であったアプリケーションハンガリアンは有用だが、現在広く知られているシステムハンガリアンはまったく役に立たない(両者が具体的にどういうものなのかはここでは省略)。

引用の引用(レイモンド・チャン”Cleaner, more elegant, and harder to recognize”

例外を使ったまずいコードと、例外を使ったまずくないコードを見分けるのは、はなはだ難しい・・・・・・例外はあまりに難しく、私は例外を扱えるほどに頭がよくはないのだ(p.196)

最もミッションクリティカルなことに関しては、抽象レベルが望ましいところよりも一段低いものを使えということが。たとえば(当時で言うとQuakeのような)クールな3Dシューティングゲームを作っており(後略)(p.224)

3 thoughts on “More Joel on Software

  1. 研究室に一冊目のほうが置いてあったので、読んでみます^^

  2. しおざわさん
    そこはきっといい研究室なのでしょうね

  3. C言語によるUNIXシステムプログラミング入門

    C言語によるUNIXシステムプログラミング入門
    CとLinux(RedHat)について基本的な理解ができる。

コメントは停止中です。