まとまらない

多分まとまらないと思うが、メモとして
はてぶで見つけたよいアジャイルと悪いおじゃる丸はざっと訳文を読んだだけだが、最初アジャイルプログラミングについて語っているのかと思いきや、コードの話の枠を超えた話になっている。ここに優秀な人間がどのようなモチベーションで仕事をするかということに関するgoogle社内の話がある。ちなみに、ここで「優秀な」というのは、他社と比較して仕事のやり方やパフォーマンスになどに自信があり、食うに困らないということなのだと仮にしておこう。そうじゃなければ、つまり毎月の給与をもらうことに汲々としているのであれば、四半期に1回の仕事の発表会で評価されることだけをモチベーションにすることは難しいと思うから。
やっぱり、内在する自己実現欲求、特に自分の能力を生かして、親密なあるいは不特定多数の同類を幸せにするような社会性のある自己実現を希望するモチベーションに勝てる仕事のさせ方というものはなかなか存在しないだろう。口の悪い言い方をすれば、自分自身が自己催眠にかかっているとでもいおうか。場合によっては自分の生命をなげうってでも仕事をする。そんな事も不可能ではない。
しかし、そのためには環境的な要因が重要である。「単純に社員を働かせてもうけよう」といった、安っぽい経営者のビジョンでは、組織としてそのようなモチベーションを持たせることは不可能だろう。やっぱり「世界政府があるとしたらやるべき仕事」ぐらいのビジョンがなければダメなんだろう。少し寒気がしてきたけど。
話が変わるが、googleにおける働き方を見るにつれ、こだわりのある職人軍団なのかもという印象を持った。全員優秀なんだからさぞかし楽しいだろうなあと。そして、その製造工程を無意識のうちに産業用ロボットが活躍する製造業における生産管理と頭の中で比較してみた。ソフトウェア開発はどれほど効率化しても、一つとして同一のソフトウェアを作り上げることはありえない。コンピュータソフトウェアはコピー可能だから、同一のソフトを複数作ることは無駄だ。まず、コピーして使う。あらゆるソフトは何らかの意味でカスタマイズするので、何らかの依存性が存在する。これは、勤務先の学部でよく壊れることで知られるT社製のパソコンのように、壊れたから代替機を使うという工業製造品の様なことはあり得ない。なるべく同じ製品が同じ品質でできることを目指している製造業的な生産管理とは別の発送が必要だ。
#こんな簡単なことに気づいて喜んでいる私もやばいかも。
その上で、先日学生と話していたのは、建設業に於ける設計と、ソフトに於けるシステム設計の違いであることを思い出した。物理的な存在であり、なおかつプレハブ住宅の様な場合を除いて、全く同一の設計というのはあり得ない建築設計とどう違うのか。
バグがあるという状態と、雨漏りがする、あるいは扉の立て付けが悪い状態というのは比較的近いかもしれない。だましだまし使えないこともない。
しかし、例えば設計環境が変わったら何がおきるか。論理記号から形成されるソフトウェアの方が脆弱な気もするが、よくわからん。
一つ(自分が)わかりそうなのは、プログラムは言語という文法に基づく構成物だ。建築物の設計であれば、身体性を持った人間が利用するという前提であれば、ある種の設計上の制約は自ずと明らかだ。しかし、ソースコードの自明な制約というのはあまり意識しない。もちろん様々な言語で、様々な工夫による省力化を目指しているが、それでも設計者の意図は相当自由だ。デザインパターンなどが、優れた設計の方法論として取り上げられても、それほど普及しているわけではない。まだ、オブジェクト指向の考え方はシステムによって解決すべき問題に対して、粒度が細かすぎるのだろう。
文法ということで考えるとすれば、自然言語においても、この書き方が正解!というものはなく、標準化の努力は一部のマニュアル作成の分野でテクニカルライティングと呼ばれている技術において行われていることが確認できる。それ以外に文章で思いつくのは、作家によるオリジナリティのある小説だ。しかし、プログラミングにおいても、同じような独創性が評価されているかといえば、よくわからないし、抽象的な構成に関する書きぶりを規定する方法論さえ存在しないように思える。。これは、同一の生産物を大量生産する、工業化時代の工場管理とは別の方法論である。コードを書くのはアートだという主張があるが、まさにそ通りなのかもしれません。
ちなみにテクニカルライティングについては下記のサイトがおもしろい。
http://meta.tutkie.tut.ac.jp/~ichikawa/misc/tech-writing.html
やっぱりまとまらないけど、もう頭も回らないし、いったんアップしよう。