The Universal Design Pattern がおもしろそうな件

by tanabe on October 21, 2008

まだ読んでないけど、プログラミング界の戦略サファリかと思いきや、新しい視点の提案なのかな?

Stevey's Blog Rants: The Universal Design Pattern
With this context in mind, I claim that the Properties Pattern is yet another kind of domain modeling, with its own unique strengths and tradeoffs, distinct from all the other modeling schools I've mentioned.

At a high level, every implementation of the Properties Pattern has the same core API. It's the core API for any collection that maps names to values:

  • get(name)
  • put(name, value)
  • has(name)
  • remove(name)

あー、なんか話が見えてきた。

Let me summarize what I think are the key takeaways.

First: this is a critically important pattern. I call it the "Universal" design pattern because it is (by far) the best known solution to the problem of designing open-ended systems, which in turn translates to long-lived systems.

You might not think you're building that kind of system. But if you want your system to grow, and have lots of users, and spread like wildfire, then you are building exactly that kind of system. You just haven't realized it yet.

Second: even though people rarely talk much about this pattern, it's astoundingly widespread. It appears in strongly-typed systems like Eclipse, in programming and data-declarative languages, in end-user applications, in operating systems, and even in strongly typed network protocols, although I didn't talk about that use case today. (Nutshell: a team I know using CORBA got fed up and added an XML parameter to every CORBA API call, defeating the type system but permitting them to upgrade their interface without horking every existing client. Bravo!)

Third: it can perform well! Or at least, "well enough". The playing field for potential optimizations is nearly unbounded, and with enough effort you can reduce just about everything to constant time.

Finally, it's surprisingly versatile. You can use it on a very small scale to augment one teeny component of an existing system, or you can go the whole hog and use it for everything, or just about anything in between. You can start small and grow into it as you become more comfortable with the pattern.

The Properties Pattern is not "just" name/value pairs, although the name/value pair certainly lives at the heart of the pattern.

  

「質問があったらしてください」と言わなくても質問してもらうための4つのステップ

by tanabe on October 21, 2008

はてブで「卒業研究・修士研究時の悪循環を防ごう」というのが挙がっていたので、ぼくがふだんよく使っているツールを紹介しておく。

これはうつを防止するためのツールではなくて、日常のコミュニケーションの中で必要な質問をしてもらうためのツール。企業の中で使っているものだけど、他にも使える場面があるかと思う。

ということで、「質問があったらいつでもしてください」と言わずに質問を受け付けるための4つのステップ。

  1. 今なにをしているの?と聞く
  2. したことの説明を受ける
  3. 受けた説明について、そう考えた理由や今後についての見解を聞く
  4. 最後に、何か困っていることは?と聞く

以上。

詳細の説明は省くけど、それぞれに4つ目の質問が出てきやすいようなトリックが入っているのでバカ正直にこの順で毎日会話をすればいい。

ここに書かれていないことで前提の条件になりそうなこと(心構えとか)もいくつかあるけど、それは以前紹介した「この「聞く技術」で道は開ける」とか「3分間コーチ」とか読むとよいと思う。

ちなみに、「質問があったらいつでもしてください」は「質問がなければ声をかけるな」というメッセージも伝わってしまうので、ぼくは意識的に避けるようにしてます。

今読んだら、元ネタのコメント欄も興味深かった。  

固有 ID 問題

by tanabe on October 15, 2008

追記。5秒でわかるまとめ

この記事から。

最近、携帯の端末IDとセキュリティの話を考えていた。

そして、今まったく別のことを調べていて偶然見つけた結城浩さんの固有 ID のシンプル・シナリオがおもしろかった。特に Q&A の項はおもしろい。

日付を確認すると、2003 年に書かれたものなんですね。

あわせて読みたい。

  

達人プログラマーからのプレゼント。

by tanabe on October 14, 2008

pragprog.com から 20%OFF のクーポン届いてた!

5周年おめでとう!&クーポンありがとう。

年末までに何買うか決めないと。このチャンスにまとめ買いかなー。

  

初るびま

by tanabe on October 03, 2008

るびまにレポートを寄稿。感無量です。

今もよくお世話になっていますが、Ruby を使い始めて以来、るびまに育てられたと言っても過言ではないくらい、いろいろな記事を繰り返し読んできました。

Ruby に関するまとまった文章としては、リファレンスマニュアルに継いで世話になった回数が多いのは間違いありません。

ささださんの

るびまを続けていきたい人、何かやってみませんか?

via Rubyist Magazine 4周年に寄せて

の言葉もありますし、次回以降も何かしら関わることができたらいいなと思います。