アカウント名:
パスワード:
効率良く「生産している」ような高いレベルの集中力を8時間続けられるのか?という疑問が。
出来る!
実際に医師などは48時間以上にわたって高度な知的作業を行っているし、ライン工だって4時間程度の連続作業は普通にこなしている。IT系のエンジニアにだけ、それが出来ないなど、無い!
春先に通う耳鼻科医の例。
判断や推論などの「高度な知的作業」はカルテや問診、検査データの確認時だけで、あとの大半は看護師への作業指示、医療機器の操作など、定形性の強い作業だった。ただし作業密度はかなり高く、繁忙期のラーメン屋並に見えた。
>あとの大半は看護師への作業指示、医療機器の操作など、定形性の強い作業だった。
プログラミングの場合でも、昔はビルドの待ち時間などの間、コーヒーをすすって一休みするくらいの「脳を休める時間」があった。今ではリアルタイムに解析してシンタックスエラーを吐いてくれるので、そういう「休憩時間」が無くなった。
また重要なのは知的云々よりも、連続して集中力を要するか否かだと思う。例えば、- 大きなスパゲッティプログラムの解析。或いは解読。- 入り組んだ町中での暴走車とカーチェイス。- 一歩間違えれば大出血を起こして患者の死にいたる難易度の高い手術。
みたいなものは、一瞬の油断も許されず、連続した緊張状態を強いられるだろう。こういう状況で何十時間どころか、ほんの2~3時間でも連続して作業を続けただけで、大事故にも繋がりかねない。そういった作業は連続48時間も続けることは可能とは思えないし、またそれを要求することもないだろう。
例えば私が難易度の高い手術を受けるとしたら、48時間連続勤務した医師に執刀してもらいたいなどとは絶対に思わない。
難易度が低かったらしてもらいたいと思いますか?48時間どころか、24時間連続勤務後だって、イヤですな、わたしゃ。
産科や救急医療や麻酔医も例にあげないと。リスクも作業時間も尋常じゃない。
>プログラミングの場合でも、>昔はビルドの待ち時間などの間、コーヒーをすすって一休みする>くらいの「脳を休める時間」があった。ああ、たしかに、それはそうですね。
>今ではリアルタイムに解析してシンタックスエラーを>吐いてくれるので、そういう「休憩時間」が無くなった。設計してから、コーディング。それがプロなら基本。コーディングなんて、作業全体の1割くらいの時間でいいはず。たいして考えずに、ちょこちょこ作っては動かすの連続なんて、プロの仕事じゃない。---
まっとうにコーディングするなら作業の4割以上はコーディングになるだろ。
真面目に設計していたら、コーディングが2割を超えることはありえません。ほとんどが設計時間になるはずです。
真面目に設計していないなら、コーディング時間が1割を超えることはありえません。ほとんどがデバッガー相手になるはずです(設計されていないものの間違いを探すのは「デバッグ」と呼んで良いものかどうか…という辺りが気になるので「デバッグ」とは断言しないでおく)。
なので、コーディング時間が4割をこえると言うことは、
のどちらかのはずです。2つ目ならば、そろそろもう少し頭を使った方が良い。
むむ、多少口が滑ったのだとしても4割という言葉が出てくるような作業環境が信じられない。そんなに次々にコーディングの機会が湧いてくるポジションなんて存在するのか…?
一体、年間どれだけのプログラムをこの人(この組織?)は生産しているんだ…。
今どきは、設計にそんな時間を割くことはないです。
であれば、そのコードの中には
過去に作ったものの微妙な焼き直しを繰り返しているだけ
な部分が結構、潜んでいると思われる。
標準的なフレームワークの中に、もう一段自分が良く使うフレームワークがあってその中身だけ設計しているのだけれど、どこまでが「自分が良く使うフレームワーク」なのか意識してコーディングしていないので、似たようなものを毎回生成しているはず。
コードの一部に自動生成出来る部分が無いか、探した方が良い。かなり高い確率で見つかるし、そこを自動化すればコーディング時間の割合は再び減り始めると思うよ。# ちなみに、「この辺りは最近、滅多にバグらない」という辺りを重点的に探すと良い。# 繰り返し作業で間違えなくなっている公算が高い。
>過去に作ったものの微妙な焼き直しを繰り返しているだけそんなこと、当たり前だろ!
>過去に作ったものの微妙な焼き直しを繰り返しているだけ
そんなこと、当たり前だろ!
当たり前じゃないよ。もし、当たり前だと思っているなら、それこそが、コーディングに40%も時間がかかる根本原因だ。
.
RPCのXDRとかはそういう目的のための言語だよね。同じRPCのためなら、一度XDRで書いておけばC以外の言語をメイン言語にする場合も、XDRパーサーだけ書きなおせば収まるようになっている。
C++のテンプレートライブラリも、型が違うだけでやってることが一緒なら何度も同じこと書かせるんじゃない、という要求を満たすための機能だ。
古くは C言語の CPP も同じことを何度も書き直したくないから、存在したわけだ。
結局のところ、これらは全部「過去に作ったものの微妙な焼き直しなんか書きたくない」という要求を満たすためのものだ。より優れたプログラマは「過去に作ったものの微妙な焼き直しを作る際に入り込むくだらないバグ」をどうやって除去するかにリソースを注ぎこむ。解決策はただ1つ。「同じ部分は、人間は書きなおさない。機械に書き直させる」。そのためのコードを書く。同じことを、同じように書き直すのではなく、ね。
先に上げた3つの例は、全てその解決策が世の中で一般的に使われるようになったものだ。同じことの微妙な焼き直しなら、その「同じ部分」を割り出して、そこを何度も書きなおさなくて済むようにするのが当たり前。そのために必要なのはなにか最新のテクノロジーなんかじゃない。どちらかというと perl とか awk とかでフィルターを書いて、makefile を自分で書く、古いやり方に近い。
そうやって改善しようとしないのは、自ら進んで「機械の代わりに雇われている」状態に陥っているって事だよ。
それぐらいなら執刀しないで結構! と言う権利は誰にでもあります。# その時に、それを言える状態かどうかはわかりませんが。
友人の脳外科医は8時間ぶっとおしで手術とかしてると言ってましたけどね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stableって古いって意味だっけ? -- Debian初級
むしろ (スコア:3, 興味深い)
効率良く「生産している」ような高いレベルの集中力を8時間続けられるのか?という疑問が。
Re: (スコア:1, すばらしい洞察)
出来る!
実際に医師などは48時間以上にわたって高度な知的作業を行っているし、ライン工だって4時間程度の連続作業は普通にこなしている。IT系のエンジニアにだけ、それが出来ないなど、無い!
Re:むしろ (スコア:2, 興味深い)
春先に通う耳鼻科医の例。
判断や推論などの「高度な知的作業」はカルテや問診、検査データの確認時だけで、あとの大半は看護師への作業指示、医療機器の操作など、定形性の強い作業だった。
ただし作業密度はかなり高く、繁忙期のラーメン屋並に見えた。
Re:むしろ (スコア:4, 興味深い)
>あとの大半は看護師への作業指示、医療機器の操作など、定形性の強い作業だった。
プログラミングの場合でも、昔はビルドの待ち時間などの間、コーヒーをすすって一休みする
くらいの「脳を休める時間」があった。今ではリアルタイムに解析してシンタックスエラーを
吐いてくれるので、そういう「休憩時間」が無くなった。
また重要なのは知的云々よりも、連続して集中力を要するか否かだと思う。例えば、
- 大きなスパゲッティプログラムの解析。或いは解読。
- 入り組んだ町中での暴走車とカーチェイス。
- 一歩間違えれば大出血を起こして患者の死にいたる難易度の高い手術。
みたいなものは、一瞬の油断も許されず、連続した緊張状態を強いられるだろう。こういう状況で
何十時間どころか、ほんの2~3時間でも連続して作業を続けただけで、大事故にも繋がりかねない。
そういった作業は連続48時間も続けることは可能とは思えないし、またそれを要求することもないだろう。
例えば私が難易度の高い手術を受けるとしたら、48時間連続勤務した医師に執刀してもらいたいなどとは
絶対に思わない。
Re:むしろ (スコア:1)
難易度が低かったらしてもらいたいと思いますか?
48時間どころか、24時間連続勤務後だって、イヤですな、わたしゃ。
Re: (スコア:0)
産科や救急医療や麻酔医も例にあげないと。
リスクも作業時間も尋常じゃない。
Re: (スコア:0)
>プログラミングの場合でも、
>昔はビルドの待ち時間などの間、コーヒーをすすって一休みする
>くらいの「脳を休める時間」があった。
ああ、たしかに、それはそうですね。
>今ではリアルタイムに解析してシンタックスエラーを
>吐いてくれるので、そういう「休憩時間」が無くなった。
設計してから、コーディング。それがプロなら基本。
コーディングなんて、作業全体の1割くらいの時間でいいはず。
たいして考えずに、ちょこちょこ作っては動かすの連続なんて、
プロの仕事じゃない。
---
Re: (スコア:0)
コーディングが1割ですむとしたらそれは実装じゃなく、設定変更とかそういうレベルのもんだろ
#検討した結果、既存のものが十分適用可能となるとコーディングなしってのもありえるけど
Re:むしろ (スコア:3, 興味深い)
真面目に設計していたら、コーディングが2割を超えることはありえません。ほとんどが設計時間になるはずです。
真面目に設計していないなら、コーディング時間が1割を超えることはありえません。ほとんどがデバッガー相手になるはずです(設計されていないものの間違いを探すのは「デバッグ」と呼んで良いものかどうか…という辺りが気になるので「デバッグ」とは断言しないでおく)。
なので、コーディング時間が4割をこえると言うことは、
のどちらかのはずです。2つ目ならば、そろそろもう少し頭を使った方が良い。
fjの教祖様
Re: (スコア:0)
むむ、多少口が滑ったのだとしても4割という言葉が出てくるような作業環境が信じられない。
そんなに次々にコーディングの機会が湧いてくるポジションなんて存在するのか…?
一体、年間どれだけのプログラムをこの人(この組織?)は生産しているんだ…。
Re: (スコア:0)
時間がかかるのは、要件獲得とその合意を得ること。
設計、コーディング周りでは、ユニットテストのコーディングでしょう。
ふつうはリリースコードの3倍から5倍くらいのテストコードを書きますよ。
Re: (スコア:0)
Re:むしろ (スコア:1)
であれば、そのコードの中には
な部分が結構、潜んでいると思われる。
標準的なフレームワークの中に、もう一段自分が良く使うフレームワークがあってその中身だけ設計しているのだけれど、どこまでが「自分が良く使うフレームワーク」なのか意識してコーディングしていないので、似たようなものを毎回生成しているはず。
コードの一部に自動生成出来る部分が無いか、探した方が良い。かなり高い確率で見つかるし、そこを自動化すればコーディング時間の割合は再び減り始めると思うよ。
# ちなみに、「この辺りは最近、滅多にバグらない」という辺りを重点的に探すと良い。
# 繰り返し作業で間違えなくなっている公算が高い。
fjの教祖様
Re: (スコア:0)
そんなこと、当たり前だろ!
現場はね、昔の仕様が仮におかしなものだったとしても、そのとおりに動くことを保証して、かつ、新しい要求にこたえなくてはいけないんだよ。まぬけが作った10年以上前のソースコードを現在のシステム上で動かすためにメンテしているんだよ。
新しい技術を使って、新しいコードを書いているような幸せモンには分からないだろうな。ヘタに書き直したら、動かなくなってしまうんだな。「技術は違えど同じようなコード」じゃなくて、「同じコードで新しい技術に対応する」のが現場だよ。
Re:むしろ (スコア:1)
当たり前じゃないよ。もし、当たり前だと思っているなら、それこそが、コーディングに40%も時間がかかる根本原因だ。
.
RPCのXDRとかはそういう目的のための言語だよね。同じRPCのためなら、一度XDRで書いておけばC以外の言語をメイン言語にする場合も、XDRパーサーだけ書きなおせば収まるようになっている。
C++のテンプレートライブラリも、型が違うだけでやってることが一緒なら何度も同じこと書かせるんじゃない、という要求を満たすための機能だ。
古くは C言語の CPP も同じことを何度も書き直したくないから、存在したわけだ。
.
結局のところ、これらは全部「過去に作ったものの微妙な焼き直しなんか書きたくない」という要求を満たすためのものだ。より優れたプログラマは「過去に作ったものの微妙な焼き直しを作る際に入り込むくだらないバグ」をどうやって除去するかにリソースを注ぎこむ。解決策はただ1つ。「同じ部分は、人間は書きなおさない。機械に書き直させる」。そのためのコードを書く。同じことを、同じように書き直すのではなく、ね。
先に上げた3つの例は、全てその解決策が世の中で一般的に使われるようになったものだ。
同じことの微妙な焼き直しなら、その「同じ部分」を割り出して、そこを何度も書きなおさなくて済むようにするのが当たり前。そのために必要なのはなにか最新のテクノロジーなんかじゃない。どちらかというと perl とか awk とかでフィルターを書いて、makefile を自分で書く、古いやり方に近い。
そうやって改善しようとしないのは、自ら進んで「機械の代わりに雇われている」状態に陥っているって事だよ。
fjの教祖様
Re: (スコア:0)
スタージョンの黙示は人間自身にも当てはまるですよ。
自分には、機械の代替を果たすことに満足して人生を過ごす権利を奪うことはできません。
Re:むしろ (スコア:1, すばらしい洞察)
そんな当たり前なことはどこでもやっているんだよ。新しいものを使ったり、コードをまとめたりして、保守を楽にするようにね。でも、サポートしている間は、昔のまぬけな仕様や設計を「遺産」として引き継がなければならないんだ。これは合理的でない仕様はもちろん、たまたま動いていたバグですら引き継がなければならない。だから、新しい要求にまとめたり、それが「遺産」と違うことを承認してもらったり、合意を得たりすることに注力するんだよ。設計なんかより、圧倒的にたくさんの時間を使うの。
そういうことをやりながら、「遺産」をメンテするんだよ。「遺産」を勝手にいじることなんてできない。修正プロセスの詳細とその合理性を示して、やっと承認がもらえるものなんだよ。「100万行以上ある遺産」をちょっとした修正で10万行にできたとしても、書き換えたものが「遺産」と同じ機能/仕様だってことは誰が保証するんだい。そんな修正は認められないんだよ。やるならば、テストで保証するしかないでしょ?
マヌケが作った10個のコピーされた「ほんのちょっと違う」コードを、1つにまとめるだけでも大騒ぎ。簡単にはできない。ちょっとした仕様の違いやバグがお客様のシステム/業務をとめてしまうそんな可能性がある修正は許されないの。影響範囲が明確でない修正はできないんだよ。設計は5分で終わっても、説得やテストは1週間では終わらない。
開発工数、保守工数が下がることよりも、お客様先でシステムを停めないことが最優先課題なんだよ。新しいモノを作ることばかりが開発じゃない。
コピーコードをまとめるだけでも、(過去を含む)開発メンバにマヌケが1人いただけで、将来の開発メンバ20人は苦労するんだな。開発のコストは、規模、複雑さと、レベルの低いメンバのレベルで決まる(^_^)
Re: (スコア:0)
Re: (スコア:0)
> 48時間連続勤務した医師に執刀してもらいたいなどとは
> 絶対に思わない。
したいと思わなくったってありうるよ
医者だってボランティアじゃないんだし、
そこにあなたの願望なんて
入り込む余地ないんじゃない?
Re: (スコア:0)
それぐらいなら執刀しないで結構! と言う権利は誰にでもあります。
# その時に、それを言える状態かどうかはわかりませんが。
友人の脳外科医は8時間ぶっとおしで手術とかしてると言ってましたけどね。
Re: (スコア:0)
長引けばもっとかかりますが、前日までに体調を万全に整えますよ。
Re: (スコア:0)
まぁ、見つかる≒命の危機って分野だけに…。
わたしは命の危機とは縁遠い状況で見つかって、心臓血管外科にかかるという珍しい例ですけど。
Re: (スコア:0)
> まぁ、見つかる≒命の危機って分野だけに…。
そういう場合は応急処置だけして一旦終わらせませんか。治療プランを考える必要がありますし。
私の母の場合はそうでしたが。