名将軍の話を聞いてみたい

もう静的OOPL と関係ない話になってしまいますし、単なる感想文になってしまいますしで、書こうか書くまいか迷ったのですが、えぇい、書いてしまえーっ、です。

静的オブジェクト指向は設計者が苦労を背負込むシステム さんを読んで、「なるほどー」と思うと同時に「そうかなー」とも思ってしまいました。本文じゃなくコメント欄よりの引用で申し訳ないのですが、

また、「素人集団を率いた時点で敗北は決まっている」と言うのは真ではありません。
「プログラミング」ができる、つまるところ中級者以上だけを率いて行われる大規模な業務システムの案件など皆無です。
そして、それをどうにかこうにか勝たせるのがアーキテクトに求められる役割です。
からくりは単純で、初級者にはプログラミングをさせない。コーディングとプログラミングを分断してこれにあたっているわけです。


について、やっぱり「素人集団を率いた時点で敗北は決まっている」んじゃないのかなぁと思ってしまうのです。


* * *


以下、こういう人(初級者・素人)を「コーダー」と呼ぶことにします。

で、疑問に思うのはコーダーはいったい何をするのかな、ということです。自然言語で書かれたロジックを 1対1 でプログラミング言語に翻訳するであれば、そんな人はいりません。

何故かというと、これまた凪瀬さんちのエントリ、内部仕様書はロジックを書くものではない *1から、ちょこっと引用させていただきます。

まともなプログラマならロジックを直接その言語で考えられます。むしろ、プログラム言語のほうがロジックの記述に向いているのだから、プログラム言語で思考する方が楽だし、間違いがない。

1対1 で翻訳できるように、自然言語で指示書を書くなら、自分で書いちゃった方が早いし正確ですからね。でも、

かといってプログラマの平均的ロジック表現力は総じて低い。自然言語で考えてから翻訳するレベルでも書けるなら駆り出さないといけないぐらいには人材不足だったりもします。

というのもわかる話で、ならばコーダーを「自然言語で考えてから翻訳するレベル」と言うことにします。

で、本当にこのコーダー、プロジェクトにおいて役に立たせることができるのでしょうか?少量のコーダーならどうとでも使えると思うのですが、コーダーのボリュームがでかいチームだと、足を引っ張りこそすれ、猫の手にはならないんじゃないかしら、と思ってしまうわけです。

自然言語で考えてから翻訳する」レベルの方にロジックを作るのをお任せするのは非常に心許ないです。私としては生きた心地がしません。現に、こういう方に任せた結果、使えない、手直ししても使えないものを作って来ちゃって、結局全部書き直した、という話は良く聞きます。でもその逆はあんまり聞かないきがするのです。(私が知らないだけかもしれません)

実は初級者なんて、1年も頑張れば中級者になるのです。長いプログラマ人生、集団のなかで1年目の新人の居る割合なんてほんのわずか。(ロジックを直接その言語で考えられる)まともなプログラマの方が、そうでないまともでないプログラマに量で勝てないなんて、ちょっとおかしいんじゃない、と思います。(現実には、そのおかしいがまかり通っていて、ホント事実は小説より奇なりなんですけれど (^^; )

実際「大規模」じゃないところ、――規模が小さいので教育と人事に真っ当に手間をさいてもなんとかなる所ならば、「中級者以上の集団」を作るのは決して非現実なことではありません。であれば、下手に雑魚(失礼)をいっぱい釣るのでなく、良い魚を養殖することこそが、結局はプロジェクトを上手くいかせる冴えたやり方じゃないかしら?、と私は思っています。

それが大規模開発にも適用できるの?ですが、せめて「プログラミング言語でロジックを考えられるレベル」の人材だけを集めるのって(大変難しいのは解りますが)本当に無理なんでしょうか?

それが出来たら苦労しないよ、、というのは本当に、本当にごもっともなのですが。単に部外者のお気楽発言なのは解っているのですが、でも、だとすると、本当に大規模開発って残酷すぎるっ成り立っているのかな?とも思ってしまうわけでして。


* * *


もっとも、この話は、私は将軍としてダメダメなので、優秀な兵に支えられないと勝てないというだけの話です。ダメダメだから私には素人の軍団を率いて勝てるイメージが湧きません。で、「そんなの多分無理じゃん」と思うのですが、その一方で、たとえば、あたしの師匠なら、出来ちゃう気もするのよねー。

実際のところ、どうなんでしょ?

*1:凪瀬さんちのエントリはどれも秀逸なのですが、その中でもこのエントリは特にあたしのお気に入り。