SSブログ

Breakable Toys [プログラマー現役続行]

Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman

Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman

  • 作者: David H. Hoover
  • 出版社/メーカー: Oreilly & Associates Inc
  • 発売日: 2009/10/21
  • メディア: ペーパーバック

ソフトウェア開発者としては、自分の技量を伸ばす練習のために、壊しても良いオモチャが必要だと述べられています。まず、冒頭の引用としては、Paul Graham氏とDonald Knuth氏の言葉が引用されています。
You can't do anything really well unless you love it, and if you love to hack you'll inevitably be working on projects of your own.
Paul Graham, Hackers & Painters

好きでなければ実際に何もできません。そして、プログラミングすることが好きならば、必然的に自分の プロジェクトに取り組むことになります。

We can all benefit by doing occasional "toy" programs, when artificial restrictions are set up, so that we are forced to push our abilities to the limit.
Donald Knuth, The Art of Computer Programming

私達はみんな、「オモチャ」のプログラミングをすることで得るものがあります。人工的制約がある ことで、自分達の能力を限界まで試されることになるのです。

また、本文中では、次のようにも説明されています。
If experience is built upon failure as much as success, then you need a more or less private space where you can seek out failure. In juggling, the three-ball juggler who never attempts five balls never makes the step up. Yet the one who gets backaches from having to pick up dropped balls for hours on end will eventually get it right. The same lesson applies to software. Just as the three-ball juggler would not attempt to juggle five balls during a performance, software developers need a safe place to make mistakes.

経験は、成功と同じように失敗によって蓄積されます。そのため、失敗を追求できるプライベート空間を多かれ少なかれ必要とします。ジャグリングでは、5つ玉を一度も練習したことがない3つ玉のジャクラーは、決して進歩しません。けれども、何時間も続けて落としたボールを拾うことことで背中が痛くなったジャクラーだけが、最後には上手くできるのです。ソフトウェアにも同じ教訓が適用できます。 3つボールのジャクラーは、人前で行う演技で5つボールをジャクリングしようと試みないのと同様に、 ソフトウェア開発者も間違いを犯すための安全な場所が必要なのです。

残念ながら、多くのソフトウェア開発者は、お客様の前、つまり、開発の現場で、練習をしています。仕事として開発するソフトウェアは、Breakable Toysには決してなりません。私自身を振り返ってみると、仕事で開発する以外のソフトウェアとして、多くのBreakable Toysを作ってきました。

就職して担当した開発は、XNS(Xerox Network Systems)と呼ばれるプロトコルをUnix(のクローン)上に設計・実装することでした。それで、製品ではないですが、ツールとして以下のものを開発しました。
  • nsmail メール読み取り
  • nspost メール送信
  • nsprint プリント
  • nsfile/nsftp/nsfiletool ファイリング
これらは、当時開発していたFuji Xerox 6060 Workstation(1986年5月発売)の開発環境で動作するツールとして作成したのですが、VAX用4.3BSD、Sony NEWSワークステーション、SunOS4.1,Solaris 2.3へUnixに移植しました。

ゼロックス社では、古くから電子メールシステムがあり、メーリングリスト(当時は、DL: Distribution Listと呼んでいました)を管理するためのMaintainToolというのがあり、もともとはMesa言語で書かれていたのですが、C言語で書き直してUnix上で動作するバージョンを作成して配布しました。

現在では当たり前になっているPtoPのチャットツールとしてMessagingToolと呼ばれるツールが、Xerox社内ではかなり昔から使われており、ボーイング社などの顧客にもStarワークステーションの一つのアプリケーションとして提供されていました。もともとは、Mesa言語で書かれていたのですが、私自身が1991年に完全にUnix環境へ移った時に、MessagingToolが利用できなくてかなり不便を感じて、Mesa言語版と通信互換性のあるC言語版をSolaris用に作成しました。

MessagingToolは、1996年にJavaの勉強を兼ねてJavaで再度実装し直して、2007年ぐらいまで仕事でも使っていました。

これらのツールは、最初のバージョンを作成して社内に配布し、ユーザからの要求を取りれて機能追加を行い再配布を繰り返して、数年に渡ってエンハンスしました。実際の製品用のソフトウェアではないために、何度も書き直したり、使ったことがないライブラリーの機能を使ったりしていました。その意味で、私にとっては「Breakable Toys」だったのだと思います。

最近では、私のホームページがその一つです。あまり、凝っていませんが、Google Web Toolkitを使用して構築しています。

「プログラミング言語Java」教育で課題にしていたGUI課題(デジタル時計)も、受講生にとっては練習の場となるBreakable Toysだったと思います。

ちなみに、この「Breakable Toys」の節には、Linus Torvalds氏の最初のLinuxのアナウンスのメールが掲載されています。

nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0