やるじゃねぇか、プログラマー
2007 年 10 月 18 日

僕が使い始めたプログラマーから2回目の請求がメールで来た。

おそるおそるファイルを開いた。

5600ペソ。

やった。

俺の意図が伝わった。

4つのプログラムを依頼し、たくさん指摘をして、10日くらいでやっと4つできた。

自分ならまあ3日くらいかな、と思っていたので、時間200ペソx10x3=6000ペソくらいが妥当だろう、と思っていた。

でも、何度も書き直しさせたので、ひょっとしたらかなりの金額を請求してくるのではないか、とずっと心配していた。

1週間を超えたところで、

「ええと、4つで何日くらいかかるかな?

急いでいないけど、請求がちょっと心配で。。

2日くらいだと最高。(2 days would be the best..)」

というメールを送った。

婉曲のwouldなんて使っちゃって、トーンを抑えまくり。

相手の返事は、

「心配しないで。調べている時間とか、直している時間はカウントしないから。」

とは返事が来たものの、具体的な数字は来なかった。

僕はずっと、考えていた。

もし、1万ペソとかだったら、もう高すぎて続けられないので、それは払うことにして最後にしようと決めていた。
だって、自分で作れば3日でできるもの。(ただ忙しすぎてその3日が確保できないのだが。。)

しかし、もし相手が本当に頭のいいやつなら、続けることのメリットを選んで、適切な金額を出してくる可能性もあるかもしれない。
こうやってプログラムをやっているだけで、勉強になるし、自宅で好きな時間に仕事ができるし、第一、無職の身分で自分の技術をこれほど見てもらえる機会などそうそう見つけることなどできない。

逆にもし、彼が典型的なP(フィリピン人の蔑称)なら、ここぞとばかりに吹っかけてくるだろう。

さあ、どう出るか。

と思った結果が、僕の想定より少し安い5600ペソだった!

安かったので嬉しかったのではなく、こういう骨のあるフィリピン人もいるんだな、大切にするべ。と思った。

彼はメールの文面から察するに、僕の依頼で仕事をするのが非常にやりがいがあると感じているような気がする。

僕が添削とかコメントを出すたびに、もの真剣にそれを理解する。

面白いのは、絶対に参考コードを丸写しせずに、全部形を変えて盛り込むのだ。

そして必ず、「これからもフィードバックを必ずくれ」、という。(他人のコードを読むのって、すげえ大変なんだけど。。)
新聞募集で、たまたま引っかかった彼ですが、すごく大切な付き合いになる確率が、今日で80%くらいになった感じ。
これですよね、フィリピンの醍醐味は。

コメント (5)

良いプログラマーで良かったですね。どんな仕事を依頼したのか一度拝見したいです。

ナベ坊 {495} 2007 年 10 月 19 日 @ 5:57 AM

それが、、、、昨日はほぼ徹夜して、まる1日かけて彼のプログラムを直しました。
500行のコードが280行になりました。
枝葉末節の書き方はこの際、置いておいても、受験問題の回答なら落第、という感じでした。
今日は寝不足です。

Shusei {494} 2007 年 10 月 19 日 @ 10:17 AM

只今、ロザリオ・カビテから返りました。
>>500行のコードが280行になりました。

何ですか、それ?便利な関数が有るのに、それを使わず自分で作った?インデックス修飾みたいなテックニックを使わず、ひたすらループで出来る事を展開して書いてる?アルゴリズム不良でスパゲッティプログラム?どちらでしょうかねぇ?

>>昨日はほぼ徹夜して・・・。
ご苦労さまです。私ならとっくにぶち切れ状態で、遊びには金払えないゾォ と、脅しメールでしょう。 (^。^)/

ナベ坊 {493} 2007 年 10 月 19 日 @ 5:31 PM

AutoLISPというのは、LISTと呼ばれるVBAでいう配列変数を扱うのが非常に得意です。
VBと違い、変数の宣言も型も数も何も決めなくてよくて、突然使い始めればいい。
例えば
List1=( なべちゃん 赤 まぐろ プログラマー 55)
List2=(しゅう 青 いくら CAD 39)
のようにして、いくつもの変数を、ごそっと持ち歩けます。
さらに
ListA=(List1 List2)
のように、リストのリストを作ったりも自由。

この利点を使うと、例えば100個の点の座標を1つの変数に入れて、一気に計算をかけてしまえば、1行で100個の点の計算が終わります。

これに精通せずに別の方針で書くと、条件分岐は多くなるし、コード自体が長くなり、何をやっているのか読んでもさっぱりわからなくなります。
それで、280行ですむものが500行もかかったようです。

もうひとつ、流儀として気に入らないのが、3つのサブルーチンがあるときに
(Main
(Sub1)
(Sub2)
(Sub3)
)
と書いてほしいのですが、彼の場合

(Main
(Sub1)
)

(Sub1
(Sub2)
)

(Sub2
(Sub3)
)

となっていて、ジャンプした先で、さらにジャンプし、またジャンプし、全部目を通さないと、流れが全くわからない、という書き方をするのです。
1回ジャンプしたらメインに戻ってきて、そこからジャンプしなおして、と書かないと、自分もわからなくなってしまう。
このへん、プログラムの世界ではどうなんでしょうか。

AutoLISPを書く人は非常に少ないので、彼を育てるつもりでやってます。

今日も数個のプログラムを発注したのですが、メインの中枢は僕が書くので、そこにいたるまでの、 ダイアログボックスの作成 レジストリ読み込み レジストリ書き込み ダイアログから変数の取り出し だけを書いてくれ、という依頼をしました。料理で言えば、下ごしらえだけさせて、肉だけは俺が焼く、というようなちょっとプライドが傷つくような依頼ですが、そっちの方が効率的だと思いました。

だって、他人の書いたコードを直すのって、自分で新規に書くより時間がかかるんですもの!

Shusei {492} 2007 年 10 月 20 日 @ 12:05 AM

>>他人の書いたコードを直すのって、自分で新規に書くより時間がかかるんですもの!

その通りです。考え方は10人十色、プログラムも10人十色です。そこでフローチャートみたいなものが必要になります。でも単機能のプログラムでは、フローチャート書いてる時間が有れば、コーディングした方が早い、と直ぐにプログラミングに移る。そうすると、途中で細かな点で、どうしようか迷い始めエイヤーのその場しのぎの対策をします。出来上がりは作った本人も説明が難しいスパゲティープログラムの出来上がり。
これがまずい!イタリアンを注文したんだぞぉ !フィリピン風スパゲティー、何これ?(笑)
作る前に、フローを説明させてやって下さい。それで相手の考えの欠点が見えますよ。

ナベ坊 {491} 2007 年 10 月 20 日 @ 9:01 AM
 

  • RSS | コメントRSS