2012年4月9日月曜日

プログラマの仕事

勉強会のあとの懇親会で説教というか忠告というかみたいなことを言われた。
プログラマはデバッグの時間をマジメに考えれバカってのは本当にマトモでかつ残念なくらい意識されてないアドバイスで、少なくとも君が8時間労働なら8時間コードを書くのは君の健康にとって間違いなく悪い。「オマエが限界のパフォーマンスでコードを書いた場合、その2倍の時間がデバッグに必要である」っていう (たしか ken thompson の) 認識は悲しいくらい正しくて、多くともオマエがコードを書ける時間ってのは3時間程度しか確保できないんだという覚悟が必要だと思う。
これは一般論として大変納得の行く話だし(多くのプログラマは、作業の見積もりに対して楽観的であるというのはよく知られた話だ)、なんならデバッグに限らず、テストであるとかリリースワークであるとかドキュメンテーションであるとかリリース後の運用のためのサポートであるとか、その他諸々についても、プログラマも時には真面目に考えなければならない。小さいチームの場合には特にそう。浜地さんは寝てたので聞いていなかったと思うけれど、プロジェクトのゴールを常に意識して仕事をするというのは大事なことだと思っていて、それなりに忘れないようにもしている、という話をしたりもした。しかしドキュメントは大体誰かに任せっちゃってることが多い気がするな…運用は知らん(…)。
ボクがただ闇雲にコード書いてればいいと思ってる愚かなプログラマ、みたいに認識されていたのだとしたら、ちょっぴり心外だ。

ところでボクの仕事というのは、基本的には自明なコードを黙々とただひたすら書くみたいな物で、有体にいうとブラウザの開発やそのビルド環境を整備するような仕事に比べて、遥かに遥かにタンポポプッティングワークなわけです。
更にボクの仕事は所謂受託開発であり、まあそのなんだ、色々めんどくさいな、略。
そのような状況においては、デバッグにかかる時間なんかより、仕様変更や仕様、機能の追加により発生する作業の時間のほうが、数字としてはずっと大きい。ので、そういったものに対して敏感に、慎重にならないといけない。

そんなわけで現実の話として、単に運がよかっただけの結果論かもしれないけれど、デバッグに割いてきた時間に比べれば、仕様のブラッシュアップ、というよりは、お客さんとのやり取り(とそのための作業)に割いてきた時間のほうがずっと多い。そういったことも考えながら仕事をしないといけない。

例えば仕様に些細な穴があった場合、これを報告し、仕様の修正、追記を待ち、実装に取り掛かるみたいな一連の流れには、大変時間がかかる。あまり大きな声では言えないバッドノウハウとして、そういう時は内外関わらず誰にも報告せずに、最も正しそうな仕様を自分で判断して実装して、あとは何も知りませんよというような態度を取る、というのがある。
ボクの仕事っていうのは、これまでのところは、残念ながら多くが時にそういうことを必要とされるようなものだった、という話です。

というわけでまとめると、ご忠告は大変ありがたく受け止めたいと思いますが、今のところボクは多分いわれた事以上のことを考えてきていると思う…

4 件のコメント:

  1. 闇雲にコード書いてればいいと思ってる愚かなプログラマ、とは思ってないですけど、コードたくさん書いた結果として、書いたコードに伴う責任(ご指摘の通りデバッグ以外にもそりゃ色々ありますね、たしかに)のせいで8時間を大きく越える作業量が必要になってたとしたら、やはりそれは愚かなことかなーと思います。仕事が大好きで体力がたくさんある人を除く。まぁ単に仕事の中ではコード書くってのは楽しい作業だとしても、付随する責任のことを考えて仕事のコード書きはスロットリングしましょう、って話ですね。

    しかし、んなとこはちゃんと考えてる、てことで余計なお節介すいませんでした。ただ体こわしてるってことは、考えた上で実践できてなかったわけで、それはなんでなんでしょう? 僕が思いつくのは、「俺が働かんと会社がつぶれる」っていうものだけで、これはその人の価値観によっては valid な理由なんだと思います(僕の価値観とは一致しませんが)。ですが話してる感じではそういうこともなさそうに思ったんですが。

    返信削除
  2. まず一点明らかに話がかみ合ってないと感じてる部分があって、スロットリングについてです。
    うちは下請けで受託なんですが、受託開発だと納期は大体顧客(一般論なので顧客と書きます)が決めて、リリーススケジュールをそれに無理やり合わせるみたいになります。更に都合の悪いことに、大体少人数のチーム(少ない場合にはチーム一人)でプロジェクト進行するので、自分が書かないといけないコードの「最少量」の調整は不可能です。それに付随する、ないししない作業の「最小量」も同様です。そういう状態でできることというのは、無駄なコードを書かない、無駄な仕事をしないということで(あとは仕様やら何やらの変更のようなインシデントに対応できるようにするとか、まあ色々あるんですけど)、そのために常にゴールを意識して仕事する必要がある、というのがボクが書いた話です。
    それをやっても 8 時間を大きく越えるような作業量が必要になったら…まあなるんですけど…それは…ボクのせいじゃあないといいたいです。
    責任の話はひとまず置いておいて、じゃあそれをやるのか、やらないのかという話になるわけですが、それは大体次の記事に書いたとおりです。ボクはやりました。会社が潰れたかどうかは、ボクには分かりませんけど…仮にボクが働かないと会社が潰れるという状況が一年前にあったら、ちょっと無理してでも働いていたと思います。今はボクも会社も状況が変わったので、ちょっと分かりません。
    長くなりましたが、そんなわけで、多分浜地さんのいうスロットリングと、ボクの考えるそれは、ずれちゃってるような気がします。浜地さんのいう、本当に自分が無理なくできる範囲に仕事量を抑えるのは、残念ながら今のボクの立場では無理らしいです。4 月 5 日の記事のような話です。ボクの仕事が下手なだけなのかもしれませんが。

    もう一点。

    >ただ体こわしてるってことは、考えた上で実践できてなかったわけで、それはなんでなんでしょう?

    これが「体壊したのは過労のため」ということを仰っているのだとすると、その仮定はボクの場合成り立っていないかもしれなくて…

    まず先に事実として、上で何やら長々と何か書いたわけですが、一時的に忙しい時期に休出したり残業したりしていた時期があったにせよ、平均するとボクはそんなに働いているわけではないらしいです。会社の人が去年言ってました。それが嘘だったら知りませんけど…ボク自身は結構働いた気がしているのでちょっと釈然としないんですが。

    じゃあ何で体壊してるのって話になるわけですが、ボクが患っているのは頸肩腕症候群といって、それについて書かれた本「頸肩腕障害などの上肢障害認定マニュアル」によると、羅漢率と労働量(キーパンチャーのタイプ量)の相関はない(!)らしいです。更に原因は不明ときています。アイエエー

    ボクの素人判断だと、一昨年の年末に Ctrl 使いすぎで小指を痛めたときに、ちゃんと纏まった時間休まずに働き続けたために、痛み→緊張→痛みみたいなのが少しずつ形成されていったんじゃないかなあと思ってるんですが…過労もあるとは思うんですけど、何かあんまり働いてないらしいので…

    うーん、どうでもいい話ですね。

    えーと、まとめると、浜地さんのいうようなスロットリングはできてませんでした、が、できる範囲ではやろうと努めていました。どうしても仕事量減らせないときには、結局働いてました。理由みたいなのは次の記事に書きました。まあ色々です。過労だったかもしれないんですが、数字としては平均するとそういうことは無かったらしいです。じゃあなんで体壊したかというと、今のところ残念なことに不明です。

    まあ何かちょっとボク人間としてバグってるぽいので https://twitter.com/#!/lyrical_logical/status/158894373562626048 なんかおかしいんでしょうね。

    ウーン疲れた…

    返信削除
  3. スロットリングについては、僕は大幅な超過労働が必要そうな納期は無視することをスロットリングと呼んでます。当たり前ですけど、客と契約したのは会社であって雇用されてる側ではないので…

    過労て割と相対的なもんだと思っていて、8時間過ぎてて、労働量が本人にとってしんどければなんにせよ過労でいい気がします。仮に体調が労働量と全く関係ないとしても(僕の素人考えでも関係あるとしか思えないですけど)、 s/ただ体こわしてるってことは/仕事量多いと言ってるってことは/ あたりで置換すればそのまま成り立つ質問かなーと思います。ただ質問の答えは次のエントリでなるほどという感じですが。

    まぁ率直に言って心配なんでご自愛くださいというだけなんですけど、本当に余計なお節介感しかないですね。すいません…

    返信削除
  4. >スロットリングについては、僕は大幅な超過労働が必要そうな納期は無視することをスロットリングと呼んでます。当たり前ですけど、客と契約したのは会社であって雇用されてる側ではないので…

    ボクはそこで、そういう客と契約する会社と契約したのは自分だと考えてるところはあるかもしれません。なんか結局、いわれてる通りに真面目なのかも。しかし真面目な人間が契約内容どおりの時間に出勤しないのはどうなんでしょうね…

    まあはいちゃんと休みます…というか浜地さんもここ一年ぐらい腕が痛い状態続いてないですか、そちらこそご自愛ください。ゲームは一日一時間とか。

    返信削除