Re: ソフトウェア工学とスーパープログラマは両輪

ようやく本気を出してくれたようなんだけど、論理的な思考をすることに本気を出してほしい。想像力を働かせることに本気を出されても困る。

ようはあなたが望む体制はスーパープログラマーに選ばれないってことじゃないの?

文章の意味がわかりません。ワシの頭でもわかるように書いてください

これは...(省略)...

dankogaiが言いたいのはこうではないか。

  • 生産性は定数ではないから、常に生産性が高いかどうかわからないことのために体制なんか変えるかボケ
  • 生産性は何を生産するかで変わるから、以下同文
  • そんなスタッフつけたところで、スーパープログラマーは仕事が気に入らなきゃいなくなるよ

ということだろうね。
つまり、この最後のところが、僕のコメントなわけだ。すたっふーがどんなにいようが仕事が気に入らなきゃ選ばれない。逆に、どんなに劣悪な環境でも仕事が気に入ったらやるんじゃないの、dankogai的スーパープログラマは。dankogaiも当該エントリではそれがプログラマの習性だと述べている。

ソフトウェア工学とスーパープログラマは両輪 - novtan別館

『あなたが望む(ような)体制をスーパープログラマーは選ばない』ことと、彼らが仕事を気に入るかどうかは関係ない話なんじゃない? 体制を選ぶことと仕事を選ぶことをごっちゃにされてもね。

あと優秀な人にスタッフをつけてあげれば、気に入らない仕事をスタッフにまかせて、気に入る仕事に集中してもらうことができるよね? Dan氏も書いているように、彼ら(スーパープログラマー)は延々と自分が好きな仕事を見つけてはそれに没頭しちゃうんだから、気に入る仕事がない状況を心配する必要はあまりない。それより気に入らない仕事をしなきゃいけない状況を心配するべきで、そのためにサポートスタッフをつけてあげればいい。

ようは、『あなたが望む体制はスーパープログラマーに選ばれないってこと』は理由になってないってこと。

それは、スーパープログラマ以外の人も含めて、業界全体の生産性を高めようとするソフトウェア工学が間違っていると言ったからだよ。スーパープログラマで需要が満たされるのであれば、ソフトウェア工学はいらない、ということだからその前提はおかしい、と言っているわけだ。もし、そういう前提じゃないんであれば、そもそもこの話は成り立たないわけだから。

意味わかんねー。
単に生産性の高い人の能力を引き出すというだけの話が、なんで『スーパープログラマで需要が満たされる』とかになるわけ? だれかがスーパープログラマーだけで需要は満たす事が可能だと言ったの? また脳内で補完してるのかい? 想像力が豊かだね。

それはある意味正しくて、ある意味間違っている。能力差による違いが顕著になる物量と、能力によらず一定時間を消費する物量が存在する。そして、ソフトウェア開発において、前者の物量も、後者の物量も、どちらも存在する。プログラム書く一つをとっても、10000行を書くのに費やす時間がそれほど大きな差になるかどうか。効率の悪い開発者でもタイピングだけは早かったりする。

なあ、キミはコードを書いた事があるのか? 『10000行を書くのに費やす時間がそれほど大きな差になるかどうか』ってマジデスカ?! キミにとってはコードを描く作業が『能力によらず一定時間を消費する物量』なのか?!
あれか、Java の getter と setter を IDE でチマチマ生成する作業のことを言っているのか? それとも import 文が 10000 万行でもあるのか? もしそうだとしたら、Java は行数を水増ししてくれる便利な言語という地位をさらに確固たるものにしてくれるだろう。

もちろん、10000行を8000行で済ますことができる場合もあるし、設計しだいでは1000行になるかもしれない。こういう部分では確かに差が出るんだけど。

10000行が1000行になる意味が分かってますか? コードを書く作業が減るだけじゃないんだよ、仕様書やドキュメントを書くコストが下がるし、いちばん大事なのは保守性が高まってメンテナンスコストが大幅に下がることなんだよ? 今までの発言を見ていると、10000行が1000行になってもコーディング作業のコストが下がるぐらいにしか思ってないんじゃね?

そして、設計書作成やテストにおいて、その差の出なさ加減は顕著だ。でもって、標準化やテスト技法の進化によって、差が出る部分の度合いを埋める努力は日々行われている。

もう、ここで意見が決定的に違うよね。設計書作成やテストで能力の差がでないわけがない。『その差の出なさ加減は顕著だ』って、本気で言っているのか? なんで設計書作成やテストで能力差がでないのか、その根拠が知りたい。

ほら、プログラマーの話になっているじゃん。

は? なんで『プログラマーの話』に限定しちゃうわけ? 物量を削減するのはプログラマーしかできないとでも思ってるの? プログラマーの話にしたがってるのはそっちじゃん。

あと、ここで言っている物量は、成果物の物量ではなくて、作業の量の話だよね。大規模プロジェクトにおいて、成果の管理をどう行うかもソフトウェア工学の重要な視点だと思う。

『物量』って言葉を使ったのはそちらなんで、同じ言葉を使っただけ。別に作業量の話に限定した覚えはない。
なんかさ、話を勝手に限定しないでくれる? キミは想像力が豊かすぎるよ。

だから、それはたとえが悪いんだって。世界の頂点に立つ限界ぎりぎりの戦いだから「簡単に出ないものを無理に出す」わけじゃない。そういうニュアンスを無視して考えるならわざわざオリンピック選手なんて極端な話にする必要ない。体調管理とか、タスク管理とか、そんな程度のことも自分で出来ないからスタッフをつけるってわけじゃないでしょ。

たとえが悪い? チーム北島の話だけじゃなくて漫画家とアシスタントの話も例として出しているのに? ほかの人は普通に理解できていることを、キミの豊かな想像力が「スーパープログラマー」と「オリンピック」を結びつけてしまったために誤読を引き起こしているだけじゃないの?
それに『搾り出す』と「絞り出す」の違いがわかんないのは、たとえとは関係ないよね。キミの国語力の問題。
#違いが理解できました?

そうじゃないプロジェクトを減らすためにソフトウェア工学を否定する必要があるわけ?むしろ、そういうプロジェクト管理手法をきちっと適用してもらうことでプログラマーが楽に働ける環境になるんじゃないの?

なんかもう話がずれまくってるわ。『優秀な人の能力を引き出す』『属人性の排除は間違い』というだけのことが、なんでこんな話になるんだよ。

という話だから、需要における現実性とコストの面から言うと、折り合わないというのが僕の主張。だから、ソフトウェア工学は有用。出せる金と、求める信頼性において「安くていいもの」「高くていいもの」「安くてそこそこのもの」が提供できるのがよい。「高くてダメなもの」をどう排除していくか。これも一つのテーマだと思う。

で、そのソフトウェア工学様が属人性をなくしてくれたおかげで、安くていいものが提供できるようになったわけ? プロジェクトの失敗はなくなって、お客も開発者もみんな幸せになったわけ?
なってねーからみんな文句いってるわけじゃないの? 属人性を排除したらプロジェクトが成功するなら、みんな喜んで排除するよ。

30倍からだいぶ縮まりましたな。

そりゃそうだ、「月70万と140万」の場合の話なんだから。月70万と140万なら、4〜5倍がせいぜいじゃない? 金額を指定しなければ、できる人とできない人で30倍の開きぐらいあるでしょ。

30倍がどのくらい現実的なのかイマイチわからなかったんだよね。倍で4〜5倍なら、月210万くらいなら30倍のパフォーマンスなのかなあ。

自分の読解力がなかっただけだろが。どのくらい現実的かどうかなんて関係なく解釈できる文章を、キミは正しく解釈できなかっただけのこと。それを『30倍がどのくらい現実的なのかイマイチわからなかった』なんて、ごまかしてんじゃねーよ!

単純に値段が高いことが能力の差に現れないことが多いですね。SIerにおける人材というのは、

  • プログラムができる
  • 設計ができる
  • 全体設計のビジョンが作れる
  • いろいろ客に説明できる
  • 業務要件分析してシステム設計できる
  • X人のチームを監督できる
  • 特殊な技術領域に精通

等のさまざまなスキルによって値段がある程度決まってくる。そこに生産性という指標はなかなか入ってこないんだよね。だから、生産性という点で140万の人が70万の2倍の生産性がでるかというと、そういうわけでもない。

『生産性という指標はなかなか入ってこない』んじゃなくて、キミ(またはキミのプロジェクト)がそれを入れてないだけじゃ? あとスキルと生産性を切って話すのはなぜなの? たとえば『業務要件分析してシステム設計できる』スキルがあれば、その分野では明らかに他の人より生産性が高いといえるよね? まさか「業務要件分析してシステム設計できる人でも特殊な技術領域に精通しているとは限らない」とか言い出すんじゃないだろうな。

それは、生産性という言葉が当てはまらないからかな。

なんでやねん!?

生産性に差が出ることが、属人性を排除することが誤りである理由であるならば、それが間違っているといいたいから。

確認するけど『それが間違っている』というのは「生産性に差が出るということが間違っている」という理解でOK? (キミの文章はわかりにくいから、設計書を書くのは勘弁してくれな、開発者がみんな困る)

で、もしそうだとしたら、個人間に能力差があるにも関わらず「生産性に差が出るということが間違っている」という根拠は何?

仕事が高度になればなるほど、属人性は排除できないし、人材の替えはきかない。問題を解決できない人間を100人集めても、問題は解決できない。問題を解決できるのは、問題を解決できる能力を持った人間だけ。

従来のソフトウェア工学が決定的に間違っている点 - kなんとかの日記

これは、上で述べたスキルをもった人材、ということだと思うんだけど、この文章自体は大いに同感なわけです。ただ、ソフトウェア工学の要不要とは結びつかない。

『属人性は排除できないし、人材の替えはきかない』ということには同意してるということ? もうなんか主張がコロコロしてわかんねーよ。

じゃあこれでどう?

  • 従来のソフトウェア工学は、属人性を排除しようとしている点において、決定的に間違っている

これならキミでも同意できるんじゃない? 先の文章に同意しているのであれば。

繰り返しになるけど、ソフトウェア工学の属人性排除が個人の生産性の差を理由に否定されるのであれば、生産性に差がつく場所の話をしなければ意味がないでしょう。コーディングだけじゃなくて、テストもそうだと思う。そして、差がつかないところも沢山あるんだよ、というのが僕の主張。

『生産性に差がつく場所』は、どこでも。『差がつかないところ』は沢山もない。その根拠は、差がつかないようなところはたいがい自動化できてしまうから (最初から書いているけどね)。本来なら、差がつかないようなところが残っていること自体を問題にすべき。

つーか、『設計書作成やテストにおいて、その差の出なさ加減は顕著だ』なんて言ってる人間が存在すること自体が意味分からん。あまりにも斬新すぎる考え方なので、その根拠をほんと教えてほしい。