いつから起きてるんだろう… なんか軽く1日半前からずっと活動している気がします。 その代わり、週のうちに「やらなきゃならないことプラスα」を月曜日と火曜日で終わらせた感があります。 そのうち、泣きつく学生助けたりしているのもかなりパーセンテージ高いし、実際には「やらなきゃならないこと」を忘れてたりするだけなんですけど。 学生は…SVNとか印刷してコード見比べたりとか、私の知ってるプログラミングのあらゆるテクニックを手取り足取り教えているのに、順序だって設計してない自爆コード書いて自爆している。 私は女子学生だからといって容赦しないたちなんだけど、本人もコンパイル通らないたびに「チッ」とか「クソッ(merde)」とか言ってるので、まあハートはギャルソンでしょう。安心して鍛えられます。 とかいってたらまた呼ばれた。 いちおう呼ばれるたびに時間みてるんだけど、だんだん間隔が短くなってくる。 「いいかげん終わらせて帰りましょう、疲れた頭でコード書くのはよくない」 といっているのにしつこく何か変更を加えては自爆している。 「さっきまで動いてたコード」が動かないらしい。通信関係。 そんなときは… ・まず自分が何をやったか説明する ・SVNのDiffをつかって比べてみる ・SVNの古いコードで動作確認してみる ・再起動、もちろんPCごと。 ・OSのファイヤーウォールを疑ってみる ・netstat -a でポートとプロセスを監視してみる ・エラーコードを洗ってみる ・ソースコードを印刷して動くものと比較してみる ・IF文の括弧が間抜けなことになってないか調べる ・変数名がタコなせいで代入失敗してないか調べる ・printfやブレークポイントをたくさん使って状態を調べまくる ・受信側のプログラムを疑ってみる ・エミュレータをつくって再現性を試してみる ・かなり初期の超シンプルサンプルコードで書き直してみる ・コンピュータを変えて試してみる ・他人に渡して検証してもらう ・コンピュータを閉じて風呂に入って寝る …とりあえず最後の3つ以外は全部やった。 なのにまだねちねち続けてる。 明日が実質の締め切りなので本人あせってるんだけど。 そんなところに嫁から電話かかってくる。 さっき電話したらもう出なかったので寝たと思ってたんだけど。 そもそもこの2日晩、家に帰ってないし。 (略) いいかげんキレる。 おめ、聞きすぎなんだよ、聞く前に考えろ。 お前俺に「先に帰っていいよ有難う」なんて言ってないじゃん。 親切心に頼って、自分のトライをまとめる前に聞くのやめろ。 そもそも人が何か教えてからどっかいくのやめろ。 おめーのその仲間と俺の時間や俺の家族とどっちがプライオリティ上なのよ? てゆか、さっき俺「もういいかげん休め」って言ったよね? てゆか、再起動しろっていったのにしてないじゃん。 そもそも、そこに動いてる古いコードがあるのに、なんで今のクソコードに固執すんの?ゼロからやれっつってるわけじゃないんだから、簡単じゃん。そもそも紙に印刷して1行1行精読して理解したら、もとの1ページ分のサンプルコードハックして、1ページ分ぐらい付け足して都合2ページぐらいになったコードなんて『苦労して書いた』うちに入らんじゃん。むしろ関数化してデバックしやすくするチャンスじゃん。 だいたい、これが動いてるのに、自分のコードが動かない、なんて質問にもなってないよ!こっちはサンプルからSDKから全部ソースコードをサンプルつき、チュートリアルつき、機材つきで教えてるのに。 この辺で、学生半泣きになる。 「だって私はまだ経験ないから、聞いたほうが速いし…」とかのたまう。 あほか。おまえさん何歳よ? 俺なんて、ぶっちゃけC++はじめたの27歳だよ! たしかにほかの経験もあるかもしれないけど、脳みその若さが違うじゃない。 さらに言うと、自分がきみぐらいの修士の学生のとき、研究室には誰も!プログラミングを教えてくれる人なんていなかったよ!先生も!インターネット?そんなもん自由に使える時代かっつうの!しかもプログラミングのホームページったって今みたいに充実してないし。英語のドキュメント見ながらポツポツやるしかないよ!まあでも、結局何かいいリソースがあったとしたって、ゼロから自分で書く以上の経験はないけどね! てゆか、おめ、ストレス貯めすぎ。 このディスカッション自体が無意味。 問題、問題、って言っているけどそれ問題じゃないし。 問題ってのは人間性とか働かないやつがいるとかそういうやつ。 技術にはね、不可能なんてないの!ナポレオンと同じ! 確かに時間はクオリティを左右するけど、問題の整理とプライオリティの決定ができなきゃ時間なんていくらあっても無意味。 そう、君、私が「嫌いな学生カテゴリ・ワースト3」って知らないよね? 3・考えないで聞く学生 2・同じことを何回も聞く学生 1・ヒントを教えた後に続けないで家に帰る学生 そもそも、君はポンポン気軽に聞いてくれるけど、私が昨日からなんでここに泊り込んでまで作業してるか知らないよね?判ろうともしてない。 いついつ、何時に何します、それまでにできなきゃ、ほかのソリューションを探しましょう…そういった管理をどうしてしようとしないの? たしかに、それは大変面倒なことなんだけど、それを守ろうとする事が大事なんじゃないの?少なくとも誰かと一緒に仕事したり、誰かに助けを求めるときには、そういった時間管理をリスペクトすることが、相手をリスペクトすることになるんじゃないの? でなければ、君の聞いている相手は、君よりも立場が低い、プライオリティの低い仕事をしているってことになるんだよ。 私とか、私の家族とか。 駄目、いま私に謝っても無駄。 (自分の知らないところで誰がどんな悲しい思いをしているか) ちゃんと自分で考えて、次に会ったときにでも本人に言ってください。 以上、フランス語90%以上で言ってやった。 言語の壁で多少の勘違いはあるかもしれないが、まあ間違ったことは言ってなかろ。 …とここまでタイトルなしで書いて、 (というのも書いてるそばから何度も中断してしまうのでタイトルの書きようがなかった) 「女子学生に本気で説教する客員研究員」 なんてタイトルにしてみたんだけど、こんな仕事をボランティアでやるのって、割に合わないよな。 まあ日本だと、女子学生に本気で説教するとかなり早い段階で泣かれてしまうか、ドン引きして以後の信頼性を失ってしまう可能性があるんだけど、今回のケースはそうはならなかったな。 雨の中濡れて帰るつもりだったけど、車で送ってもらえたし。 ま、頑張れよ。本当。 追記: ちなみに日本人留学生のかいせい君はこのやり取りの一部始終を「うあうあ」言いながら聞いていた。 途中まで「何言ってんだかぜんぜん判らん」という感じだったんだけど、途中からなんだかソウルで聞く術を身につけてきたような気がする。「うあうあ」が明確な同意になったり、慰めになったりするように聞こえてきた。 まあ、実のところ、彼も偉そうなことはいえないと思う。 あまり歳も変わらないし。 経験や程度の差こそあれ、コンピュータプログラミングにおける問題、特に設計やデバッグにかかわる、効率がよくそれでいてエレガンスな特効薬的な解決策なんて、ない。 あえていうなら「(メタに)動的で、それでいて整理された人間の脳みそ」が必須。 「5分に一回聞く」なんてのはそれこそ言語道断だけど、熟考しすぎて、結果、全体のモデルが整理されなくなり、「冷えて固まって食えなくなったスパゲティ」になる、なんてことも普通に起きる。 何か目的が明確だったり、他人に依頼されて作るプログラムではそういうことは滅多に起きないけど、何か経験しながら実装しなきゃならないときは本当によく起きる。 まあそういう意味では研究者のプログラミングってのは、いつもそうだろうな。 「破壊と再構築の繰り返し」が時間の無駄になるか、解決策になるかどうかは、(メタに)動的な思考と整理ができるかどうかってところにかかってる。 まあそんな哲学じみたことを書く暇があったら、「Vistaでオタク度満点な3Dデスクトップマスコットをシェーダーパワー全開でコミケに向けて書いてる」ほうがよっぽど幸せなプログラミングライフだと思う。いやほんとう。 昨日今日なんて、本気で「Javaで3Dとハードウェア叩いてゴリゴリ書けないか」とか検討しちゃったし。 ほとんど「WindowsとLinuxと携帯電話をプラットフォームにしてVR作りたい」と言ってるようなもの。まあほんの数年後には現実になるかもしれないけど。