Pythonistaお泊り会
2006.09.29
今日から3日間はオープンソースなプログラミング言語のPythonの人たちのお泊り会です。仕事で使っている人も、趣味の人もいます。平日からの開催にもかかわず30人以上集まっています。仕事は大丈夫なんでしょうか?
これから、3日間にわたって、Pythonの講義やみんなでハックしたりと言う行為が繰り広げられます。
それではまた。
投稿者 : 大谷 弘喜 | 投稿日時 : 2006.09.29 16:26
プログラムのバグ
2006.09.26
ソフトウェアにバグはつきものです。バグの深刻さもピンからキリまでありますが、バグを埋め込むのは人間です。バグのないプログラムを作るのは理想かもしれませんが、現実には不可能です。djb先生ならともかく、すくなくとも、僕には無理でしょう。
ソフトウェアのバグを少なくするために、開発者はテストコードを書いたりしてなるべく早い段階でバグを見つけようとします。僕がいる会社では、その後、開発者自信でテストスペック(単体テスト仕様書)を書いてある一定の品質を保つようにしていました。開発者自身のテストによる品質については賛否両論ありますが、その後に、本格的なテスターによるテストをするためのテストレディあるという品質の維持にはいいかな、と思っています。
その後、本格的なテスターによるテストが行われるはずです。でも、テスターの質によって、実際のテストの「深さ」はまちまちです。つまりは、テスターによってプログラムの品質が左右されます。「テストスペックがあれば、属人性はなくなるのでは?」と言われます。回帰テストならともかく、新しい機能はテストスペック自体を作らなければなりません。テストスペックが出来上がるまでは、テスターに依存することになります。
開発者が一応のテストスペックは書きますが、それを信用してはいけません。いえ、テスターは開発者のテストを信用してはいけません。開発者は無意識のうちに危ないこと、やってはいけなさそうなことを避けてしまいます。多分、人間なら無意識に避けることを防止できないでしょう。目の前に飛んできたボールをよけちゃうようなものです。ただ、僕の会社にはちょっと人間としての道を踏み外したばかりに、開発者なのに自分が作った部分の危険な操作のテストをやってのける人もいますが、それは例外です。
かといって、すべてのテスターの能力を上げることも現実的ではありません。少なくとも短期的に急激にあがることは考えられません。そもそも、テスター本人もテストをして一生飯を食べていきたいとも思っていないこともあります。理由はいろいろありますが、多分、日本ではテスターの地位が低いせいかもしれません。また、テストなら誰でもできるという誤解もあります。確かに簡単なテストなら誰でもでき、開発者になるまえに製品自体を知ってもらうためにテストをしばらくすると言うこともあります。でも、本当にテスターはもっと職人的で、もっとイノベーティブなものだと思っています。多分、僕はそんな領域には到達できないでしょう。
さて、大多数の職人の領域に達していないテスターはどうすればいいのか?と。テストするときに、「テストスペックだけに頼らずにバグを見つける」「テストですべてを網羅できないと適当に行うんじゃなくって、すべてを網羅することを目指す」という意識さえ持ってもらえばいいんじゃないかな。単に努力目標で、テストするときの姿勢なんですが。以前書いた34歳のおじさんプログラマは今は、テストする人になっています。テストスペックを形式的にちゃんと書こうとしてくれますが、話していてもテストスペック通りにやったからいいじゃないか、すべてを網羅することはできないでしょ?と言う答えしかかえってきません。
まあ、どんなにたくさんバグがあろうと、お客さんがそのバグをつつかなければいいんですけどね。
投稿者 : 大谷 弘喜 | 投稿日時 : 2006.09.26 15:13
エンジニアの奇妙なモチベーション
2006.09.21
僕は開発者の生産性を最も左右するのはモチベーションだとともっています。ひょっとしたら僕だけかもしれませんが・・・。モチベーションがあるのとないのでは、生産性に明らかな違いが出ます。モチベーションがなくてもやれと言われればやりますが、その場合は、出来上がるスピードは遅く、品質も落ちるし、創造性のかけらもありません。
さて、生産性を大きく左右する開発者のモチベーションですが、普通の大人の世界では考えられないほど単純なものです。普通の大人の世界では、モチベーションを上げるために報酬(つまりはお金)が左右することもありますが、僕が知っている開発者はほとんどが報酬によって大きくモチベーションが左右されることはあまりありません(多少左右されることはありますが)。
開発者を知らない経営者からみるとこれはとても厄介なことです。モチベーションをどうすればコントロールできるかわからないからです。でも、実はそれはとても単純なことでコントロールできるのです。
一つは、純粋に技術的に面白いことをやらせることです。まあ、興味があることを楽しんでやるのは当たり前のことですね。ただ、この方法だと経営者はやることは何もありません。現場のマネージャの裁量しだいです。
もう一つは、開発者の望むPCなりハードウェアを支給して、それで開発してもらうことです。これは多少の出費にはなりますが、エンジニアが嬉々として開発にいそしめるのなら安いものです。結局、モチベーションだとか、生産性だとか難しいことじゃなくって、もっと子供っぽい、オタクっぽいことなんですね。
なので、僕にMacを買ってください!
Macを何に使うかと言えば、会社の仕事じゃなくって、MacでSkypeでPythonで遊んでみたいだけなんですが・・・。
投稿者 : 大谷 弘喜 | 投稿日時 : 2006.09.21 16:59
プロジェクトの始まりは怖いかも
2006.09.19
今の会社のプロダクトは大体半年ごとにリリースされます。今のプロジェクトは8月ぐらいから始まっています。現在一月半ぐらいたっていますね。新しいプロダクトでも今までから継続したプロダクトでも、プロジェクトの始まりのころはとても不安を覚えます。それは最近に限った話じゃなくって、昔からそうです。不安を感じるのは僕だけなのか、多くの人がそうなのかはわかりません。
不安の理由はいくつかありますが、主なものは、「自分がそれを作れるか? 」ということです。最近はそれだけじゃなくって、「チームとして(全体として)ものができあがかるか?」ということもありますが、それは、また別の機会に・・・。
さて、「自分がそれを作れるか?」という不安は大体、一ヶ月から三ヶ月ぐらい続きます。そのぐらいたてば、全体が見えてくるので不安は解消されていきます。プロジェクトによっては細かく作業が分かれていて、期間がもう少し短くなって不安は分散されることもありますが、まあ、作業の最初はやっぱり不安になるものです。
不安になると、仕方なく勉強します。必要そうな知識はあらかじめ調べておきます。それから、なるべく不安にならなくてすむように、仕方なく普段からそれなりに勉強します。今まで経験から、自分のところに回ってくる仕事は変なものが多いので、とりあえず、どんな仕事がきてももう少し勉強すれば対応できるようにある程度は知っておきます。ある程度以上はその時に勉強すれば何とかなるかな。と言っても、10年前に比べると勉強量は圧倒的に少なくなっちゃってますが。
まあ、不安とは関係なく純粋に技術的なことが好きだと言うのもあるので一概には言えませんが・・・。たとえば、Enterpriseなんとかとかはあんまり好きではないので仕方なく勉強します。でも、Pythonとか、その周辺のことは技術オタクとしての興味でしょうね。明確な区切りはありませんが。
自分より勉強しない人をみると、実はうらやましかったりします。まあ、そういう人は、それなりのスキルしかもっていない人が多いですが。それでもやっぱりうらやましいです。まあ、その話もそのうち。
で、結局、プロジェクトの始まりはとっても不安なので、とっても必死です。でも、そんな風に人にみられるのは恥ずかしいので、(というか、変な期待がかかっているせいか)、すべてを見通しているような振る舞いをしていますが・・・。
投稿者 : 大谷 弘喜 | 投稿日時 : 2006.09.19 18:10
とにかく読む
2006.09.14
開発者が同じコードを眺めたときに、受ける印象はまちまちです。最近はJavaが流行っているようなので、Javaで書きます。とりえあず、単純なコードです。
for (int i=1; i<=10; i++) {
System.out.print(i);
}
プログラミングをはじめたばかりの人には、上のコードは全く違和感がないかもしれません。他の人のコードをよく読んでいる人にとっては、i=0とiが0から始まることに違和感を覚えます。多くのプログラマは少なくとも
for (int i=0; i<10; i++) {
System.out.print(i+1);
}
と書きます。どちらの書き方も間違いではなく、同じように動作します。コードを読むとき、一字一句正確に読むこともありますが、大きな流れをつかむときには、ある程度のプログラミングの風習を前提によんでしまいます。今回はprint文だけですが、通常のプログラミングでの処理だともっと複雑になり、バグがあっても見つけにくくなります。それ以上にコードが読みにくいと感じます。
でも、こうした感覚というか、お作法は本などを読んだ知識としてみにつけることもできますが、感覚自体はたくさんのコードを読まないと中々養われません。特に自分だけしかそのコードを見ないと、最初にi=1という癖がついてしまっている場合には、中々見抜けません。まあ、今回の例はちょっと強引過ぎですが・・・。
同じコードを見ても受ける感覚が人によって違うのは、スキルということもありますが、読んだコードの量によるのかな?と、会社の中を見ていて思います。読んだコードの量が多い人ほどスキルがあるのかもしれません。
まあ、それ以上にプログラムのソースを読むことは、小説を読むことのように楽しい作業なんですが。
「スキルをあげるためにコードを読んでいます」と適当な言い訳を作って、業務時間中に仕事とは関係のないコードを読んでいる今日この頃です。
投稿者 : 大谷 弘喜 | 投稿日時 : 2006.09.14 16:48
変わりゆくもの、かわらないこと
2006.09.12
エンジニアの仕事をしていると、時々「変化が激しいのでついていくのが大変でしょう」と言われることがあります。最近は聞きませんが、「ドッグイヤー」と言われていたこともあります。普通の業界だと1年間に起こることが4分の1の時間で起こるということらしいです。
10年ぐらいエンジニアとして見てきた感覚からすると、変化は大きいかもしれませんが、その基本的なことはそれほど変わったようには思えません。最近の流行のWeb2.0だとかAJAXは、表面的にはとてもインパクトがありますが、技術的に今まで全く違うもの、すごいことがおきているかといえば、そうではありません。AJAXでいえば、Webの世界にもイベントドリブンなプログラミングスタイルが持ち込まれただけで、そのプログラミングスタイルははるか以前からありました。イベントドリブンでプログラミングするときの手続き的なこと(テクニック的なこと、表面的なこと)は、新しいもの(本当に新しいかは別として)なので勉強しないといけません。でも、そうした新しい部分というのは、すぐに古くなっていきます。また、そうした部分は、調べればすぐにわかるところです。そうじゃなくって、もっと変わらないところをちゃんと理解できていれば、表面の変化に惑わされずに変化についていくことができます。
AJAXは今、華やかな世界ですが、それがあと5年続くとは思えません。変わらないものを理解しないまま、あと5年過ぎれば、結局は何も残らないかもしれません。といっても、テクニック的なことを全く知らないと何もできないので、結局は両者のバランスが大事です。
と言って 勉強が嫌いな僕がますます勉強しなくなるのでした。
投稿者 : 大谷 弘喜 | 投稿日時 : 2006.09.12 17:47
懐かしい顔
2006.09.07
このサイトのトップページをぼんやりと見ていると、「スペシャルコンテンツ」というところに見覚えのある名前が書いてあります。第1回-1 ネットマイルCTO長谷川氏 「この業界に飛び込んでCTOになるまで」ということで、長谷川たくさんのインタビューがのっていました。やはり、かつてロータスで働いていたタクさんでした。インタビュー記事の写真を見ただけだとタクさんだとはわかりませんでした。太ったんでしょうか?
僕の記憶だと、僕がロータスをやめる半年ぐらい前に日本に帰ってきたと思います。あまりよく覚えていいないんですが、懐かしいですね。
投稿者 : 大谷 弘喜 | 投稿日時 : 2006.09.07 15:59
蛇使い養成合宿?
2006.09.05
オープンソースのコミュニティではいろいろな催し物があります。僕はあまりコミュニティと深くかかわろうとしませんでしたが、不覚にもかかわってしまったものもあります。誰かの戦略に載せられた一人かもしれませんし、自分からのったのかもしれません。経緯はどうであれ、のっちゃったものは仕方ないので気の赴くままに乗り続けるのでしょう。
さて、そんなコミュニティの一つにPythonがあります。Pythonって?もともとは、MontyPythonが起源らしいですが、僕はそれよりもヘビのほうが好きです。話を戻すと、PerlやRubyのような開発言語で、今僕が一番好きな言語です。理由は覚えることが少ないのと、それを使って開発するのが楽しいからです。残念ながら仕事では少ししか使っていませんが、余暇に行うプログラミングはすべてPythonです。
さて、そんなPythonのコミュニティですが、今まではお泊り会(合宿)はZope(Pythonで書かれたWebアプリケーションフレームワーク+サーバ)に限定したものが夏(正確には秋)と冬の年2回ありました。冬の合宿は壮絶なもので、冬山に3日間籠もり斜面を細い棒切れで登っては降りると言う荒行を行い、精神を清めると言うものです。僕は寒いところは苦手なのでこの荒行には参加できません。なので夏の合宿だけです。夏の合宿は荒行ではなく、海や山の緑を堪能し、小鳥のさえずりを聞きながらハックしたり、おしゃべりしたりと言うものです。
その夏のお泊り会が今年も行われます。もう、夏も終わろうとしていますが・・・。今年は今までと違って、Zopeに限定したものではなく、Python全般になっています。詳しくはこれ。最近はSkypeを利用して、リモートからも参加できるようになっています。一度、何を間違ったのか、英語しかしゃべれない外国人がSkypeを使って参加して、日本人となにかをしていたと言ううわさも。僕は今年はTwistedというフレームワークを使って何かをやることになっています。
僕は合宿のカリキュラム自体にはそれほど興味はないのですが、 同じ目的をもって集まった人たちと十分な時間をかけてコミュニケーションが取れるのが楽しいと思っています。同じ目的を持った人たちと言っても、バリバリのハッカー君もいれば、なぜかプログラミング始めたばかりの人もいたり、職業もIT関連だけでなかったりと、いろいろ刺激的です。でも、こういう集まりは男が多いのは世の常なんでしょうか?
投稿者 : 大谷 弘喜 | 投稿日時 : 2006.09.05 17:58



